/**
 * Based on http://www.leigeber.com/2008/05/horizontal-javascript-accordion-menu/
 *
 */  


Ext.BLANK_IMAGE_URL = 'ext-3.0.0/resources/images/default/s.gif';
 
// create namespace
Ext.ns('Ext.ux');

Ext.ux.MaritAccordion = Ext.extend(Ext.util.Observable, {
		sp: 3,
		st: 0,
		t: 3,
		m: 0,
		sa: new Array(),
		l: 0,
		w: 0,
		sw: 0,
		ot: 0,
		sl: 0,
		elId: '',
		newTargetHeight: 0,
		newInnerTargetHeight: 0,
		newHeaderH2Height: 0,
		sl: 1,
		
		constructor: function(elId, config) {
				config = config || {};				
				Ext.apply(this, config);
				
				Ext.ux.MaritAccordion.superclass.constructor.call(this, config);
				this.sp = 3;
				this.st = 0;
				this.t = 3;
				this.m = 0;
				this.sa = new Array();
				this.l = 0;
				this.w = 0;
				this.sw = 0;
				this.ot = 0;
				this.sl = 0;
				this.elId = '';
				this.newTargetHeight = 0;
				this.newInnerTargetHeight = 0;
				this.newHeaderH2Height = 0;
				this.sl = 1;
				this.elId = elId;
				this.initAccordion();
		},
		
		initAccordion: function() {
			this.m=Ext.get(this.elId);
			var elimgHeight = 0;
			this.m.select('div.accordionItem', true).each(function(e){
				e.select('img').each(function(elimg){
					if(this.newHeaderH2Height<elimg.getHeight()){
						this.newHeaderH2Height = elimg.getHeight();
					}
				}, this);
			}, this);
			this.m.select('div.accordionItem', true).each(function(e){
				e.select('img').each(function(elimg){
					elimg.parent('h2').setHeight(this.newHeaderH2Height+'px');
				}, this);
			
				e.dom.id = e.dom.id+this.elId;
				element = Ext.get(e.dom.id);
				this.sa.push(element);
				var eHeight = element.getHeight();
				if(eHeight > this.newTargetHeight){
					this.newTargetHeight = eHeight;
				}
				element.select('p').each(function(ei){	
					ei.dom.id = ei.dom.id+this.elId;		
					elementi = Ext.get(ei.dom.id);
					var eInnerHeight = elementi.getHeight();
					if(eInnerHeight > this.newInnerTargetHeight){
						this.newInnerTargetHeight = eInnerHeight;
					}
				}, this);
				if(element.hasClass('actAccordionItem')){
					this.sl = this.sa.length;
				}				
			}, this);
			//if(Ext.isIE){
					this.newTargetHeight += 14;
					this.newInnerTargetHeight += 14	;
			//}
			this.st = this.newTargetHeight; 
			this.l = this.sa.length; 
			this.w = (this.l*this.newTargetHeight)-((this.l-1)*this.newInnerTargetHeight);
			this.sw = this.w/this.l;
			this.ot = Math.floor((this.w-this.st)/(this.l-1)); 
			var i=0;
			for(i;i<this.l;i++){
				s=this.sa[i]; 
				s.setHeight(this.sw); 
				this.timer(s)
			}
			if(this.sl!=null){
				var thisObject = this;
				this.m.timer=setInterval(function(){thisObject.slide(thisObject.sa[thisObject.sl-1])},thisObject.t);
			}
		},
		
		timer:function(s){
			s.addListener('mouseover', function(){
				clearInterval(this.m.timer);
				var thisObject = this;
				this.m.timer=setInterval(function(){thisObject.slide(s)},thisObject.t);
			}, this);
		},
		slide:function(s){
			var cw=parseInt(s.getHeight(),'10');
			if(cw<this.st){
				var owt=0; 
				var i=0;
				for(i;i<this.l;i++){
					if(this.sa[i]!=s){
						var o,ow; 
						var oi=0; 
						o=this.sa[i]; 
						ow=parseInt(o.getHeight(),'10');
						if(ow>this.ot){
							oi=Math.floor((ow-this.ot)/this.sp); 
							if(oi>0){
								oi=oi;
							} else {
								oi=1;
							}
							o.first('div.backgroundImageWrap').setStyle('background-position', '-10000px -10000px');
							o.setHeight(ow-oi);				
							o.setStyle('background-position', 'left '+(ow-oi-60)+'px');			
						}
					
						owt=owt+(ow-oi)
					}
				}
				s.setHeight(this.w-owt);
				s.setStyle('background-position', 'left '+(this.w-owt-60)+'px');	
				s.first('div.backgroundImageWrap').setStyle('background-position', 'bottom right');
			}else{
				clearInterval(this.m.timer);
			}
		}


});
