/* utils */
$(function() {
});

function sA() {
 var sM = $("#content");
 var offset = $(window).height() - $("#top").height() - $("#menu").height() - $("#footer").height();
 if (offset > 0) sM.css("min-height", offset);
}

//CONTACT FORM
jQuery.fn.ajaxify = function() {
	this.submit(function() {
		var error = false;
		var form = jQuery(this);
		form.find(':input').each(function(index, element) {
			var elementObj = jQuery(element);
			if (elementObj.attr('name').length == 0 || elementObj.attr('id').length == 0) return;
			
			var selector = '';
			if (elementObj.attr('type') == 'text') {
				selector = 'div.input.text';
			} else if (elementObj.attr('type') == 'textarea') {
				selector = 'div.input.textarea';
			}
			
			if ((elementObj.val().length == 0 || elementObj.val() == elementObj.attr('alt')) && elementObj.hasClass('allowEmpty') == false) {
				elementObj.closest(selector).addClass('error');
				error = true;
			} else {
				elementObj.closest(selector).removeClass('error');
			}
		});
		
		if (error == true) return;
		
		form.find('button').hide();
		form.find('.loader').show();
		
		jQuery.ajax({
			type: 'POST',
			url: form.attr('action'),
			data: form.serializeArray(),
			success: ajaxifyCallback,
			dataType: 'json',
			context: form
		});
	});
	
	return this.each(function(){});
};

function ajaxifyCallback(data, txt) {
	var form = $(this.context);
	if(data.errors == 'incorrectId') form.parent().addClass('error');
	if (data.errors == null) {
		form.closest('div').html(form.siblings('.form-replacement').html());
		return;
	}
		
	form.find('.loader').hide();
	form.find('button').show();
	
	jQuery.each(data.errors,function(index,value) {
		var inputObj = form.find(":input[name='data[" + index + "]']");
		
		var selector = '';
		if (inputObj.attr('type') == 'text') {
			selector = 'div.input.text';
		} else if (inputObj.attr('type') == 'textarea') {
			selector = 'div.input.textarea';
		}
		
		inputObj.closest(selector).addClass('error');
	});
};
