function addEvent(obj, evType, fn) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, true);
		return true;
	} else if (obj.attachEvent) {
		var r = obj.attachEvent('on'+evType, fn);
		return r;
	} else {
		return false;
	}
}

function initAll() {
	new FieldsetFocusSetup();
	new FormFocus();
	new SearchBar();
}

addEvent(window, 'load', initAll);



var SearchBar = new Class({

	effect: null,

	initialize: function() {
		if ($('search-bar-link')) {
			$('search-bar-form').setStyle('display', 'block');
			this.effect = new Fx.Slide('search-bar-form', {
				duration: 500,
				transition: Fx.Transitions.bounceOut
			});
			this.effect.hide();
			$('search-bar-link').onclick = this.showMe.bindAsEventListener(this);
		}
	},

	showMe: function() {
		$('edit-sdc_search_keywords').focus();
		this.effect.toggle();
		$('search-bar-link-p').setStyle('display', 'none');
		return false;
	}

});



var FieldsetFocusSetup = new Class({

	fieldset: null,

	initialize: function() {
		var fieldsets = document.getElementsByTagName('fieldset');
		if (fieldsets == null) {
			return;
		}

		for (var i=0, n=fieldsets.length; i<n; i++) {
			this.setupFieldset(fieldsets[i]);
		}
	},

	setupFieldset: function(fieldset) {
		if (!fieldset.getAttribute('allowfocus') ||
			(fieldset.getAttribute('allowfocus') != 'true')
		) {
			return;
		}
		this.fieldset = fieldset;
		this.setupFieldsetInputFields();
	},

	setupFieldsetInputFields: function() {
		this.setupFieldsetInputs('input');
		this.setupFieldsetInputs('textarea');
		this.setupFieldsetInputs('select');
	},

	setupFieldsetInputs: function(tagName) {
		var inputs = this.fieldset.getElementsByTagName(tagName);
		if (inputs == null) {
			return;
		}

		for (var i=0, n=inputs.length; i<n; i++) {
			new FieldsetFocus(this.fieldset, inputs[i]);
		}
	}

});

var FieldsetFocus = new Class({

	fieldset: null,
	input: null,

	initialize: function(fieldset, input) {
		this.fieldset = fieldset;
		this.input = input;
		this.input.onfocus = this.focusMe.bindAsEventListener(this);
		this.input.onblur = this.blurMe.bindAsEventListener(this);
	},

	focusMe: function() {
		$(this.fieldset).addClass('focus');
		if (!/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
			$(this.input).addClass('focus');
		}
	},

	blurMe: function() {
		$(this.fieldset).removeClass('focus');
		if (!/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
			$(this.input).removeClass('focus');
		}
	}

});


var FormFocus = new Class({

	form : null,

	initialize: function() {
		var forms = document.getElementsByTagName('form');
		if (forms == null) {
			return;
		}

		for (var i=0, n=forms.length; i<n; i++) {
			if (this.focusForm(forms[i]) == true) {
				break;
			}
		}
	},

	focusForm: function(form) {
		if (!form.getAttribute('focus') ||
			(form.getAttribute('focus') != 'true')
		) {
			return false;
		}

		this.form = form;
		this.focusOnFirstInput();
		return true;
	},

	focusOnFirstInput: function() {
		for (var i=0, n=this.form.length; i<n; i++) {
			if ((this.form.elements[i].tagName != 'FIELDSET') &&
				(this.form.elements[i].tagName != 'LEGEND') &&
				(this.form.elements[i].tagName != 'LABEL') &&
				(this.form.elements[i].type != 'radio') &&
				(this.form.elements[i].type != 'hidden') &&
				(this.form.elements[i].type != 'file') &&
				(this.form.elements[i].type != 'reset') &&
				(this.form.elements[i].type != 'submit') &&
				(this.form.elements[i].type != 'image') &&
				(this.form.elements[i].style.display != 'none')
			) {
				this.form.elements[i].focus();

				if ((this.form.elements[i].type == 'text') ||
					(this.form.elements[i].type == 'textarea') ||
					(this.form.elements[i].type == 'password')
				) {
					this.form.elements[i].select();
				}

				break;
			}
		}
	}
});


function trackSdcClickout() {
	urchinTracker('/clickout/sdc');
}
