$(document).ready(function() {
	$('[data-contact]').contact();
	$('[data-menu]').menu();
	$('[data-menubar]').menubar();
	$('[data-tagcloud]').tagcloud();
	$('[data-photogallery]').photogallery();
	$('[data-sliders]').sliders({'selector':'img'});
	$('[data-news]').sliders({'selector':'p'});
	$('[data-autogrow]').autogrow();
});

jQuery.fn.cards = function(settings) {
	return this.each(function() {
		var __e = $(this);

		__e.children('div').hide();

		var $first = $(__e.children('div').first());
		_slide($first);

		function _slide(e) {
			e.slideDown(2000, function() {
				e.fadeOut(4000, function() {
					var $next = $(e).next();
					if ($next.get(0) != undefined)
						_slide($next);
					else
						_slide($first);
				});
			});
		}
	});
};

/* GO url */
function go(url) {
	window.location = url;
}

/* VALIDATE */
function validate(form) {
	$form = (form === undefined) ? $('[data-validate=form]') : $(form);
	$form.find('pre.validation').remove();
	$form.find('.invalid').removeClass('invalid');
	var result = true;

	$form.find('[data-validate~="char"]')
			.each(
				function() {
					var text = new String($(this).val());

					var m = text.match(/[\/\\:;]/gi);
					if (m) {
						notifyError('Invalid');
						$form.prepend('<pre class="validation">Invalid character in field!</pre>');
						$(this).addClass('invalid');

						if (result)
							result = false;
					}
				});

	$form.find('[data-validate~="empty"]')
			.each(
				function() {
					var text = new String($(this).val());

					if (text == '') {
						notifyError('Invalid');
						$form.prepend('<pre class="validation">Field is required!</pre>');
						$(this).addClass('invalid');

						if (result)
							result = false;
					}
				});

	$form.find('[data-validate~="email"]')
			.each(
				function() {
					var text = new String($(this).val());

					atpos = text.indexOf("@");
					dotpos = text.lastIndexOf(".");
					if (atpos < 1 || dotpos - atpos < 2) {
						notifyError('Invalid');
						$form.prepend('<pre class="validation">Invalid email address in field!</pre>');
						$(this).addClass('invalid');

						if (result)
							result = false;
					}
				});

	return result;
}

/* LOGIN */
function login() {
	$.ajax({
		type : "POST",
		url : "/login",
		data : $('form[data-login]').serialize(),
		beforeSend : function() {
			// $('#form').show();
		},
		error : function() {
			// $('#form').hide();
			notifyError('Error sending login');
		},
		success : function(data, textStatus) {
			data = eval('(' + data + ')');
			if (data.response) {

				var _location = new String(window.location);

				if (_location.match(/validate/i))
					_location = "/";

				window.location = _location;
			} else {
				notifyError('Failure ' + data.error);
			}
		}
	});

	return false;
}

/* COMMENTS */
function comment() {
	$.ajax({
		type : "POST",
		url : "/comment",
		data : $('form[data-comment]').serialize(),
		beforeSend : function() {
			// $('#form').show();
		},
		error : function() {
			// $('#form').hide();
			notifyError('Error sending comment');
		},
		success : function(data, textStatus) {
			data = eval('(' + data + ')');
			if (data.response) {
				// $('form[data-login]').hide();
				// $('form[data-logout]').show();
				// window.location = window.location;
				// notifyResponse('Success');
				$('#comments').append(
						'<dl class="new"><dt class="date">'
								+ html2text(data.item.created) + '</dt><dd>'
								+ data.item.text + '</dd></dl>');
				$('form[data-comment]').find('textarea').val('');
			} else {
				notifyError('Failure ' + data.error);
			}
		}
	});

	return false;
}

/* REGISTER */
function register(form) {
	$form = (form === undefined) ? $('[data-validate=form]') : $(form);
	if (validate(form)) {
		$.ajax({
			type: "POST",
			url: "/register",
			data: $(form).serialize(),
			beforeSend : function() {
				$(form).find('button').after('<img src="/img/site/loading.gif" />').hide();
			},
			error: function() {
				$("img[src='/img/site/loading.gif']").hide();
				$(form).find('button').show();
				notifyError('Error registring');
			},
			success: function(data, textStatus) {
				data = eval('(' + data + ')');
				if (data.response) {
					notifyResponse('Success');
					$(form).parent().html(data.message);
				} else {
					$("img[src='/img/site/loading.gif']").hide();
					$(form).find('button').show();
					notifyError('Failure ' + data.error);
				}
			}
		});
	}

	return false;
}
