/**
 * Contact form
 */
var ContactForm = {
	//Form configuration
	config: {
		form_id: 'contact_form',
		form_button_id: 'contact_form_button',
		text_id: 'contact_form_text',
		
		fields: ['company', 'contact_person', 'contact_email','contact_phone', 'question']
	},
	
	//Mark errors and show message
	markErrors: function (fields, messages) {
		var err_fields = {};
		for(var i=0,j=fields.length; i<j; i++) err_fields[fields[i]] = true; 
		
		//Go though all fields and mark as error if needed
		for (var i=0,j=this.config.fields.length; i<j; i++) {
			var inp = JS.Dom.getAncestorByTagName('TR', this.config.fields[i]);
			
			JS.Dom.removeClassName(inp, 'error');
			
			if (err_fields[this.config.fields[i]]) JS.Dom.addClassName(inp, 'error');
			
			JS.Dom.removeClassName(JS.Dom.get('contact_form_errors'), 'hidden');
			JS.Dom.get('contact_form_errors').innerHTML = messages.join('<br />');
		}
	},
	
	//Process server response
	processRequestResponse: function (success, json) {
		//If request didn't failed
		if (success) {
			if (!json.errors) {
				JS.Dom.addClassName(this.config.form_id, 'hidden');
				JS.Dom.removeClassName(this.config.text_id, 'hidden');
				this.markErrors([], []);
			} else {
				var messages = [];
				var fields = [];
				
				for(var i=0,j=json.errors.length; i<j; i++) {
					if (json.errors.hasOwnProperty(i)) {
						if (json.errors[i].message) messages.push(json.errors[i].message);
						if (json.errors[i].fields) fields = fields.concat(json.errors[i].fields);
					}
				}
				
				this.markErrors(fields, messages);
			}
			
			JS.Dom.reflow(JS.Dom.get('content'), 'padding');
		}
		
		//Enable submit button
		JS.Dom.get(this.config.form_button_id).disabled = false;
	},
	
	//Send form data
	sendFormData: function () {
		var self = this;
		
		//Disable submit button
		JS.Dom.get(this.config.form_button_id).disabled = true;
		
		//Submit form with Ajax
		JS.Ajax.form(this.config.form_id, function (d) {
			self.processRequestResponse.apply(self, arguments);
		});
	},
	
	//Initialize form
	init: function () {
		var self = this;
		
		//Bind to submit event
		JS.Event.addListener(this.config.form_id, 'submit', function (ev) {
			self.sendFormData();
			JS.Event.stopEvent(ev);
		});
		
		//Add lightbox
		var lnk = JS.Dom.query('a[href="#the-onliner"]');
		var lightbox = null;
		
		if (lnk && lnk.length && onliner_image) {
			JS.Event.addListener(lnk[0], 'click', function (ev){
				if (!lightbox) {
					lightbox = new JS.Components.Lightbox({autoDiscover: false, showTitle: true});
					lightbox.addImage(null, onliner_image, onliner_title);
				}
				
				lightbox.show(onliner_image);
				
				JS.Event.stopEvent(ev);
				return false;
			});
		}
		
		//Checkboxes
		/*
		var check_parent = JS.Dom.get('questions_4');
		var check_childs = [JS.Dom.get('questions_4_1'), JS.Dom.get('questions_4_2'), JS.Dom.get('questions_4_3')];
		
		var fn_child_check = function () {
			if (this.checked) {
				check_parent.checked = true;
			}
		};
		
		var fn_parent_uncheck = function () {
			if (!this.checked) {
				for(var i=0,j=check_childs.length; i<j; i++) {
					check_childs[i].checked = false;
				}
			}
		};
		
		for(var i=0,j=check_childs.length; i<j; i++) {
			if (check_childs[i]) {
				JS.Event.addListener(check_childs[i], 'change', fn_child_check);
				JS.Event.addListener(check_childs[i], 'click', fn_child_check);
			}
		}
		
		if (check_parent) {
			JS.Event.addListener(check_parent, 'change', fn_parent_uncheck);
			JS.Event.addListener(check_parent, 'click', fn_parent_uncheck);
		}
		*/
	}
};

/**
 * Listen for load event
 */
JS.Event.addListener(window, 'load', function () {
	//Initialize contact form
	ContactForm.init();
});