var engine = {
	confirm: {
		run: function() {
			$('.confirm').click(function() {
				if (!confirm('Na pewno?'))
					return false;
			});
		}
	},
	todo: {
		run: function() {
			$('.todo').click(function() {
				alert('ToDo');
				return false;
			});
		}
	},
	list: {
		run: function() {
			$('table.list tr:even').addClass('even');
			$('table.list tr').mouseover(function() { $(this).addClass('hover'); });
			$('table.list tr').mouseout(function() { $(this).removeClass('hover'); });
		}
	},
	sellcontact: {
		i: 1,
		run: function() {
			this.sec();
		
			this.addRowDomain();
			
			this.submit();
		},
		addRowDomain: function() {
			$('#sellcontact-add-domain').click(function() {
				var id = 'sellcontact-form-row-' + engine.sellcontact.i;
				engine.sellcontact.i++;
				
				var deleteLink = '<td class="action"><a href="" onclick="javascript:$(\'#' + id + '\').remove(); return false;">'+deleteLabel+'</a></td>';
				
				var block = $('.sellcontact-form-row:first').clone(true);
				block.attr('id', id);
				block.append(deleteLink);
				block.insertAfter($('.sellcontact-form-row:last'));
				
				$('.sellcontact-form-row:last input').val('');
				$('.sellcontact-form-row:last select').val('');
				return false;
			});
		},
		submit: function() {
			$('#sellcontact').submit(function() {
				var submitButton = $('#sellcontact input[type="submit"]');
				
				var isValid = engine.sellcontact.validate();
				
				return isValid;
			});
		},
		sec: function() {
			$('#sellcontact .sec').hide();
		},
		validate: function() {
			var isValid = true;
			$('#sellcontact input').removeClass('error');
			$('#sellcontact select').removeClass('error');
			
			for (i = 0; i < engine.sellcontact.i; i++) {
				var thisId = '#sellcontact-form-row-'+i;
				
				var name = $(thisId +' .name');
				if (name.val() == '') {
					isValid = false;
					name.addClass('error');
				}
				
				var price = $(thisId +' .price');
				if (price.val() == '') {
					isValid = false;
					price.addClass('error');
				}
				
				var category_id = $(thisId +' .category_id');
				if (category_id.val() == '') {
					isValid = false;
					category_id.addClass('error');
				}
			}
			
			var owner = $('#sellcontact input[name="owner"]');
			if (owner.val() == '') {
				isValid = false;
				owner.addClass('error');
			}
			
			var email = $('#sellcontact input[name="email"]');
			if (email.val() == '') {
				isValid = false;
				email.addClass('error');
			}
			
			// sec
			if (isValid == true) {
				$('#sellcontact .sec').fadeIn();
				$('#sec-input').focus();
				
				if ($('#sec-input').val() == '') {
					$('#sellcontact .sec').addClass('error');
					isValid = false;
				}
				else {
					var url = BASE + '/sellcontact/validator';
					var data = {
						'sec[id]': $('#sec-id').val(),
						'sec[input]': $('#sec-input').val()
					};
					
					jQuery.ajax({
						'cache': false,
						'async': false,
						'type': 'POST',
						'url': url,
						'data': data,
						'success': function(result) {
							if (result != 'true') {
								$('#sellcontact .sec').empty();
								$('#sellcontact .sec').append(result);
								$('#sellcontact .sec').addClass('error');
								$('#sec-input').focus();
								isValid = false;
							}
						}
					});
				}
			}
			
			return isValid;
		}
	},
	newsletter: {
		userName: '',
		email: '',
		run: function() {
			if (typeof(newsletterDefaultEmail) != 'undefined') {
				this.userName = newsletterDefaultUserName;
			} else {
				this.userName = "";
			}
			
			
			if (typeof(newsletterDefaultEmail) != 'undefined') {
				this.email = newsletterDefaultEmail;
			} else {
				this.email = "";
			}
			
			$('#newsletter input[name="user_name"]').focus(function() {
				if ($(this).val() == engine.newsletter.userName) {
					$(this).val('');
				}
			});
			
			$('#newsletter input[name="user_name"]').blur(function() {
				if ($(this).val() == '') {
					$(this).val(engine.newsletter.userName);
				}
			});
			
			$('#newsletter input[name="email"]').focus(function() {
				if ($(this).val() == engine.newsletter.email) {
					$(this).val('');
				}
			});
			
			$('#newsletter input[name="email"]').blur(function() {
				if ($(this).val() == '') {
					$(this).val(engine.newsletter.email);
				}
			});
		}
	},
	search: {
		formError: false,
		query: 'wpisz frazę (min. 2 znaki)',
		run: function() {
			this.init();
			this.searchResults();
			this.form.run();
		},
		init: function() {
			if (typeof(searchDefaultPhrase) != 'undefined') {
				this.query = searchDefaultPhrase;
			}
			else {
				this.query = "";
			}
			
			$('#search input[name="query"]').focus(function() {
				if ($(this).val() == engine.search.query) {
					$(this).val('');
				}
			});
			
			$('#search input[name="query"]').blur(function() {
				if ($(this).val() == '' && engine.search.formError == false) {
					$(this).val(engine.search.query);
				}
			});
			
			$('#search').submit(function() {
				engine.search.formError = false;
				$('#search input[name="query"]').removeClass('error');
				$('#search .error').hide();
				
				var inputValue = $('#search input[name="query"]').val();
				var length = inputValue.length;
				
				if (engine.search.query == inputValue || length < 2) {
					return engine.search.inputError(inputValue);
				}
			});
		},
		inputError: function(inputValue) {
			if (inputValue == engine.search.query) $('#search input[name="query"]').val('');
			$('#search input[name="query"]').addClass('error').focus();
			$('#search .error').fadeIn();
			this.formError = true;
			return false;
		},
		searchResults: function() {
			//$('#searchResults_advancedSearchForm').hide();
			
			$('#searchResults_changeCriteria a').click(function() {
				$('#searchResults_advancedSearchForm').fadeIn();
				$(this).remove();
				return false;
			});
		},
		form: {
			run: function() {
				engine.search.form.category.run();
			},
			category: {
				run: function() {
					this._toggle();
					this._chainSelect();
					
					$('#parent_category_id').trigger('change');
					
					var hiddenCategoryId = $('input[name="hidden_category_id"]').val();
					
					if (hiddenCategoryId > 0) {
						$('#searchAdvancedForm select[name="category_id"]').val(hiddenCategoryId);
					}

				},
				_chainSelect: function () {
					$('#parent_category_id').chainSelect(
						'#form_category_id',
						BASE + '/categories/fetchchildren',
						{
							before: function(target) {
								engine.search.form.category._toggle();
							},
							after: function(target) {
								
							}
						}
					);
				},
				_toggle: function() {
					if ($('#parent_category_id').val() == 0 ) {
						$('#category_id-label').hide();
						$('#category_id-element').hide();
					}
					else {
						$('#category_id-label').show();
						$('#category_id-element').show();
					}
				}
			}
		}
	},
	tree: {
		run: function() {
			this.bindHover();
		},
		bindHover: function() {
			$('.tree .child').mouseover(function() {
				$(this).addClass('over');
			});
			$('.tree .child').mouseout(function() {
				$(this).removeClass('over');
			});
		}
	}
};

$(document).ready(function() {
	engine.search.run();
	engine.confirm.run();
	engine.todo.run();
	engine.list.run();
	engine.sellcontact.run();
	engine.newsletter.run();
	engine.tree.run();
});