/***************************** 内容切换组件 *************************************/
Ext.ns('Ext.gzj');
Ext.gzj.ContentChange = (function(){
    return {
		isinit: false,
		//全局初始
        init: function() {
            Ext.apply(this, Ext.util.Observable.prototype);
			Ext.util.Observable.constructor.call(this);
        },
		//给网页元素注册响应事件
        register: function(menuid, menusel, contentid, contentsel, type, e, easing, duration,menucls) {
			if(!type)type=0;
			if(!e)e='mouseenter';
			if(!easing)easing='backOut';
			if(!duration)duration=1;
			if(!menucls)menucls='on';
			var menulist = Ext.get(menuid).select(menusel);
			var flag=true;
			var contentlist = Ext.get(contentid).select(contentsel);
			for(var i=0; i<menulist.getCount(); i++){
				contentlist.item(i).setDisplayed(true);
				contentlist.item(i).show();
			}
			for(var i=0; i<menulist.getCount(); i++){
				if(menulist.item(i).hasClass('on')){
					flag=false;
					this.showmenu(contentid,contentsel,i,1);
				}
				menulist.item(i).on(e, function(ev){
					var target=ev.getTarget(menusel,false,true);
					target.blur();
					if(target.hasClass(menucls)&&type!=3) {
						return;
					}
					var x=0;
					for(x; x<menulist.getCount(); x++){
						if(menulist.item(x).dom==target.dom)break;
					}
					target.radioClass(menucls);
					this.showmenu(contentid,contentsel,x,type,easing,duration);
				}, this);
			}
			if(flag){
				menulist.item(0).radioClass(menucls);
				this.showmenu(contentid,contentsel,0,1);
			}
			if(type==3) {
				this.hidemenu(menuid, contentid, contentsel);
			}
		},
		//方法：展开菜单的内容
        showmenu: function(contentid,contentsel,x,type,easing,duration) {
			var contentlist = Ext.get(contentid).select(contentsel);
			for(var i=0; i<contentlist.getCount(); i++){
				contentlist.item(i).setDisplayed(false);
			}
			contentlist.item(x).setDisplayed(true);
			switch (type) {
				case 1:
				    contentlist.item(x).stopFx().fadeIn({
						easing: easing,
						duration: duration
					});
					break;
				case 2:
				    contentlist.item(x).stopFx().fadeIn().stopFx().slideIn('t',{
						easing: easing,
						duration: duration
					});
					break;
				case 3:
				    contentlist.item(x).stopFx().fadeIn({
						easing: easing,
						duration: duration
					});
					break;
				default:
				    contentlist.item(x).stopFx().slideIn('t',{
						duration: 1
					}).stopFx().fadeIn();
			}		
        },
		//方法：隐藏菜单
        hidemenu: function(menuid, contentid, contentsel) {
			var canclose=true;
			var contentlist = Ext.get(contentid).select(contentsel);
			Ext.get(menuid).on('mouseleave', function(ev){			
				for(var i=0; i<contentlist.getCount(); i++){
					contentlist.item(i).setDisplayed(false);
				}
			}, this);
			for(var i=0; i<contentlist.getCount(); i++){
				contentlist.item(i).on('mouseenter', function(ev){
					canclose
				}, this);
			}
        }
    }
})();
Ext.onReady(Ext.gzj.ContentChange.init, Ext.gzj.ContentChange);
