	window.addEvent('domready', function() {
	
		var myTips = new Tips('a.tooltip', { className: 'tooltip' }).attach('title');
		$$('a.submitme').addEvent('click', function(e) {
			new Event(e).stop();
			if($chk(this.getParent('form')))
				this.getParent('form').submit();
			else if($chk(console.log)) console.log('form element not found')
		});
		
		$$('select.jumpto').addEvent('change', function() {
			document.location.href = this.get('name') +'/'+ this.get('value');
		});		
		
		// some highlighting on form elements
		$$('input[type=text],textarea').addEvent('focus', function() { 
			this.setStyle('background-color', '#FFF9D6');
		}).addEvent('blur',function() {
			this.setStyle('background-color', '#FFFFFF');
		});
		
		$$('div.fieldset div.childs').each(function(child) {
			var isEmpty = true;
			child.getElements('input[type=text], select').each(function(input) {
				if(input.get('value') != "") isEmpty = false;
			});
			if(isEmpty) {
				child.setStyle('display','none').getElements('input').set('disabled','disabled');
			}
		});


		$$('div.hidden').each(function(h) {
			h.getElements('input').set('disabled','disabled');
		});
		

		$$('div.fieldset div.radio').each(function(row) {
			
			var fieldset = row.getParent('div.fieldset');
			var child = row.getElement('div.childs');
			fieldset.store('child', child);

			// check for children in a radiobutton field and display them
			var r = row.getElement('input[type=radio], input[type=checkbox]');
			if($defined(r)) {
				if(row.getElement('div.childs') && r.get('checked')) {
					row.getElement('div.childs').setStyle('display','block');
				}
			}

			row.getElement('input[type=radio], input[type=checkbox]').addEvent('click', function() {
				if(this.get('checked') && $chk(child)) {
					child.getElements('input').each(function(e) { e.erase('disabled') });
					child.setStyle('display','block').getElement('input[type=text],select').focus();
				}
				else if(this.get('type') == "checkbox" && $chk(child)) {
					child.setStyle('display','none').getElement('input[type=text],select').set('value','');
					child.getElements('input').set('disabled','disabled');
				}
				else if(this.get('type') == "radio" && $chk(fieldset.retrieve('child'))) {
					fieldset.retrieve('child').setStyle('display','none').getElement('input[type=text],select').set('value','');
					fieldset.retrieve('child').getElements('input').set('disabled','disabled');
				}
			});
			
			if($chk(row.getElement('input[type=radio]'))) {
				var fieldset = row.getParent('div.fieldset');
				row.getElement('input[type=radio]').addEvent('click', function() {
					
					fieldset.getElements('input.switcher').each(function(v) {
						if(v.get('value')) {
							vs = v.get('value').split(';');
							vs.each(function(vsh) { 
								$(vsh).setStyle('display','none');
								$(vsh).getElements('input').set('disabled','disabled');
							});		
						}
					});
					
					var value = this.getPrevious('input.switcher').get('value');
					if($chk(value) && value != "") {
						var values = value.split(';');
						fieldset.store('values', values);
						values.each(function(e) {
							if($chk(e)) {
								if($(e).getStyle('display') != "block") {
									$(e).setStyle('display','block');
								}
								if($chk($(e).getElements('input'))) {
									$(e).getElements('input').each(function(i) {
										i.erase('disabled');
									});
								}
							}
						});
					}
					else {
						var values = fieldset.retrieve('values');
						if($chk(values)) {
							values.each(function(v) {
								$(v).setStyle('display','none');
								$(v).getElements('input').each(function(i) {
									i.set('disabled', 'disabled');
								});
							});
						}
					}
				});	
				
				// initalize our form state	
			    if(row.getElement('input[type=radio]').get('checked')) {
			    	var value = row.getElement('input.switcher').get('value');
					if($chk(value) && value != "") {
						fieldset.store('values', value.split(';'));
						value.split(';').each(function(q) {
							if($(q)) {
								$(q).setStyle('display','block');
								$(q).getElements('input').each(function(e) { e.erase('disabled'); });
							}
						});
					}
			    }
			}

		});

		
	});

	

