var formularFactory = new Class({ initialize: function(config) { this.config = config; this.initialDisplay = null; this.formElem; this.prepareUserFormular(); }, prepareUserFormular: function() { formElemArr = []; for (i=0; i<=this.config.length; i++) { if (typeof this.config[i] == "undefined") return; var elterName = this.config[i].elter_type + this.config[i].elter_name; var elterElem = $$(elterName); formElemArr[i] = new formElement(elterElem, $$('tr.'+this.config[i].depends)); this.formElem = formElemArr[i]; this.formElem.toggle(); elterElem.addEvent('change', function(formElem) { formElem.toggle(); }.pass(formElemArr[i])); } } }); var formElement = new Class( { initialize: function(elterElem, dependsElem) { this.elterElem = elterElem; this.dependsElem = dependsElem; this.initialDisplay = this.dependsElem[0].getStyle('display'); }, toggle: function() { var elterVal = 0; try { if (!$chk(this.elterElem[0])) {throw "tja";} this.elterElem.each(function(el) { if (!$chk(el)) {throw "error";} if (el.get('type') == "radio") { if (el.get('checked') == true) { elterVal = el.get('value'); } } else { elterVal = el.get('value'); } }); } catch(err) { elterVal = el.get('value'); } this.dependsElem.each(function(el) { if (this.elterElem.get('name') == 'kinder') { if (elterVal == '1') { el.setStyle('display', this.initialDisplay); $('jkind').setStyle('display', 'none'); } else if (elterVal == '0') { el.setStyle('display', 'none'); } else { el.setStyle('display', this.initialDisplay); $('jkind').setStyle('display', this.initialDisplay); } return; } if (el.getStyle('display') == 'none' && (elterVal != "0" && elterVal != "-")) { el.setStyle('display', this.initialDisplay); } else if (el.getStyle('display') != "none" && (elterVal == "0" || elterVal == "-")) { el.setStyle('display', 'none'); } }.bind(this)); } }); window.addEvent('domready', function() { var config = [ {elter_type: 'select', elter_name: '[name=kinder]', depends: 'kind_depends'}, {elter_type: 'input', elter_name: '[name=automobil]', depends: 'auto_depends'}, {elter_type: 'input', elter_name: '[name=pc]', depends: 'pc_depends'}, {elter_type: 'input', elter_name: '[name=notebook]', depends: 'notebook_depends'} ]; this.myFormularFactory = new formularFactory(config); el = $$('select[name=lnd]'); el.addEvent('change', function() { if (el.get('value') != 0) { new Request.HTML( { method:'post', data:'lnd='+el.get('value'), url:'http://'+location.host+'/lnd', update:$('einsatzort'), onRequest: function() {}, onFailure: function() {}, onSuccess: function() {} }).send(); } }); });