var contact = function() {
	
	return {
		
		contact_selector		: 'contact_form',
		contact_el				: '',
		contact_form_el			: '',
		contact_link_selector	: '.contact_form_link',
		contact_link_els		: '',
		slide_fx 				: '',
		contact_submit_selector	: 'contact_submit',
		contact_submit_el		: '',
		contact_input_els		: '',
		
		init : function() {
			
			this.contact_el				= $(this.contact_selector);
			
			this.move_el_to_top();
			
			this.contact_submit_el		= $$('#' + this.contact_selector + ' input[type=submit]')[0];
			this.contact_form_el		= $$('#' + this.contact_selector + ' form')[0];
			
			this.contact_form_el.addEvent('submit', this.submit_contact.bind(this));
			
			this.slide_fx 				= new Fx.Reveal(this.contact_el, {'onShow' : function(e) { $$('.desc')[0].setStyle('display', 'block'); $$('.desc')[1].setStyle('display', 'block'); }});
			
			this.contact_link_els		= $$(this.contact_link_selector);
			
			this.contact_link_els.each(this.add_events, this);
			
			this.insert_close_button();
			
			this.contact_link_els		= $$('#' + this.contact_selector + ' input');
			
			this.contact_link_els.each(this.setUpHumanTest, this);
			
			
			
			
		},
		
		setUpHumanTest : function(item) {
			
			item.addEvent('focus', this.markAsHuman.bind(this));
			item.addEvent('click', this.markAsHuman.bind(this));
			
		},
		
		markAsHuman : function(e) {
			
			$('contact_verify2').set('value', '12344321');
			
			console.log($('contact_verify2').get('value'));
			
		},
		
		submit_contact : function(e) {
			
			e.stop();
			
			var myRequest = new Request.JSON({method: 'post', url: '/contact/send/', onSuccess : this.submit_contact_success.bind(this), onRequest : this.show_loader.bind(this)});
			myRequest.send('message=' + $$('#' + this.contact_selector + ' textarea[name=\'message\']')[0].get('value') + '&name=' + $$('#' + this.contact_selector + ' input[name=\'name\']')[0].get('value') + '&email=' + $$('#' + this.contact_selector + ' input[name=\'email\']')[0].get('value') + '&phone=' + $$('#' + this.contact_selector + ' input[name=\'phone\']')[0].get('value') + '&ajax=true');
			
			return;
			
		},
		
		show_loader : function(e) {
			
			$('form_overlay').setStyle('display', 'block');
			
		},
		
		submit_contact_success : function(req, text) {
			
			
			
			if(req.error_message) {
				
				if($('contact_error_message')) $('contact_error_message').dispose();
				if($('contact_success_message'))$('contact_success_message').dispose();
				
				var error_message_el 	= new Element('div', {'id' : 'contact_error_message', 'html' : req.error_message});
				var clear_span_el		= new Element('span', {'class' : 'clear block hide'});
				error_message_el.inject($$('#' + this.contact_selector + ' form h2')[0], 'after');
				clear_span_el.inject(error_message_el, 'after');
				
				if(!req.message) {
					$$('#' + this.contact_selector + ' label[for=\'contact_message\']')[0].addClass('required');
					$$('#' + this.contact_selector + ' textarea[name=\'message\']')[0].addClass('required');
				}
				else {
					$$('#' + this.contact_selector + ' label[for=\'contact_message\']')[0].removeClass('required');
					$$('#' + this.contact_selector + ' textarea[name=\'message\']')[0].removeClass('required');
				}
				if(!req.name) {
					$$('#' + this.contact_selector + ' label[for=\'contact_name\']')[0].addClass('required');
					$$('#' + this.contact_selector + ' input[name=\'name\']')[0].addClass('required');
				}
				else {
					$$('#' + this.contact_selector + ' label[for=\'contact_name\']')[0].removeClass('required');
					$$('#' + this.contact_selector + ' input[name=\'name\']')[0].removeClass('required');
				}
				if(!req.email && !req.phone) {
					$$('#' + this.contact_selector + ' label[for=\'contact_email\']')[0].addClass('required');
					$$('#' + this.contact_selector + ' input[name=\'email\']')[0].addClass('required');
					$$('#' + this.contact_selector + ' label[for=\'contact_phone\']')[0].addClass('required');
					$$('#' + this.contact_selector + ' input[name=\'phone\']')[0].addClass('required');
				}
				else {
					$$('#' + this.contact_selector + ' label[for=\'contact_email\']')[0].removeClass('required');
					$$('#' + this.contact_selector + ' input[name=\'email\']')[0].removeClass('required');
					$$('#' + this.contact_selector + ' label[for=\'contact_phone\']')[0].removeClass('required');
					$$('#' + this.contact_selector + ' input[name=\'phone\']')[0].removeClass('required');
					
				}
				
			}
			else if(req.success_message) {
				
				if($('contact_error_message')) $('contact_error_message').dispose();
				if($('contact_success_message'))$('contact_success_message').dispose();
				
				var success_message_el 	= new Element('div', {'id' : 'contact_success_message', 'html' : req.success_message});
				var clear_span_el		= new Element('span', {'class' : 'clear block hide'});
				success_message_el.inject($$('#' + this.contact_selector + ' form h2')[0], 'after');
				clear_span_el.inject(success_message_el, 'after');
				
				$$('#' + this.contact_selector + ' textarea[name=\'message\']')[0].set('value', '');
				$$('#' + this.contact_selector + ' input[name=\'name\']')[0].set('value', '');
				$$('#' + this.contact_selector + ' input[name=\'email\']')[0].set('value', '');
				$$('#' + this.contact_selector + ' input[name=\'phone\']')[0].set('value', '');
				
				$$('#' + this.contact_selector + ' label[for=\'contact_message\']')[0].removeClass('required');
				$$('#' + this.contact_selector + ' textarea[name=\'message\']')[0].removeClass('required');
				$$('#' + this.contact_selector + ' label[for=\'contact_name\']')[0].removeClass('required');
				$$('#' + this.contact_selector + ' input[name=\'name\']')[0].removeClass('required');
				$$('#' + this.contact_selector + ' label[for=\'contact_email\']')[0].removeClass('required');
				$$('#' + this.contact_selector + ' input[name=\'email\']')[0].removeClass('required');
				$$('#' + this.contact_selector + ' label[for=\'contact_phone\']')[0].removeClass('required');
				$$('#' + this.contact_selector + ' input[name=\'phone\']')[0].removeClass('required');
				
			}
			
			$('form_overlay').setStyle('display','none');
			
		},
		
		insert_close_button : function() {
			var close_el = new Element('strong', {
				'events' : {
					'click' : this.toggle.bind(this)
				},
				'html' : 'close X'
			});
			
			contact_header_anchor = $$('#contact_form h2 a')[0];
			close_el.inject(contact_header_anchor, 'after');
		},
		
		add_events : function(contact_link) {
			
			contact_link.addEvent('click', this.toggle.bind(this));
			// contact_link.set('href', 'javascript:void(0);');
			contact_link.set('href', 'javascript:void(0);');
			
		},
		
		move_el_to_top : function() {
			
			var temp_el			= this.contact_el.clone(true, true).inject('header','after');
			
			this.contact_el.dispose();
			
			this.contact_el		= temp_el;
			this.contact_el.set('id', this.contact_selector);
			
		},
		
		toggle : function(e) {
			
			this.slide_fx.toggle();
			
		},
		
		send : function(e) {
			
			
			
		}
		
		
	};
	
}();