var TimeToFade = 700.0;

function fade(eid, dir)
{
  var element = document.getElementById(eid);
  if(element == null)
    return;
   
  var nullState = -2;
  if (dir == "out") {
	  nullState = 2;
  }
  if(element.FadeState == null)
  {
    element.FadeState = nullState;
  }
   
  if(element.FadeState == 1 || element.FadeState == -1)
  {
    element.FadeState = element.FadeState == 1 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
  }
  else
  {
    element.FadeState = element.FadeState == 2 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade;
    setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 33);
  }  
}

function animateFade(lastTick, eid)
{  
  var curTick = new Date().getTime();
  var elapsedTicks = curTick - lastTick;
 
  var element = document.getElementById(eid);
 
  if(element.FadeTimeLeft <= elapsedTicks)
  {
    var newOpac = element.FadeState == 1 ? '1' : '0';
	setAlpha(element, newOpac, element.FadeState);
    element.FadeState = element.FadeState == 1 ? 2 : -2;
    return;
  }
 
  element.FadeTimeLeft -= elapsedTicks;
  var newOpVal = element.FadeTimeLeft/TimeToFade;
  if(element.FadeState == 1)
    newOpVal = 1 - newOpVal;
 
  setAlpha(element, newOpVal, element.FadeState);
 
  setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
}

function setAlpha(el, newOpVal, fadeState) {
	el.style.opacity = newOpVal;
	el.style.MozOpacity = newOpVal;
	el.style.KhtmlOpacity = newOpVal;
	//el.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
	if (newOpVal > 0.02 && fadeState == 1) {
		el.style.filter = "none";
	} else if (newOpVal < 0.9 && fadeState != 1) {
		el.style.filter = 'alpha(opacity = ' + (0) + ')';
	}
}

function buildNavBar() {
	var navUl = document.getElementById("navbar");	
	var navLinks = navUl.getElementsByTagName("a");
	var totalLinks = navLinks.length;
	for (var i = 0; i < totalLinks; i++) {
		var img = navLinks[i].getElementsByTagName("img")[0];
		img.id = "nav-img-" + i;
		navLinks[i].id = "nav-" + i;
		if (navLinks[i].className == "selected") {
			//do nothing
		} else {
			navLinks[i].onmouseover = function() {
				fade("nav-img-" + this.id.slice(4,5), "in");
			}
			navLinks[i].onfocus = function() {
				fade("nav-img-" + this.id.slice(4,5), "in");
			}
			navLinks[i].onmouseout = function() {
				fade("nav-img-" + this.id.slice(4,5), "out");
			}
			navLinks[i].onblur = function() {
				fade("nav-img-" + this.id.slice(4,5), "out");
			}
			setAlpha(document.getElementById("nav-img-" +navLinks[i].id.slice(4,5)), 0, 2); // set to 0 to begin with
			navLinks[i].getElementsByTagName("span")[0].style.display = "block";
		}
	}
}

function externalLinks() {
	//make external links open in new window
	var links = document.getElementsByTagName("a");
	var max_links = links.length;

	for (i = 0; i < max_links; i++) {
		var curClass = links[i].className;
		if (curClass.indexOf("external") >= 0) {
			//found link
			var href = links[i].getAttribute("href");
			
			links[i].openurl = href
			links[i].onclick = function() {
				return !window.open(this.openurl);
			}
			links[i].onkeydown = function() {
				return !window.open(this.openurl);
			}
		}
	}
}

function addLoadEvent(func) { 
	  var oldonload = window.onload;
	  if (typeof window.onload != 'function') { 
	    window.onload = func; 
	  } else { 
	    window.onload = function() { 
	      if (oldonload) { 
	        oldonload(); 
	      } 
	      func(); 
	    } 
	  } 
} 

function preloadImages() {
	if (document.images) {
    	preload_image_object = new Image();
    	// set image url
    
		image_url = new Array("/assets/header/search_bg_active.png",
							  "/assets/header/search_bg_suggest.png",
							  "/assets/header/search_suggest_bg.png",
							  "/assets/header/search_suggest_end.png",
							  
							  "/assets/nav/tooltip_bg.png",
							  "/assets/nav/contact_icon.gif",
							  "/assets/nav/documents_icon.gif",
							  "/assets/nav/journal_icon.gif",
							  "/assets/nav/links_icon.gif",
							  "/assets/nav/photos_icon.gif",
							  "/assets/nav/portfolio_icon.gif",
							  
							  "/assets/featured/tag_bg.png",
							  "/assets/featured/tag_bg_right.png",
							  
							  "/assets/misc/help_arrow.png",
							  
							  "/assets/misc/star_left_off.png",
							  "/assets/misc/star_right_off.png",
							  "/assets/misc/star_left_selected.png",
							  "/assets/misc/star_right_selected.png",
							  "/assets/misc/star_left_on.png",
							  "/assets/misc/star_right_on.png",
							  
							  "/assets/links/link_tooltip.png");

		var images = image_url.length;
	
    	for (var i=0; i<images; i++)  {
    	     preload_image_object.src = image_url[i];
    	}
	}
}

addLoadEvent(buildNavBar);
addLoadEvent(externalLinks);
addLoadEvent(preloadImages);