/**
 * Rozszerzenie do Ext-ów, które umożliwia automatyczne submitowanie formuarzy klawiszem enter.
 * Realizowane następująco - jeżeli zostanie wciśnięty enter, to automatycznie wykonywane jest wciśnięcie
 * przycisku o typie submit, jeżeli taki istnieje. Jeżeli nie istnieje, to jest wywoływany event 'enterPressed' na formularzu,
 * który już formularz musi obsłużyć
 * 
 * @author Piotr Krokowski
 * @copyright LGPL
 * @version 1.0
 **/

Ext.override(Ext.form.FormPanel, {
	initFields : function(){
        var f = this.form;
        var formPanel = this;
        var fn = function(c){
            if(c.doLayout && c != formPanel){
                Ext.applyIf(c, {
                    labelAlign: c.ownerCt.labelAlign,
                    labelWidth: c.ownerCt.labelWidth,
                    itemCls: c.ownerCt.itemCls
                });
                if(c.items){
                    c.items.each(fn);
                }
            }else if(c.isFormField){
            	try {
	            	c.on('specialkey', function(field, event) {
	            		try {
		            		if ( event.getKey() == event.RETURN || event.getKey() == event.ENTER ) {
		            			try {
		            				for (i=0; i<formPanel.buttons.length; i++) {
			            				if (formPanel.buttons[i].type=='submit') {
			            					formPanel.buttons[i].handler.call(formPanel.buttons[i].scope || formPanel.buttons[i], formPanel.buttons[i], event);
			            					return ;
			            				}
		            				}
			            		} catch (e) {
	            					console.warn(e);
	            				}
		            			try {
	            					// Nie znaleźliśmy nic do uruchomienia, spróbujmy w formularzu
	            					formPanel.fireEvent('enterPressed');
	            				} catch(e) {
	            					console.warn(e);
	            				}
		            		}
	            		} catch(e) {
	            			console.warn(e);
	            		}
	        		});
            	} catch (e) {
            		console.warn(e);
            	}
                f.add(c);
            }
        }
        this.items.each(fn);
    }
});
