function AFormEventHandlers(){

    var updateFields = function(e) {
        var data = {
            'action':'liveupdate'
        };

        var area = null;
        var start = $(e.target);

    //    addDebugMessage('event target: '+e.target);

        while (start) {
            var parent = start.getParent();
            if (!parent) {
                start = false;
                break;
            }
            area = parent.getProperty('area');
            start = parent;
            if (area) {
                break;
            }
        }
        if (!start) {
            return;
        }
        // Use parent form as data container or full parent area if no form found
        var form = $(e.target).getParent('form');
        if (form && start.hasChild(form)) {
            start = form;
        }

     //   addDebugMessage('data wrapper: '+form);
     //   addDebugMessage('data for JSON request: '+JSON.encode(data));

        //replaceElement($('content'),data);
        getJSONForElement(start,data,function(dit){
            //alert(dat);
            var hash = new Hash(dit);
            hash.each(function(value, key){
                if (!value.enabled) {
                    start.getElements('*[field='+key+']').addClass('disabled');
                }else{
                    start.getElements('*[field='+key+']').removeClass('disabled');
                }
                if (value.error) {
                    start.getElements('*[field='+key+']').addClass('error');
                }else{
                    start.getElements('*[field='+key+']').removeClass('error');
                }

                var subhash=new Hash(value);
                if(subhash.has('liveupdate')){
                    var liveupdate = new Hash(subhash.get('liveupdate'));
                    if(liveupdate.has('options')){
                        var selectedkey=0;
                        var oldOptions = start.getElements('*[field='+key+'] select option');
                        oldOptions.each(function (value2,key2){
                            if(value2.selected) selectedkey=value2.get('value');
                        });

                        var oldSelect = start.getElements('*[field='+key+'] select');
                        oldSelect.each(function (value2,key2){
                            value2.empty();
                            var newOptions = new Hash(liveupdate.get('options'));
                            newOptions.each(function(value3, key3){
                                //optionshtml+="<option value=\""+key2+"\"";
                                if(selectedkey==key3){
                                    value2.appendChild( new Element('option', {
                                        'value' : key3 ,
                                        'selected' : 'selected'
                                    }).appendText(value3) );
                                }else{
                                    value2.appendChild( new Element('option', {
                                        'value' : key3
                                    }).appendText(value3) );
                                }

                            });

                        });
                    }
                    if(liveupdate.has('value')){
                        var value4 = liveupdate.get('value');
                        start.getElements('*[field='+key+'] input').set('value',value4);
                        start.getElements('*[field='+key+'] span[name]').set('html',value4);
                    }
                }
            });
        })
    }
    //Add liveupdate handlers
    $$('.liveupdate select').addEvent('change',updateFields);
    $$('.liveupdate input').addEvent('change',updateFields);

    var Checkselect = function(event) {
        var container = this.getParent('.checkselect');
        if (!container) {
            addDebugMessage('geen checkselect container');
            return;
        }

        if (this.selectedIndex == 0) {
            return;
        }

        var checkContainer = new Element('div',{'class': 'checkbox'});
        var checkBox = new Element('input',{'type': 'checkbox'});
        var checkText = new Element('span',{'class': 'checkbox-text'});
        checkBox.name = this.name;
        checkBox.value = this.value;
    //    checkBox.set('checked',true);

        var text = this.options[this.selectedIndex].text;
    //    addDebugMessage('option text:'+text);

        checkText.set('text',text);
        checkBox.inject(checkContainer,'top');
        checkText.inject(checkContainer,'bottom');
        checkContainer.inject(this.getPrevious('.plus'),'before');
        checkBox.set('checked','1');
        this.options[this.selectedIndex] = null;
        this.selectedIndex = 0;


    }

    $$('form .checkselect select').addEvent('change',Checkselect);

    var resizeTextarea = function(event) {
        scrollheight = this.getScrollSize().y;
        areaheight = this.getSize().y;

        var newheight = areaheight;

        while (newheight < scrollheight) {
            newheight = newheight + 30;
        }
        if (newheight != areaheight) {
            this.setStyle('height',newheight);
        }
    }
    if ($$('form textarea')) {
        $$('form textarea').addEvent('keyup',resizeTextarea);
        $$('form textarea').fireEvent('keyup',resizeTextarea);
    }

    $$('input.datepicker').each( function(el){
        new DatePicker(el);
    });

   // if ($$('textarea.mceEditor')) {
   //     alert($type(tinymce));
   //     alert($type(tinyMCE));
        return;
   //
        // Douwe: ik disable nu de HTML editor in Firefox
        //if (Browser.Engine.gecko) {
         //   return;
        //}

    //    tinyMCE.init({
    //        mode: "textareas",
    //        theme: "simple",
    //        editor_selector: "mceEditor",
    //        plugins: "autoresize"
    //    });

// Hieronder is oude meuk voor nicEdit!

//        var i = 0;
//        var id = '';
//        $$('textarea.html').each( function(el){
//            id = 'HtmlTextarea' + i;
//            el.removeEvent('keyup',resizeTextarea);
//            el.set('id',id);
//
//            new nicEditor({
//                iconsPath : SITE_ROOT + 'apit_public/img/nicEditorIcons.gif',
//                buttonList : ['bold','link','unlink','ul'],
//                xhtml: true
//            }).panelInstance(id);
//
//            i++;
//        });

    }


//    addDebugMessage('AForm js updateFields gestart voor selects:'+$$('.liveupdate select').length);
//}

window.addEvent('domaltered',AFormEventHandlers);
