/**
 * @author bhaidaya
 */
//This focuses the first field on a tab after selecting it if one is available
Ext.override(Ext.TabPanel, {
    afterRender: function(){
        Ext.TabPanel.superclass.afterRender.call(this);
        this.on({
            'tabchange': {
                fn: function(tabpanel, panel){
                    if (!Ext.isEmpty(this.skippedfocusonfirstrender)) {
                        var field = panel.el.child('input');
                        if (!Ext.isEmpty(field)) {
                            field.focus();
                        }
                    }
                    else {
                        this.skippedfocusonfirstrender = true;
                    }
                    
                }
            }
        });
    }
});

//http://blog.stevenlevithan.com/archives/faster-trim-javascript
String.prototype.trim = function(){
    //return this.replace(/^\s*|\s*$/, "");
    return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
};



//http://www.sencha.com/forum/showthread.php?39161-2.1svn-2.2-Checkbox-RadioGroup-getName-getValue-return-nothing-isFormField-true&p=267545&viewfull=1#post267545
Ext.override(Ext.form.RadioGroup, {
    getName: function(){
        if (this.rendered) {
            return this.items.first().getName();
        }
        else {
            var name;
            Ext.each(this.items, function(item){
                name = item.name;
                return Ext.isEmpty(name);
            });
            return name || '';
        }
    },
    
    getValue: function(){
        var v;
        var inputVal;
        
		if (this.rendered) {
			this.items.each(function(item){
				v = item.checked || false;
				inputVal = item.inputValue || v;
				return !v;
			});
		}
		else {
			Ext.each(this.items, function(item){
				v = item.checked || false;
				inputVal = item.inputValue || v;
				return !v;
			});
		}
        return inputVal;
    },
    
    setValue: function(v){
        if (this.rendered) {
            this.items.each(function(item){
                item.setValue(item.getRawValue() == v);
            });
        }
        else {
            for (k in this.items) {
                this.items[k].checked = this.items[k].inputValue == v;
            }
        }
    }
});

//Instead of having every field include a parameter include it in the prototype eg. altFormats: 'n/j/Y|m-d-Y|n-j-Y|n/j/y|m-d-y|n-j-y',
// default formats include 'm/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d'
Ext.form.DateField.prototype.altFormats += '|n/d/Y g:i:s A|m/d/Y g:i:s A|n/j/Y g:i:s A|n-j-Y|n-j-y'; // makes dates like 7/27/1944 1:00:00 AM, 07/27/1944 1:00:00 AM, 7/7/1944 1:00:00 AM readable
