if (this.Prototype) {
	Event.observe(window, 'load', function() {
		// get form
		var form = $('registration');

		if (form) {
			form.select('.powermail-fieldset-branch').each(function(el) {
				var children = el.childElements();

				switch(true) {
					case (children.length >= 3):
						children[2].addClassName('powermail-fieldwrap-subbranch');

						// add listeners
						var cbs = children[1].select('input[type="checkbox"]');
						for (var i=0; i < cbs.length; i++) {
							
							cbs[i].observe('click', function(e){
								if (this.getValue()) {
									this.up(1).next().appear();
								} else {
									this.up(1).next().fade();
								}
							});
						}

						// hide submenu
						children[2].hide();
					case (children.length >= 2):
						children[1].addClassName('powermail-fieldwrap-branch');
					break;
				}
			});

			// password validation
			form.observe('submit', function(e){
				var passwords = form.select('input[type="password"]');
				if (passwords.length == 2) {
					if (passwords[0].getValue() != passwords[1].getValue()) {
						e.stop();
						if (passwords[1].hasClassName('validation-passed'))
							passwords[1].removeClassName('validation-passed')
						passwords[1].addClassName('validation-failed');
						if (!e.target.up().select('.registration-password-mismatch').length) {
							passwords[1].insert({
								after: new Element('div', {
									className:'powermail_mandatory_js registration-password-mismatch'
								}).update("Passwords are not equal!")
							});
							passwords[1].observe('focus', function(e){
								e.target.setValue('');
								e.target.removeClassName('validation-failed');
								e.target.up().select('.registration-password-mismatch')[0].remove();
								e.target.stopObserving('focus');
							});
						}
					}
				} else return;
			}.bind(form));
		}
	});
}
