(function(j){
	j.fn.cmsForm = function() {
		return this.each(function () {
			var form = j(this);
			
			j(this).find('.cms-form-type-textarea.cms-form-label-top .cms-form-field, .cms-form-type-textarea.cms-form-label-bottom .cms-form-field').each(function () {
				var labelHeight	= j(this).parent().find('.cms-form-label').outerHeight(true);
				j(this).height(j(this).parent().height() - labelHeight - 5);
			});
			
			j(this).bind('submit', function (e) {
				e.preventDefault();
				
				var input = form.serialize();
				
				j.ajax({
					url: '/ajax/form:send',
					type: 'POST',
					dataType: 'json',
					data: input,
					success: function (data) {
						if(data.errors.form)
						{
							var formBlock = form.parent();
							formBlock.parent().find('.cms-block').each(function () {
								if(this != formBlock.get(0))
								{
									var block = j(this);
									if(block.offset().top > formBlock.offset().top 
										&& block.offset().top + block.outerHeight() < formBlock.offset().top + formBlock.outerHeight()
										&& block.offset().left > formBlock.offset().left
										&& block.offset().left + block.outerWidth() < formBlock.offset().left + formBlock.outerWidth()
									)
									{
										block.hide();
									}
								}
							});
							
							form.html(data.html);
						}
						else
						{
							form.find('.cms-form-field').removeClass('cms-form-field-error');
							j.each(data.errors.fields, function(index, value) {
								form.find('[name="field_'+index+'"]').parent().addClass('cms-form-field-error');
							});
						}
					}
				});
			});
		});
	};
})( jQuery );

if(typeof formLoaded == 'undefined') // @todo: fix in including instead of with javascript
{
	j(document).ready(function () {
		if(j.app.name == 'site')
		{
			j('.cms-form-field-date').datepicker({dateFormat: j.app.lang('settings/jsDateFormat'), firstDay: 1, showOn:'focus'});
			j('.cms-form-element').cmsForm();
		} else {
		
		}
	});
	formLoaded = true;
}
