/*global $, Base, Class, Element, TabView */

var fi = {};

var Contact = Class.create({

	initialize: function() {
		this.numFileInputFields = 0;
		this.maxFileInputFields = 3;
		this.inputFieldRowUniqueId = 0;

		this.initFileInputFields();
		this.addListeners();
		this.setupNavigationTabs();		
	},

	addListeners: function() {
		$('contact_question_dropdown').observe('mouseover', function(event) {
			$('contact_question_dropdown_container').addClassName('dropdown_over');
		});

		$('contact_question_dropdown').observe('mouseout', function(event) {
			$('contact_question_dropdown_container').removeClassName('dropdown_over');
		});

		$('contact_question_dropdown').observe('change', function(event) {
			$('contact_question_dropdown_label').update(this.value);
		});

		$('contact_attach_button').observe('click', function(event) {
			fi.contact.addFileInputForAttachments();
		
			var hint = $('contact_attach_button_hint')

			if( !hint.visible() ) {
				new Effect.toggle( hint );
			}
		});

		$('contact_navigation_wanttosayhi').observe('click', this.hideConfimationPage);
		$('contact_navigation_gotaquestion').observe('click', this.hideConfimationPage);
		$('contact_navigation_sendportfolio').observe('click', this.hideConfimationPage);
		$('contact_navigation_talkbusiness').observe('click', this.hideConfimationPage);

		$('sayhi_message').observe('focus', this.setFocus);
		$('sayhi_message').observe('blur', this.removeFocus);
		$('question_message').observe('focus', this.setFocus);
		$('question_message').observe('blur', this.removeFocus);
		$('portfolio_message').observe('focus', this.setFocus);
		$('portfolio_message').observe('blur', this.removeFocus);
		$('business_message').observe('focus', this.setFocus);
		$('business_message').observe('blur', this.removeFocus);
	},

	setFocus:function() {
		Element.addClassName(this.parentNode.parentNode, 'focused');
	},

	removeFocus:function() {
		Element.removeClassName(this.parentNode.parentNode, 'focused');
	},

	hideConfimationPage:function() {
		$('contact_confirmation_page').hide();
		$('contact_business_form_confirmation').hide();
		$('contact_sayhi_form_confirmation').hide();
		$('contact_question_form_confirmation').hide();
		$('contact_portfolio_form_confirmation').hide();
	},

	setupNavigationTabs:function(){
		this.navigationTabs = new TabView("contactNavigation");
	},
	
	showForm: function(id) {
		$('contactNavigationTabContent0', 'contactNavigationTabContent1', 'contactNavigationTabContent2', 'contactNavigationTabContent3', 'contact_confirmation_page').invoke('hide');
		$('contact_navigation_wanttosayhi', 'contact_navigation_gotaquestion', 'contact_navigation_sendportfolio', 'contact_navigation_talkbusiness').invoke('removeClassName', 'selected');

		$('contact_navigation_' + id).addClassName('selected');
		$(id).show();
	},

	initFileInputFields: function() {
		var x = document.getElementsByTagName('input');
		for (var i=0;i<x.length;i++) {
			if (x[i].type != 'file') { continue; }

			x[i].onchange = function () {

				var filename = this.value.toLowerCase();

				if( (filename.indexOf('.doc') == -1) && (filename.indexOf('.pdf') == -1) && (filename.indexOf('.jpg') == -1) && (filename.indexOf('.jpeg') == -1) && (filename !== "")) {
					Element.addClassName(this, 'invalid');
					$('business_attachment_warning').show();
					$('business_attachment_info').hide();
				}
				else {
					Element.removeClassName(this, 'invalid');
					$('business_attachment_warning').hide();
					$('business_attachment_info').show();
				}
			};
		}
	},

	submitForm: function(form_id) {
		$(form_id).request({
			onComplete: function(){
				fi.contact.showConfirmationPage(form_id);
			}
		});
	},

	showConfirmationPage: function(form_id) {
		$('contact_confirmation_page').show();
		$(form_id + '_confirmation').show();
		$('contactNavigationTabContent0', 'contactNavigationTabContent1', 'contactNavigationTabContent2', 'contactNavigationTabContent3').invoke('hide');
	},

	addFileInputForAttachments: function() {
		if(this.numFileInputFields < this.maxFileInputFields) {

			var className = "";

			if(this.numFileInputFields === 0) {
				className = 'contact_inputfile_row first';
			}
			else {
				className = 'contact_inputfile_row';
			}

			var uniqueId = "contact_inputfile_row_" + this.inputFieldRowUniqueId;

			var div = '<div id="' + uniqueId + '" class="' + className + '"><div style="float:left"><input type="file" name="attachments[]" size="50" class="contact_inputfile" /></div><div style="float: right"><a href="Javascript:fi.contact.removeFileInputForAttachments(\'' + uniqueId + '\')" class="remove_attachment_button"></a></div><div class="clear"></div></div>';
			$('contact_attachments_inputfile').insert(div);
			this.numFileInputFields ++;
			this.inputFieldRowUniqueId ++;
		}
	},

	removeFileInputForAttachments: function(uniqueId) {
		$(uniqueId).remove();

		var firstRow = $('contact_attachments_inputfile').select('div.contact_inputfile_row').first();
		if(firstRow !== undefined) {
			firstRow.addClassName('first');
		}

		this.numFileInputFields --;
	}
		
});

function initpage(){
	var numOfTsEntries = 4;
	fi.base = new Base(numOfTsEntries);
	fi.contact = new Contact();
	fi.formValidator = new FormValidator();
}

function showConfirmation(){
	fi.contact.showConfirmationPage('contact_business_form');
}

document.observe("dom:loaded",initpage);

