function Megasound(){
	
	var offset = 0;
	var accordionContainer = '';
	var sections = new Array();
	var activeSection = new Object;
	var navigationContainer = '';
	var activeSectionNumber = 0;
	var activeSectionIdNo = 0;


    this.init = function(){	
    	offset = 35; // INIT OFFSET BETWEEN ELEMENTS
    	accordionContainer = dojo.byId('headerAnimation');
    	navigationContainer = dojo.byId('mainNavigationBG');
    	
		for (var  i  = 0;  i< dojo.query('#headerAnimation > *').length-2;  i++)  {
			sections.push(dojo.query('#headerAnimation > *')[i]);
		}
		
		activeSection = self.getElementByClass("active", accordionContainer);
		
		if(activeSection == undefined) {
			activeSection = sections[0];
		}
		
		for (var  i  = 0;  i<sections.length;  i++)  {
			self.alphaToZero(dojo.query('#'+sections[i].id+' > *')[1], true);
			self.alphaToZero(dojo.query('#'+sections[i].id+' > *')[2], true);
			
			// Hide Navigations
			if(dojo.byId("navigation_"+(i+1))) {
				dojo.byId("navigation_"+(i+1)).style.display = "none";
				self.alphaToZero("navigation_"+(i+1), true);
			}
		}
		
		self.alphaToOne(dojo.query('#'+activeSection.id+' > *')[2], true);
		
		// show current navigation
		activeSectionIdNo = parseInt(activeSection.id.split("_")[1]);
		if(dojo.byId("navigation_"+(activeSectionIdNo))) {
			dojo.byId("navigation_"+(activeSectionIdNo)).style.display = "block";
			self.alphaToOne("navigation_"+(activeSectionIdNo), true);
		}

		self.showSection(activeSection.id, true);
		self.registerMouseover();
		//self.registerMouseout();
		
		dojo.style(navigationContainer, "backgroundColor", dojo.style(dojo.query('#'+activeSection.id+' > *')[1], "backgroundColor"));
		//navigationContainer.style.background-color = activeSection.children[0].style.background-color;
    }
    
    this.alphaToZero = function(element, zeroTiming) {
    	//alert(zeroTiming);
    	if(zeroTiming) 
    		var timing = 1;
    	else 	
    		var timing = 500;
    	
    	 //alert(section.id + "-" + leftOffset);
		 var fxAlphaToZero = dojo.animateProperty({
	            node: element,
	            duration: timing,
				easing: dojo.fx.easing.quadInOut,
				//easing: dojo.fx.easing.bounceOut,
				//easing: dojo.fx.easing.quadInOut,
	            properties: {
					opacity: {
	                    end: 0
	                }
	            },
				onEnd: function(){
	    		}
	     });	
		 fxAlphaToZero.play();
    }
    
    this.alphaToOne = function(element, zeroTiming) {
    	//alert(zeroTiming);
    	if(zeroTiming) 
    		var timing = 1;
    	else 	
    		var timing = 500;
    	
    	 //alert(section.id + "-" + leftOffset);
		 var fxAlphaToOne = dojo.animateProperty({
	            node: element,
	            duration: timing,
				easing: dojo.fx.easing.quadInOut,
				//easing: dojo.fx.easing.bounceOut,
				//easing: dojo.fx.easing.quadInOut,
	            properties: {
					opacity: {
	                    end: 1
	                }
	            },
				onEnd: function(){
	    		}
	     });	
		 fxAlphaToOne.play();
    }
    
    this.registerMouseover = function() {
		for (var  i  = 0;  i < sections.length;  i++)  {
			var section = sections[i];
			
			dojo.connect(section, 'onmouseover', function(e){
				megasound.showSection(e.currentTarget.id);
			});
		}
    }
    
    this.registerMouseout = function() {
		dojo.connect(accordionContainer, 'onmouseleave', function(e){
			megasound.showActiveSection();
		});
    }
    
    this.showActiveSection = function() {
    	self.showSection(activeSection.id);
    }
    
    this.showSection = function(section_id, zeroTiming) {
    	var before = true;
    	var leftOffset = 0;
    	var rightOffset = 0;
    	
    	self.toSectionColor(section_id, navigationContainer);
		self.alphaToOne(dojo.query('#'+section_id+' > *')[2]);
		
		//show current navigation
		var idNo = parseInt(section_id.split("_")[1]);
		if(dojo.byId("navigation_"+(idNo))) {
			dojo.byId("navigation_"+(idNo)).style.display = "block";
			self.alphaToOne("navigation_"+(idNo));
		}
		
		
		self.alphaToOne(dojo.query('#'+section_id+' > *')[1]);
		
		for (var  i  = 0;  i<sections.length;  i++)  {
			if(sections[i].id != section_id) {
				self.alphaToZero(dojo.query('#'+sections[i].id+' > *')[1]);
				self.alphaToZero(dojo.query('#'+sections[i].id+' > *')[2]);
				self.leftMargin(dojo.query('#'+sections[i].id+' > *')[2], 0)
				
				// hide other navigations
				if(dojo.byId("navigation_"+(i+1))) {
					dojo.byId("navigation_"+(i+1)).style.display = "none";
					self.alphaToZero("navigation_"+(i+1));
				}
			}
		}
		
		for (var  i  = 0;  i < sections.length;  i++)  {
			var section = sections[i];
			
			if(before) {
				leftOffset = i * offset;
				self.moveTo(section, leftOffset, zeroTiming)
			}
			else {
				rightOffset = accordionContainer.clientWidth - ((sections.length - i) * offset);
				self.moveTo(section, rightOffset, zeroTiming)
			}
			if(section.id == section_id) {
				before = false;
				activeSectionNumber = i;
			}
		}
		
		if (!dojo.isIE)
		self.leftMargin(dojo.query('#'+section_id+' > *')[2], -(activeSectionNumber * offset));
		
		
    }
    this.leftMargin = function(element, margin, zeroTiming) {
    	//alert(zeroTiming);
    	if(zeroTiming) 
    		var timing = 1;
    	else 	
    		var timing = 500;
    	
    	 //alert(section.id + "-" + leftOffset);
		 var fxMoveTo = dojo.animateProperty({
	            node: element,
	            duration: timing,
				easing: dojo.fx.easing.quadInOut,
				//easing: dojo.fx.easing.bounceOut,
				//easing: dojo.fx.easing.quadInOut,
	            properties: {
					marginLeft: {
	                    end: margin
	                }
	            },
				onEnd: function(){
	            	dojo.byId('headerAnimation').style.visibility = "visible";
	    		}
	     });	
		 fxMoveTo.play();
    }
    
    this.moveTo = function(section, leftOffset, zeroTiming) {
    	//alert(zeroTiming);
    	if(zeroTiming) 
    		var timing = 1;
    	else 	
    		var timing = 500;
    	
    	 //alert(section.id + "-" + leftOffset);
		 var fxMoveTo = dojo.animateProperty({
	            node: section.id,
	            duration: timing,
				easing: dojo.fx.easing.quadInOut,
				//easing: dojo.fx.easing.bounceOut,
				//easing: dojo.fx.easing.quadInOut,
	            properties: {
					left: {
	                    end: leftOffset
	                }
	            },
				onEnd: function(){
	    		}
	     });	
		 fxMoveTo.play();
    }
    
    this.toSectionColor = function(section_id, target) {
    	//alert(zeroTiming);
    	var color = dojo.style(dojo.query('#'+section_id+' > *')[1], "backgroundColor")
    	//alert(color);
    	
		var fxMoveTo = dojo.animateProperty({
	            node: target.id,
	            duration: 500,
				easing: dojo.fx.easing.quadInOut,
	            properties: {
				backgroundColor: {
	                    end: color
	                }
	            },
				onEnd: function(){
	    		}
	     });	
		 fxMoveTo.play();
    }
    
	this.getElementByClass = function(searchClass,node,tag) {
		var classElements = new Array();
		if ( node == null )
			node = document;
		if ( tag == null )
			tag = '*';
		var els = node.getElementsByTagName(tag);
		var elsLen = els.length;
		var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
		for (i = 0, j = 0; i < elsLen; i++) {
			if ( pattern.test(els[i].className) ) {
				classElements[j] = els[i];
				j++;
			}
		}
		return classElements[0];
	}
    
    var self = this;
}

var megasound = new Megasound();


dojo.addOnLoad(function(){
	//megasound.init();
});


