/*
	+++++++++++++++++++++++++++++++++
	+ Javascript by S.D.S.Korebrits +
	+++++++++++++++++++++++++++++++++
*/
//Global Parameters
var colorFadeTimer;
var slideTimer;
//Document Ready
$(document).ready(function () {
	//Hijax Attach Functions
	attachScript();
});  
//Attach Script Function
function attachScript(){
	var chosen=document.getElementById('currentTab').innerHTML;
	var chosenSub=document.getElementById('currentSub').innerHTML;
	var pageLoad=true;
	//Set on Page Load
	action(chosen,chosenSub,pageLoad);
	//Set on click & Mouse Over
	if (document.getElementsByTagName){
	    var links = document.getElementsByTagName("a");
		//Attach
	    for (var i=0; i < links.length; i++) {
	      if (links[i].className.match("menu")) {
	        	links[i].onclick = function() {
		        	var temp=this.innerHTML;
		        	temp=temp.substr(1,temp.length);
		        	var start=temp.search(/>/g);
		        	var end=temp.search(/</g);
		        	temp=temp.substr(start+1,end-start-1);
		        	action(temp,chosenSub,pageLoad);
		            //return false;
	        	};
	        	links[i].onmouseover = function() {
		        	var temp=this.innerHTML;
		        	temp=temp.substr(1,temp.length);
		        	var start=temp.search(/>/g);
		        	var end=temp.search(/</g);
		        	temp=temp.substr(start+1,end-start-1);
		        	action(temp,chosenSub,pageLoad);
	        	};
	      }
	    }
	    /*
	    		mouseOut on Container
	    		mouseIn on Logo,Content
	    */
	    var li=document.getElementsByTagName('li');
	    for(var i=0;i<li.length;i++){
	    	if(li[i].className.match('menuLogoMain')){
	    		$(li[i]).mouseenter(function(){action(chosen,chosenSub,pageLoad)});
	    	} 
	    }
	    $('#content').mouseenter(function(){action(chosen,chosenSub,pageLoad)});
	    $('#container').mouseleave(function(){action(chosen,chosenSub,pageLoad)});
	 }
	 pageLoad=false;
}
//Function Action
function action(menuItem,subItem,load){
	//all elements
	var elements=new Array("#linksABOUT","#linksEDUCATION","#linksRESEARCH","#linksPUBLICITY","#linksPROTOSPACE","#linksPROTOFAB");
	var targetElement="#links"+menuItem;
	var currentElement="";
	var step=0;
	for(var i=0;i<elements.length;i++){
		var ul="ul"+elements[i];
		var left=$(ul).css('margin-left');
		if(left=="0px"){
			var currentElement=elements[i];
			break;
		}
	}
	//Change Element
	if(targetElement=='#links'){
		//slide out
		if(currentElement!=""){
			changeClass(menuItem);
			slideByTime(elements,targetElement,step,slideTimer);
		}
	}
	else if(currentElement!=targetElement||load==true){
		//Hide subItem
		var links = document.getElementsByTagName("a");
		for (var i=0; i < links.length; i++) {
			if(links[i].className.match("subMenuSelected")){
				$(links[i]).removeClass("subMenuSelected");
				$(links[i]).addClass("subMenuDefault");
				break;
			}
		}
		changeClass(menuItem);
		$(currentElement).fadeOut(200,'');
		$(targetElement).fadeIn(200,'');
		clearTimeout(colorFadeTimer);
		clearTimeout(slideTimer);
		slideByTime(elements,targetElement,step,slideTimer);
		//Show Subitem
		var linkContent;
		for (var i=0; i < links.length; i++) {
			if(links[i].className.match("subMenuDefault")){
				linkContent=links[i].innerHTML;
				if(linkContent==subItem){
					colorFadeTimer=setTimeout(function(){$(links[i]).switchClass( "subMenuDefault", "subMenuSelected", 1000 );},700);
					break;
				}
			}
		}
	}
}
//Change Class
function changeClass(element){
	var links = document.getElementsByTagName("a");
	for (var i=0; i < links.length; i++) {
	      //Change Class
	      if (links[i].className.match("menu")) {
	      	var temp=links[i].innerHTML;
		    temp=temp.substr(1,temp.length);
		    var start=temp.search(/>/g);
		    var end=temp.search(/</g);
		    temp=temp.substr(start+1,end-start-1);
		    if(temp==element){
		    	$(links[i]).addClass("menuSelected");
		    }
		    else{
		    	$(links[i]).removeClass("menuSelected");
		    }
	      }
	}
}
//Slide By Time
function slideByTime(elements,targetElement,step,timer){
	var totalTime=300;
	var maxLeft=1040;
	var amount=30;
	var timeStep=totalTime/(amount-1);
	if(timeStep<20){
		timeStep=20;
		amount=totalTime/timeStep;
	}
	var leftStep=maxLeft/(amount-1);
	step+=1;
	if(step<amount){
		slideInOut(elements,targetElement,leftStep*step,maxLeft);
		timer=setTimeout(function(){slideByTime(elements,targetElement,step,timer);},timeStep);	
	}
}
//SlideInOut
function slideInOut(elements,targetElement,value,maxValue){
	for(var i=0;i<elements.length;i++){
		if(elements[i]!=targetElement){
			//slideOut
			slide(elements[i],-value);
		}
		else{
			//slideIn
			slide(targetElement,-maxValue+value);
			}	
		}
}
//Slide
function slide(element,value){
	var left=value+"px";
	$(element).css('margin-left',left);
}
