Ext.onReady(function(){
	if (Ext.get('sendContactForm'))
	{
		Ext.get('sendContactForm').on('click', function(e){
	
			// prevent default action
			e.stopEvent();
			// get form element object
			var contactForm = Ext.get('contactForm');
			// get submit button element object
			var button = Ext.get(e.target);
			
			// start loading
			button.replaceClass('email', 'loading');
					
			// hide result message container
			Ext.get('displayResult').replaceClass('visible', 'invisible');
			
			// clear error elements
			clearErrorElements();
	
			// build params automatically - getParams should be in /libs/application.js
			var postParams = getParams(contactForm.dom);
			
			setTimeout(function(){
				Ext.Ajax.request({
					url: '/views/forms/contact-form-process.php'
					,method: 'POST'
					,params: ''+postParams+''
					,success: function(result,request){
						var data = Ext.util.JSON.decode(result.responseText);
						// if error occured
						if (data.success == false)
						{
							for(var key in data.errors)
							{
								// set red underline to error fields
								//Ext.get(data.errors[key].error_id).dom.style.border = '1px solid red';
								if (Ext.get(data.errors[key].error_id))
								{
									Ext.get(data.errors[key].error_id).addClass('error');
								}
								// set visibility and error class to error containers
								if (Ext.get(data.errors[key].error_id + 'Error'))
								{
									Ext.get(data.errors[key].error_id + 'Error').show();
									Ext.get(data.errors[key].error_id + 'Error').addClass('error');
								}
								// print error message into error message container
								if (Ext.get(data.errors[key].error_id + 'ErrorMessage'))
								{
									Ext.get(data.errors[key].error_id + 'ErrorMessage').update(data.errors[key].error_msg);
									Ext.get(data.errors[key].error_id + 'ErrorMessage').replaceClass('noscreen', 'screen');
								}
							}	
						}
						// if form was sent successfuly
						else
						{
							// clean form fields
							contactForm.dom.reset();
							// clear error elements
							clearErrorElements();
							
							Ext.get('displayResult').replaceClass('message-bad', 'message-good');
							Ext.get('displayResult').replaceClass('invisible', 'visible');
							Ext.get('displayResult').update(data.msg);
							//alert(data.msg);
						}
					}
					// sending failed
					,failure: function(){
						Ext.get('displayResult').addClass('message-bad');
						Ext.get('displayResult').replaceClass('invisible', 'visible');
					}
				});
				// stop loading
				button.replaceClass('loading', 'email');
			}, 1000);
		});
	}
});

function clearErrorElements(){
	// remove red underline from error fields
	Ext.select('.error').each(function(e){
		var element = e;
		//alert(element);
		element.removeClass('error');
	});
	// remove error messages from error message container
	Ext.select('.error_message').each(function(e){
		var element = e;
		element.replaceClass('screen', 'noscreen');
		element.update('&nbsp;');
	});
}