function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}

sfHover = function() {
	var sfEls = document.getElementById("navul").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}

function colorboxImages()
{
	$('#content img').filter(function() { return !$(this).parent('a').length == 1 }).each(function()
	{
		var img = $(this).attr("src").replace("mids", "large");
		$(this).wrap($('<a href="'+img+'" class="colorbox" rel="contentimages" name="'+$(this).attr('title')+'"/>'));
	}); 
}

if (window.attachEvent) window.attachEvent("onload", sfHover);

/* Functions for active alerts swapping on home page */
function details(id)
{
	thisDiv = document.getElementById(id);
	
	//close others first
	var i = 1;
	while (document.getElementById("alert"+i)) {
		if ("alert"+i != id) {
			if (document.getElementById("alert"+i).style.display != 'none') {
				changeMarker("alert"+i,'+','-');
				new Effect.SlideUp("alert"+i, {duration:0.15,queue:'front'});
			}
		}
		i++;
	}
	changeMarker(id,'+','-');
	new Effect.toggle(thisDiv,'slide',{duration:0.35});

}


/* used in map and home page */
function changeMarker(parentDiv,state1,state2)
{
	marker = document.getElementById(parentDiv+"Marker");
 	if (marker) {
 		if (marker.innerHTML == state1) {
 			marker.innerHTML = state2;
 		} else {
 			marker.innerHTML = state1;
 		}
 	}


}

var BrowserDetect = {
 init: function () {
  this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
  this.version = this.searchVersion(navigator.userAgent)
   || this.searchVersion(navigator.appVersion)
   || "an unknown version";
  this.OS = this.searchString(this.dataOS) || "an unknown OS";
 },
 searchString: function (data) {
  for (var i=0;i<data.length;i++) {
   var dataString = data[i].string;
   var dataProp = data[i].prop;
   this.versionSearchString = data[i].versionSearch || data[i].identity;
   if (dataString) {
    if (dataString.indexOf(data[i].subString) != -1)
     return data[i].identity;
   }
   else if (dataProp)
    return data[i].identity;
  }
 },
 searchVersion: function (dataString) {
  var index = dataString.indexOf(this.versionSearchString);
  if (index == -1) return;
  return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
 },
 dataBrowser: [
  {
   string: navigator.userAgent,
   subString: "Chrome",
   identity: "Chrome"
  },
  {  string: navigator.userAgent,
   subString: "OmniWeb",
   versionSearch: "OmniWeb/",
   identity: "OmniWeb"
  },
  {
   string: navigator.vendor,
   subString: "Apple",
   identity: "Safari",
   versionSearch: "Version"
  },
  {
   prop: window.opera,
   identity: "Opera"
  },
  {
   string: navigator.vendor,
   subString: "iCab",
   identity: "iCab"
  },
  {
   string: navigator.vendor,
   subString: "KDE",
   identity: "Konqueror"
  },
  {
   string: navigator.userAgent,
   subString: "Firefox",
   identity: "Firefox"
  },
  {
   string: navigator.vendor,
   subString: "Camino",
   identity: "Camino"
  },
  {  // for newer Netscapes (6+)
   string: navigator.userAgent,
   subString: "Netscape",
   identity: "Netscape"
  },
  {
   string: navigator.userAgent,
   subString: "MSIE",
   identity: "Explorer",
   versionSearch: "MSIE"
  },
  {
   string: navigator.userAgent,
   subString: "Gecko",
   identity: "Mozilla",
   versionSearch: "rv"
  },
  {   // for older Netscapes (4-)
   string: navigator.userAgent,
   subString: "Mozilla",
   identity: "Netscape",
   versionSearch: "Mozilla"
  }
 ],
 dataOS : [
  {
   string: navigator.platform,
   subString: "Win",
   identity: "Windows"
  },
  {
   string: navigator.platform,
   subString: "Mac",
   identity: "Mac"
  },
  {
      string: navigator.userAgent,
      subString: "iPhone",
      identity: "iPhone/iPod"
     },
  {
   string: navigator.platform,
   subString: "Linux",
   identity: "Linux"
  }
 ]

};
BrowserDetect.init();


$(window).load(function(){
  $("#contentDescription img, #contentDescription img, .catDesc img").each(function(){
   if ($(this).attr("alt")) {
    

    var caption = $(this).attr("alt");
    var chars = 40;
    if (caption.length > chars) {
    	caption = caption.substr(0,chars)+' ...';
    }
    $(this).wrap("<div class='photo-w-caption'/>");
    $(this).after("<span class='photo-caption clearfix'>"+caption+"</span>");
    
    if (BrowserDetect.browser == "Explorer") { var width = parseInt($(this).width());}
    else { var width = parseInt($(this).css("width")); }
    
    $(this).parent(".photo-w-caption").css("width",width).find(".photo-caption").css("width",width-32);
    $(this).parent(".photo-w-caption").find(".photo-caption").find('.photo-caption-right').css("width",width-10);
    if ($(this).hasClass("right")) {
    
     $(this).parent().find(".photo-caption").css("float","right").addClass("right").parent().addClass("right");
     
    }
    if ($(this).hasClass("left")) {
     $(this).parent().find(".photo-caption").css("float","left").addClass("left").parent().addClass("left");
     var align = "left";
    }
   
   }   
  });
  
  setTimeout(function(){
  	$('#imageGallery div.toggle').trigger('click');	
  }, 1000);
   
 });
 
$(function(){
	// Colorbox initialize
	colorboxImages();
	
	// Colorbox settings
	if($.colorbox){
	    $('.colorbox').colorbox({
	        transition: 'elastic',
	        maxHeight: 594,
	        maxWidth: 594,
	        opacity: 0.5,
	        title: function(){
	            return $(this).attr('name');
	        }
	    });
    } 	
    
    // Home slideshow settings
    if($('#slideshow').children().length){
	    $('#slideshow').cycle({ 
			fx:     'fade', 
			speed:   400, 
			timeout: 6000, 
			pause:   1,
			before: function(current, next){
				$('#slideshow_nav td').eq($(next).index()).addClass('active').siblings('.active').removeClass('active');
			}
		});
		
		$('#slideshow_nav td, #project_nav li').each(function(i, v){
			$(this).hover(function(e){
				e.preventDefault();
				$('#slideshow').cycle(i).cycle('pause');
				$(this).addClass('active').siblings('.active').removeClass('active');
			}, function(){
				$('#slideshow').cycle('resume');
			});
		});
		
		$('.default #slideshow').cycle({
			timeout: 0
		});
	}
	
	//Position right sidebar elements properly
	var pos = $('#side_contact').position();
	var h = $('#side_contact').outerHeight(true);
	
	$('#rightside, #contactform').css({top: (pos.top + h)});
	
	// Form clearing on focus
	$('input, textarea').focus(function(){
		if($(this).val() == $(this).attr('title')) $(this).val('');
	});
	
	$('input, textarea').blur(function(){
		if($(this).val() == '') $(this).val($(this).attr('title'));
	})
	
	// Toggles
	$.extend(
		$.easing, 
		{
			easeOutElastic: function (x, t, b, c, d) {
		        var s=1.70158;var p=0;var a=c;
		        if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		        if (a < Math.abs(c)) { a=c; var s=p/4; }
		        else var s = p/(2*Math.PI) * Math.asin (c/a);
		        return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
	    	}
	   }
	)
	
	var gallerywidth;
	
	$('div.toggle').toggle(function(e){
		e.stopImmediatePropagation();
		e.preventDefault();
		
		$arrow = ($(this).parent().hasClass('overlay')) ? $('div.overlay div.toggle-arrow') : $(this).children('div.toggle-arrow');
		($arrow.hasClass('right')) ? $arrow.removeClass('right').addClass('left') : $arrow.removeClass('left').addClass('right');
		
		switch(true){
			case $(this).parent().hasClass('overlay'):
				if($(this).parent().hasClass('tucked')){
					//console.log('a1');
					$(this).trigger('click');
				} else {
					//console.log('a2');
					$('div.overlay-content').fadeOut(100, function(){
						$(this).css({width: 0});
					}).parent().animate({width: 0}, 300, function(){
						$(this).addClass('tucked');
					});
				}
			break;
			case $(this).parent().hasClass('sidebar'):
				//console.log('b');
				if($(this).children('div.toggle-arrow').hasClass('x')) $(this).parent().animate({right: 0}, 400);
				else $(this).parent().animate({right: -160}, 300);
			break;
			case $(this).parent().hasClass('leftside'):
				//console.log('c');
				gallerywidth = $(this).parent().outerWidth() - 16;
				$(this).siblings('div.image_gallery_wrap').children('div.image_gallery').fadeOut(100, function(){
					$(this).parent().siblings('div.toggle').fadeOut(100).parent().animate({width: 144}, 300).find('a.image-toggle').html('click to show');
				});
			break;
			case $(this).parent().is('#mission'):
				//console.log('d');
				$('div.overlay').not('.tucked').eq(0).children('.toggle').trigger('click');
				$(this).parent().find('span').show().filter('.expand').hide();
				$(this).parent().animate({width: 512}, 300, function(){
					$(this).find('a.more').fadeIn(100);
				}).addClass('open');
			break;
		}
	}, function(e){
		e.stopImmediatePropagation();
		e.preventDefault();
		if($(this).parent().hasClass('overlay')){
		 	($('div.overlay div.toggle-arrow').hasClass('right')) ? $('div.overlay div.toggle-arrow').removeClass('right').addClass('left') : $('div.overlay div.toggle-arrow').removeClass('left').addClass('right');	 
		} else {
			($(this).children('div.toggle-arrow').hasClass('right')) ? $(this).children('div.toggle-arrow').removeClass('right').addClass('left') : $(this).children('div.toggle-arrow').removeClass('left').addClass('right');
		}
		
		switch(true){
			case $(this).parent().hasClass('overlay'):
				if($(this).parent().hasClass('tucked')){
					//console.log('e1');
					$('div.overlay').animate({width: 443}, 300, function(){
						$(this).children('div.overlay-content').hide().css({width: 407}).fadeIn(100);
						$('#mission').filter('.open').children('div.toggle').trigger('click');
					}).removeClass('tucked');
				} else {
					//console.log('e2');
					$(this).trigger('click');
				}
			break;
			case $(this).parent().hasClass('sidebar'):
				//console.log('f');
				if($(this).children('div.toggle-arrow').hasClass('x')) $(this).parent().animate({right: -400}, 400);
				else $(this).parent().animate({right: 0}, 300);
			break;
			case $(this).parent().hasClass('leftside'):
				//console.log('g');
				$(this).parent().animate({width: gallerywidth}, 300, function(){
					$(this).find('div.image_gallery').fadeIn(100).parent().siblings('div.toggle').fadeIn(100);
				}).find('a.image-toggle').html('click to hide');				
			break;
			case $(this).parent().is('#mission'):
				//console.log('h');
				$('div.overlay.tucked').eq(0).children('div.toggle').addClass('safety').trigger('click');
				$(this).parent().find('a.more').hide().siblings('p').children('span.expand').show();
				$(this).parent().animate({width: 159}, 300, function(){
					$(this).find('span').hide().filter('.snippet, .expand').show();	
				}).removeClass('open');
			break;
		}
	});
	
	$('a.image-toggle').click(function(e){
		e.preventDefault();
		$(this).closest('div').siblings('.toggle').trigger('click');
	});
	
	$('#mission p, #imageGallery p').click(function(e){
		e.preventDefault();
		$(this).parent().siblings('.toggle').trigger('click');
	});
	
	// $('#toggle_contact').click(function(e){
		// e.preventDefault();
		// $('#contactform').children('.toggle').trigger('click');
	// });
		
});


