var WWF = {
	page: 1,
	slides: null,
	slideWidth: null,

	init: function() {
		this.forms();
		this.popups();
		this.tabs();
		this.text();
		this.addons();
		this.contest();
	},

	popups: function() {
		$('a[rel=fancybox]').fancybox({
			autoDimensions: false,
			overlayColor: '#402208',
			overlayOpacity: 0.9,
			showNavArrows: false,
			padding: 15,
			margin: 0,
			centerOnScroll: true,
			height: 500,
			width: 750
		});

		$('a[rel=blank]').attr('target', '_blank');
	},

	tabs: function() {
		var $tabs = $('.tabbed');

		if ($tabs.length > 0) {
			var $content = $tabs.find('.content');

			$tabs.find('.tabs a').click(function() {
				if ($(this).parent().hasClass('disabled')) {
					return false;
				}

				// Tabs.
				$(this).parent().parent().find('li.current').removeClass('current');
				$(this).parent().addClass('current');

				// Content.
				if ($tabs.hasClass('years')) {
					$content.find('div.current').removeClass('current').hide();
					$content.find('div' + $(this).attr('href')).addClass('current').hide().fadeIn();
				}
				else {
					$content.find('div.current').removeClass('current');
					$content.find('div' + $(this).attr('href')).addClass('current');

					if ($tabs.hasClass('r')) {
						$tabs.find('.n').text($(this).text());
					}
				}

				return false;
			});
		}
	},

	forms: function() {
		var $form = $('form');

		$form.find('input[name=amount2]').keyup(function() {
			$(this).parent().parent().find('input[type=radio]').attr('checked', 'checked');
		});

		if ($form.length > 0) {
			$form.each(function() {
				WWF.validate($(this));
			});
		}
	},

	contest: function() {
		$('.add-photo .close, .vote-photo .close').click(function() {
			$('.add-photo-overlay').fadeOut();
			$('.add-photo').fadeOut();
			$('.vote-photo').fadeOut();

			return false;
		});

		$('.add-photo-overlay').click(function() {
			$('.add-photo-overlay').fadeOut();
			$('.add-photo').fadeOut();
			$('.vote-photo').fadeOut();

			return false;
		});

		$('textarea').focus(function() {
			if ($(this).val() == 'Treść wiadomości') {
				$(this).val('');
			}
		});

		$('.add-photo span.help').hover(function() {
			$('.add-photo p.help').show();
		}, function() {
			$('.add-photo p.help').hide();
		});

		$('.add-photo input[name=flat]').focus(function() {
			if ($(this).val() == 'Nr mieszkania') {
				$(this).val('');
			}
		});

		$('.list .photo a').click(function() {
			var $vote = $('.vote-photo');

			WWF.contestLoadImage($(this));

			$('.add-photo-overlay').fadeIn();
			$vote.css('top', $(window).scrollTop() + 100).fadeIn();

			return false;
		});

		$('.vote-photo .nav').click(function() {
			WWF.contestLoadImage($(this));

			return false;
		});

		$('.list .zoom').click(function() {
			$(this).parent().find('.photo a').click();

			return false;
		});
	},

	contestLoadImage: function(s) {
		var img = new Image();

		var $vote = $('.vote-photo');
		var $title = $vote.find('h1');
		var $img = $vote.find('img');
		var $nav = $vote.find('.nav');
		var $next = $nav.filter('.next');
		var $prev = $nav.filter('.prev');

		$nav.hide();
		$img.hide();
		$title.text('');

		$.ajax({
			url: baseUrl + 'konkurs/zdjecie/' + s.data('id'),
			type: 'GET',
			cache: false,
			success: function(data) {
				var result = eval('(' + data + ')');

				if (result.status == 'success') {
					$(img).load(function() {
						// Current image.
						$title.text(result.current.description);
						$img.attr('src', result.current.src).fadeIn();

						//$vote.find('span').text(result.current.votes + ' głosów');

						$vote.width(this.width);
						$vote.height(this.height);

						$vote.css('margin-left', '-' + (this.width / 2) + 'px');

						// Navigation.
						if (result.next != null) {
							$next.data('id', result.next.id);
							$next.show();
						}
						else {
							$next.hide();
						}

						if (result.prev != null) {
							$prev.data('id', result.prev.id);
							$prev.show();
						}
						else {
							$prev.hide();
						}
					})
					.attr('src', result.current.src);
				}
				else {
					alert('Wystąpi błąd podczas pobierania zdjęcie :(');
				}
			}
		});
	},

	validate: function ($form) {
		var $inputs = $form.find('input[type=text]');

		// Tooltips.
		$inputs.focus(function() {
			if ($(this).val() == $(this).attr('pholder')) {
				$(this).val('');
			}
		}).blur(function() {
			if ($(this).val() == '' && ($(this).attr('name') != 'flat' && $(this).attr('name') != 'k24_numer_lok')) {
				$(this).val($(this).attr('pholder'));
			}
		});

		$inputs.keypress(function(e) {
			if ($(this).hasClass('validate')) {
				if ($(this).hasClass('number')) {
					 if(e.which != 8 && e.which != 0 && e.which != 32 && (e.which < 48 || e.which > 57)) {
						return false;
					}
				}
			}
		});

		// Platnosci.
		if ($form.hasClass('platnosci')) {
			$form.find('input[type=radio]').click(function() {
				var v;

				if ($(this).hasClass('other')) {
					v = $form.find('input[name=amount2]').val();
				}
				else {
					v = $(this).val();
				}

				$form.find('input[name=kwota_zl]').val(v);
				$form.find('input[name=z24_kwota]').val(v + '00');
			});
		}

		// Fake validation.
		if ($form.hasClass('required')) {
			$form.submit(function() {
				var error = false;
				var errors = [];

				$inputs.each(function() {
					if ($(this).attr('pholder') != undefined && ($(this).val() == '' || $(this).val() == $(this).attr('pholder'))) {
						if ($(this).attr('name') != 'k24_numer_lok') {
							error = true;
							errors[errors.length] = $(this).attr('pholder');
						}
					}
					else if ($(this).attr('pholder') != undefined && $(this).hasClass('validate')) {
						var pattern;

						if ($(this).hasClass('name')) {
							pattern = /^([A-Za-z0-9 ąćęłńóśźżĄĘŁŃÓŚŹŻ])+$/;

							if(pattern.test($(this).val()) == false) {
								error = true;
								errors[errors.length] = 'Pole "' + $(this).attr('pholder') + '" zawiera niedozwolone znaki';
							}
						}
						else if ($(this).hasClass('email')) {
							pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

							if(pattern.test($(this).val()) == false) {
								error = true;
								errors[errors.length] = 'Pole "' + $(this).attr('pholder') + '" zawiera niepoprawny adres e-mail';
							}
						}
						else if ($(this).hasClass('number')) {
							pattern = /^([0-9 ])+$/;

							if(pattern.test($(this).val()) == false) {
								error = true;
								errors[errors.length] = 'Pole "' + $(this).attr('pholder') + '" może zawierać tylko cyfry';
							}
						}

					}
				});

				if ($form.hasClass('platnosci')) {
					// Additional rules for amount field.
					var $amount = $form.find('input[name="amount"]:checked');

					if ($amount.hasClass('other')) {
						var $input = $form.find('input[name=amount2]');

						if ($input.val() == '') {
							error = true;
							errors[errors.length] = 'Kwota';
						}
						else if (isNaN($input.val())) {
							error = true;
							errors[errors.length] = 'Kwota musi być liczbą';
						}

						$form.find('input[name=kwota_zl]').val($input.val());
						$form.find('input[name=z24_kwota]').val($input.val() + '00');
					}
				}

				if ($form.hasClass('nl')) {
					// Additional rules for agree field.
					var $agree = $form.find('input[type=checkbox]:checked');

					if ($agree.length == 0) {
						error = true;
						errors[errors.length] = 'Musisz wyrazić zgodę';
					}
				}

				if ($form.hasClass('photo')) {
					// Additional rules.
					var $accept = $form.find('input[name=accept]:checked');

					if ($accept.length == 0) {
						error = true;
						errors[errors.length] = 'Musisz wyrazić zgodę';
					}

					var $rules = $form.find('input[name=rules]:checked');

					if ($rules.length == 0) {
						error = true;
						errors[errors.length] = 'Musisz zaakceptować regulamin';
					}
				}

				if (error) {
					var msg = 'Następujące pola nie mogą być puste lub mają złą wartość:\n';

					for (var i = 0; i < errors.length; i++) {
						msg += ' - ' + errors[i] + '\n';
					}

					alert(msg);

					return false;
				}

				if ($form.hasClass('platnosci')) {
					_gaq.push(['_trackPageview', '/platnosci24']);
				}

				if ($form.hasClass('nl')) {
					$.ajax({
						url: $form.attr('action'),
						type: 'POST',
						data: $form.serialize(),
						success: function() {
							alert('Dziękujemy za zapisanie się do newslettera.');
						}
					});

					return false;
				}

				if ($form.hasClass('photo')) {
					$form.attr('target', 'upload');

					if ($('.add-photo input[name=flat]').val() == 'Nr mieszkania') {
						$('.add-photo input[name=flat]').val('');
					}

					$('#upload').contents().text('');
					$(this).hide();
					var $result = $('.add-photo .result');

					$result.show();

					$('#upload').load(function() {
						var result = eval('(' + $('#upload').contents().text() + ')');

						if (result.status == 'success') {
							$result.html('Dziekujemy za przesłanie zgłoszenia konkursowego!<br>Twoja fotka ukaże się po akceptacji moderatora. <a href="#" class="close"></a>');
						}
						else {
							$result.html('Wystąpił błąd podczas wysyłania formularza konkursowego.');
						}
					});
				}

				if ($form.hasClass('lg')) {
					$.ajax({
						url: $form.attr('action'),
						type: 'POST',
						data: $form.serialize(),
						success: function() {
							alert('Dziękujemy za zapisanie się do "WWF dla Ciebie".');

							$('div.disabled').removeClass('disabled');

							var $carts = $('.carts form');
							var $login = $('.login form');

							$carts.find('input[name=name]').val($login.find('input[name=name]').val());
							$carts.find('input[name=email]').val($login.find('input[name=email]').val());
						}
					});

					return false;
				}

				if ($form.hasClass('ct')) {
					$.ajax({
						url: $form.attr('action'),
						type: 'POST',
						data: $form.serialize(),
						success: function() {
							alert('Kartka została wysłana!');
						}
					});

					return false;
				}

				if ($form.hasClass('inv')) {
					$.ajax({
						url: $form.attr('action'),
						type: 'POST',
						data: $form.serialize(),
						success: function() {
							alert('Zaproszenie zostało wysłane!');
						}
					});

					return false;
				}
			});
		}

		var $submit = $('.option2 a.submit');

		if ($submit.length > 0) {
			$submit.click(function() {
				$form.submit();

				return false;
			});
		}
	},

	text: function() {
		$('a.expand').click(function() {
			$(this).parent().find('.collapsed').fadeIn();
			$(this).remove();

			return false;
		});

		$('a.przelewdruk').click(function() {
			_gaq.push(['_trackPageview', '/przelewdruk']);
		});
	},

	addons: function() {
		if ($('body').hasClass('addons')) {
			$('.screen').text(screen.width + 'x' + screen.height);
			$('body').addClass('x' + screen.width + 'y' + screen.height);

			this.carousel();
		}
	},

	carousel: function() {
		var $carousel = $('.carousel');

		this.slides = $carousel.find('ul');

		var liCount = this.slides.find('li').length;

		this.slideWidth = this.slides.find('li').outerWidth();
		this.slides.css('width', this.slideWidth * liCount).css('left', 0);

		$carousel.find('.pagination a').click(function() {
			if ($(this).hasClass('next')) {
				WWF.page = (WWF.page + 1 <= liCount) ? WWF.page + 1 : 1;
			}
			else {
				WWF.page = (WWF.page - 1 >= 1) ? WWF.page - 1 : liCount;
			}

			var indent = -(WWF.slideWidth * ((WWF.page - 1)));

			WWF.slides.animate({'left' : indent}, 500, null);

			$carousel.parent().parent().find('input[name=filename]').val(
				WWF.slides.find('li:nth-child(' + WWF.page + ') img').attr('fname')
			);

			return false;
		});
	}
};

$().ready(function() {
	WWF.init();
});

