Ext.SSL_SECURE_URL = './funcoes/ext/resources/images/default/s.gif';
Ext.BLANK_IMAGE_URL = './funcoes/ext/resources/images/default/s.gif';

/*
if(Ext.grid.GridPanel){
   Ext.grid.GridPanel.prototype.autoExpandMax = 10000;
}
*/

// início tradução para GroupingView
if(Ext.grid.GroupingView){
	Ext.apply(Ext.grid.GroupingView.prototype, {
		groupByText : "Agrupar por este campo",
		showGroupsText : "Mostrar grupo"
	});
}
// fim tradução para GroupingView

// início função para pegar os campos não selecionados do TreePanel
if(Ext.tree.TreePanel){
	Ext.apply(Ext.tree.TreePanel.prototype, {
		getUnChecked : function(a, startNode){
			startNode = startNode || this.root;
			var r = [];
			var f = function(){
				if(!this.attributes.checked){
					r.push(!a ? this : (a == 'id' ? this.id : this.attributes[a]));
				}
			};
			startNode.cascade(f);
			return r;
		}
	});
}
// fim função para pegar os campos não selecionados do TreePanel

// início correção para select com muitos dados, IE
Ext.Shadow.Pool = function(){
    var p = [];
    var markup = Ext.isIE ?
                 '<div></div>' :
                 '<div class="x-shadow"><div class="xst"><div class="xstl"></div><div class="xstc"></div><div class="xstr"></div></div><div class="xsc"><div class="xsml"></div><div class="xsmc"></div><div class="xsmr"></div></div><div class="xsb"><div class="xsbl"></div><div class="xsbc"></div><div class="xsbr"></div></div></div>';
    return {
        pull : function(){
            var sh = p.shift();
            if(!sh){
                sh = Ext.get(Ext.DomHelper.insertHtml("beforeBegin", document.body.firstChild, markup));
                sh.autoBoxAdjust = false;
            }
            return sh;
        },

        push : function(sh){
            p.push(sh);
        }
    };
}();
// fim correção para select com muitos dados, IE

// início função para retirar sombras das windows
if(Ext.Window){
	Ext.Window.prototype.shadow = false;
}
// fim função para retirar sombras das windows

// início função para alterar tempo limite da conexão ajax
if(Ext.data.Connection){
	Ext.data.Connection.prototype.timeout = 5*60*1000;
}
// fim função para alterar tempo limite da conexão ajax

// início correção para vtype de email
Ext.apply(Ext.form.VTypes,{
	email: function(val,field){
	    var email = /^([a-z0-9\_\-]+)(\.[a-z0-9\_\-]+)*@([a-z0-9\_\-]+\.){1,5}([a-z]){2,4}$/;
		return email.test(val);
	},
	emailText: 'Este campo deve ser um endere&ccedil;o de e-mail v&aacute;lido, no formado "usuario@dominio.com.br"',
	emailMask: /[a-z0-9\_\.\-\@]/i
});
// fim correção para vtype de email

// início função para alterar a cor do loadMask, requer alteração no css
Ext.Element.addMethods(
function(){
    var VISIBILITY = "visibility",
        DISPLAY = "display",
        HIDDEN = "hidden",
        NONE = "none",
	    XMASKED = "x-masked",
		XMASKEDRELATIVE = "x-masked-relative",
        data = Ext.Element.data;
		
	return {
	    isVisible : function(deep) {
	        var vis = !this.isStyle(VISIBILITY,HIDDEN) && !this.isStyle(DISPLAY,NONE),
	        	p = this.dom.parentNode;
	        if(deep !== true || !vis){
	            return vis;
	        }	        
	        while(p && !/body/i.test(p.tagName)){
	            if(!Ext.fly(p, '_isVisible').isVisible()){
	                return false;
	            }
	            p = p.parentNode;
	        }
	        return true;
	    },
	    isDisplayed : function() {
	        return !this.isStyle(DISPLAY, NONE);
	    },
	    enableDisplayMode : function(display){	    
	        this.setVisibilityMode(Ext.Element.DISPLAY);
	        if(!Ext.isEmpty(display)){
                data(this.dom, 'originalDisplay', display);
            }
	        return this;
	    },
	    mask : function(msg, msgCls){
		    var me = this,
		    	dom = me.dom,
		    	dh = Ext.DomHelper,
		    	EXTELMASKMSG = "ext-el-mask-msg",
                el, 
                mask;
		    	
	        if(me.getStyle("position") == "static"){
	            me.addClass(XMASKEDRELATIVE);
	        }
	        if((el = data(dom, 'maskMsg'))){
	            el.remove();
	        }
	        if((el = data(dom, 'mask'))){
	            el.remove();
	        }
	
            mask = dh.append(dom, {cls : "ext-el-mask2"}, true);
	        data(dom, 'mask', mask);
	
	        me.addClass(XMASKED);
	        mask.setDisplayed(true);
	        if(typeof msg == 'string'){
                var mm = dh.append(dom, {cls : EXTELMASKMSG, cn:{tag:'div'}}, true);
                data(dom, 'maskMsg', mm);
	            mm.dom.className = msgCls ? EXTELMASKMSG + " " + msgCls : EXTELMASKMSG;
	            mm.dom.firstChild.innerHTML = msg;
	            mm.setDisplayed(true);
	            mm.center(me);
	        }
	        if(Ext.isIE && !(Ext.isIE7 && Ext.isStrict) && me.getStyle('height') == 'auto'){ // ie will not expand full height automatically
	            mask.setSize(undefined, me.getHeight());
	        }
	        return mask;
	    },
	    unmask : function(){
		    var me = this,
                dom = me.dom,
		    	mask = data(dom, 'mask'),
		    	maskMsg = data(dom, 'maskMsg');
	        if(mask){
	            if(maskMsg){
	                maskMsg.remove();
                    data(dom, 'maskMsg', undefined);
	            }
	            mask.remove();
                data(dom, 'mask', undefined);
	        }
	        me.removeClass([XMASKED, XMASKEDRELATIVE]);
	    },
	    isMasked : function(){
            var m = data(this.dom, 'mask');
	        return m && m.isVisible();
	    },
	    createShim : function(){
	        var el = document.createElement('iframe'),        	
	        	shim;
	        el.frameBorder = '0';
	        el.className = 'ext-shim';
	        if(Ext.isIE && Ext.isSecure){
	            el.src = Ext.SSL_SECURE_URL;
	        }
	        shim = Ext.get(this.dom.parentNode.insertBefore(el, this.dom));
	        shim.autoBoxAdjust = false;
	        return shim;
	    }
    };
}());
// fim função para alterar a cor do loadMask, requer alteração no css