//functions to execute on page load
function agu_init() {    
	// IE5.5/6 png transparency
	//$('body').supersleight();
	
	//socialNav init
	AGUSocNav.initSocialNav();
	
}
//functions to execute on page unload
function agu_unload() {
}

//onload -  don't touch
old_onload = window.onload;
if (typeof  window.onload != 'function') {
     window.onload = agu_init;
} else {
    AddOnload( agu_init );
}
function AddOnload(myfunc) {
	if(window.addEventListener){
		window.addEventListener('load', myfunc, false);
	} else if (window.attachEvent) {
		window.attachEvent('onload', myfunc);
	}
}

//onunload - don't touch
old_onunload = window.onunload;
if (typeof  window.onunload != 'function') {
     window.onunload = agu_unload;
} else {
    AddOnUnload( agu_unload );
}
function AddOnUnload(myfunc) {
	if(window.addEventListener){
		window.addEventListener('unload', myfunc, false);
	} else if (window.attachEvent) {
		window.attachEvent('onunload', myfunc);
	}
}


var AGUSocNav = {
	eventIsSet : false,
	formID : 'socNavForm',
	selectID : 'member_topics',
	submitID : 'go',
	initSocialNav : function(){
			//alert('#'+ this.formID +' .'+ submitID);
		
			$('#'+ this.formID +' .'+ this.submitID).hide(0);
			$('#'+ this.formID +' #'+ this.selectID).mouseover( function() {
				//since they clicked it, add the onchange
				if (!AGUSocNav.eventIsSet){
					//alert("mouse nav");
					AGUSocNav.eventIsSet = true;
					$(this).change( function(){
						window.location = $(this).val();
					});
				}
			});
			//if they didn't mouseover then its probably keyboard nav, use onSubmit and show the go button
			$('#'+ this.formID +' #'+ this.selectID).focus( function() {
				if (!AGUSocNav.eventIsSet){
					//alert("keyboard nav");
					AGUSocNav.eventIsSet = true;
					$('#'+ AGUSocNav.formID +' .'+ AGUSocNav.submitID).show(0);
					$('#'+ AGUSocNav.formID).submit( function(){
						window.location = $('#'+ AGUSocNav.formID +' #'+ AGUSocNav.selectID).val();
						return false;
					});
				}
			});
	} //initSocialNav
}; //AGUSocNav	


function doTopNav( navContainer ){
	//change the selected nav tab based on the subdir name
	var selectedTab = 0;
	var splitUrlPath = window.location.pathname.split("/");
	
	if (splitUrlPath.length > 1){
		switch (splitUrlPath[1]) {
			case "about":
				selectedTab=1;
				break;
			case "membership":
				selectedTab=2;
				break;
			case "pubs":
				selectedTab=3;
				break;
			case "meetings":
				selectedTab=4;
				break;			
			case "sci_pol":
				selectedTab=5;
				break;			
			case "news":
				selectedTab=6;
				break;			
			case "education":
				selectedTab=7;
				break;			
			case "get_involved":
				selectedTab=8;
				break;			
			default:
		}
	}
	
	if (document.getElementById) {
		//navRoot = document.getElementById("navigationTop");
		var navRoot = document.getElementById(navContainer);
		var ulList = {};
		if (navRoot) {ulList = navRoot.getElementsByTagName("ul");}
		
		//first take care of the main nav tabs
		var mainUL = ulList[0];
		if (mainUL && mainUL.hasChildNodes){
			for (var i=0; i<mainUL.childNodes.length; i++){
				var node = mainUL.childNodes[i];
				if (node.tagName == "LI"){
					var navLink = mainUL.childNodes[i].firstChild;
					//set onMouseOver to hide any subnavs so they won't overlap
					navLink.onmouseover = function () {
						for (var i=0; i<ulList.length; i++){
							var att = ulList[i].getAttributeNode("class");
							if (att && att.value.length > 0 && att.value.match(" show") ) {
								ulList[i].setAttribute("class",att.value.replace(" show", ""));	
								ulList[i].setAttribute("className",att.value.replace(" show", ""));	
							}
						}
					}
				
					if (navLink.getAttribute("rel") == "sb"+ (selectedTab+1)){
						if (navLink.getAttributeNode("class")) { 
							navLink.attributes.getNamedItem("class").value += " current"; 
						} else { 
							navLink.setAttribute("class","current");
						}
					}
				}
			}
		}
		
		//now work with the sub nav sections
		var att;
		for (var i=0; i<ulList.length; i++){
			att = ulList[i].attributes.getNamedItem("class");
			if (att){
				if (att.value.search("tabcontainer")>-1 && i == selectedTab+1){
					att.value += " show";
				}
			}
		}
	}
}

//left nav init - used on every page but home
function show(id) {
	for (var i = 1; i<=10; i++) {
		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
	}
	var d = document.getElementById(id);
	if (d) {d.style.display='block';}
}


// check if the input is a valid URL
function isUrl(s) {
  var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
  return regexp.test(s);
}

//get querystring vars
function getQS( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

//get the content of a specified meta tag
function getMetaContent(mn){
  var m = document.getElementsByTagName('meta');
	var mCont = "";
  for(var i in m){
   if(m[i].name == mn){
     mCont =  m[i].content;
   }
  }
	return mCont;
}

function stripNcap(string) {
	var rtnstr = string.replace(/_/g," ");
	rtnstr = capitalize(rtnstr);
	return rtnstr;
}

function capitalize(val) {
	newVal = '';
	val = val.split(' ');
	for(var c=0; c < val.length; c++) {
	newVal += val[c].substring(0,1).toUpperCase() +
						val[c].substring(1,val[c].length) + ' ';
	}
	newVal = newVal.substr(0,newVal.length-1);
	return newVal;
}


//This is for calendars, tables, etc
//Automates even/odd row shading
//Works in conjunction with JQuery script at /scripts/jquery.js
	$(document).ready(function(){   
		$('table.striped tr:even').addClass('even');
		$('table.striped tr:odd').addClass('odd');
	});


// currently used on the gifts page to hide/show fund descriptions
function showFund(fnds,field){
  //var myFund=window.document.forma.fund.options[window.document.forma.fund.selectedIndex].value;
	var myFund=field.value || field.val() || document.forms[0].elements[0].value || ''  ;
  //alert(myFund);
  if (!myFund) {}
  else if (myFund==''){}
  else {
  	for(var i=0;i<fnds.length;i++){
  		if (fnds[i]==myFund){$('#'+ fnds[i]).show('slow');}
  		else {$('#'+ fnds[i]).hide('fast');}
  	}
  }
}

// preload images using jquery
jQuery.preloadImages = function() {
  for(var i = 0; i<arguments.length; i++){
    jQuery("<img>").attr("src", arguments[i]);
  }
}


// http://www.i-marco.nl/weblog/jquery-accordion-menu-redux/
// accordion depends on jquery
var toggleVal;
function initAccordion() {
	//preload the image associated with the selected class
	$.preloadImages("/images/icons/icoMinus.gif");
	
	$('div.menu div.desc').hide();
	$('div.menu div.descGroup').hide();
	
	$.each($('div.menu'), function(){
		$('#' + this.id + '.expandfirst div:first').show();
		$('#' + this.id + '.expandfirst h2:first').addClass("selected");
	});
	
	$('div.menu h2').click(function() {
		var checkElement = $(this).next();
		var parent = this.parentNode.id;
		var upSpeed = 50;
		var dnSpeed = 300;
		//alert($(this).get(0).tagName);
		
		if($('#' + parent).hasClass('noaccordion')) {
			$(this).next().slideToggle(upSpeed);
			//$(this).toggleClass("selected");
			
			return false;
		}
		if((checkElement.is('div.desc')) && (checkElement.is(':visible'))) {
			if($('#' + parent).hasClass('collapsible')) {
				$('#' + parent + ' div.desc:visible').slideUp(upSpeed);
				$('#' + parent + ' h2').removeClass("selected");
				if (toggleVal == 'shown'){ accAllToggle(); }
			}
			return false;
		}

		/* copy from above paragraph; for descGroup */
		if((checkElement.is('div.descGroup')) && (checkElement.is(':visible'))) {
			//alert('2');
			if($('#' + parent).hasClass('collapsible')) {
				$('#' + parent + ' div.descGroup:visible').slideUp(upSpeed);
				$('#' + parent + ' h2').removeClass("selected");
				if (toggleVal == 'shown'){ accAllToggle(); }
			}
			return false;
		}

		if((checkElement.is('div.desc')) && (!checkElement.is(':visible'))) {
			$('#' + parent + ' div.desc:visible').slideUp(upSpeed);
			$('#' + parent + ' h2').removeClass("selected");
			checkElement.slideDown(dnSpeed);
			$(this).addClass("selected");
			
			return false;
		}

		/* copy from above paragraph; for descGroup */
		if((checkElement.is('div.descGroup')) && (!checkElement.is(':visible'))) {
			//alert('4');
			$('#' + parent + ' div.descGroup:visible').slideUp(upSpeed);
			$('#' + parent + ' h2').removeClass("selected");
			checkElement.slideDown(dnSpeed);
			$(this).addClass("selected");
			
			return false;
		}

	});
}	

	function section_init() {
		//js for navigation must match corresponding li number in navigation
		show('smenu1');
		MM_preloadImages('');
		initAccordion();
		
		// only do this if js is enabled
		//$('.menu').before("<div class='acc_head'><p class='acc_desc'>Select an item below to see the description.</p><p class='show_all'><a href='javascript:void(0);' onclick='accAllToggle(this)'><span class='show'>Show All</span><span class='hidden'>Hide All</span></a></p><div class='clear'></div></div>");
	}
/*
//goes with the accordion above to show/hide all
function accAllToggle() {
		$('.show_all span').toggle();
		if (toggleVal == 'shown') {
			//hide
			$('div.menu div.desc').slideUp(50);
			$('div.menu h2').removeClass("selected");			
			toggleVal = 'hidden';
		} else {
			//show	
			$('div.menu div.desc').slideDown(300);
			$('div.menu h2').addClass("selected");			
			toggleVal = 'shown';
		}
}
*/


//goes with the accordion above to show/hide all
function accAllToggle() {
		//$('.show_all span').toggle();

         $(".show_alls div").toggleClass("show1");
         $('.show_all span').toggle();  
		if (toggleVal == 'hidden') {

			//show 
			$('div.menu div.desc').slideDown(10);
			$('div.menu div.nothumbnail').slideUp(10);
			//$('div.menu h2').addClass("selected");			
			toggleVal = 'shown';
       
		}
		else {
			//hide

			$('div.menu div.desc').slideUp(10);
			//$('div.menu h2').removeClass("selected");			
			toggleVal = 'hidden';

       

		} 
}

/**
 * jQuery Plugin Toggle Fade v1.0
 * Requires jQuery 1.2.3 (Not tested with earlier versions).
 * Copyright (c) 2008 Gregorio Magini [gmagini at gmail dot com] 
 * 
 *	@param: Object Array. Arguments need to be in object notation.
 *	Returns: jQuery.
 *	Options:	
 *		speedIn: Sets the speed of the fadeIn effect. Default: "normal".
 *    speedOut: Sets the speed of the fadeOut effect. Default: same as speedIn.
 *
 *	Examples: 
 *    
 *    speedIn and speedOut both "normal":
 *		$("#toggle-link").toggleFade();
 *
 *    speedIn and speedOut both "fast":
 *		$("#toggle-link").toggleFade({ speedIn : "fast");
 *
 *    different settings for speedIn and speedOut:
 *		$("#toggle-link").toggleFade({ speedIn : 800, speedOut : 150 });
 *
 */

(function($) {
  $.fn.toggleFade = function(settings)
  {
  	settings = jQuery.extend(
  		{
        speedIn: "normal",
        speedOut: settings.speedIn
  		}, settings
  	);
  	return this.each(function()
  	{
  	  var isHidden = jQuery(this).is(":hidden");
      jQuery(this)[ isHidden ? "fadeIn" : "fadeOut" ]( isHidden ? settings.speedIn : settings.speedOut);
    });
  };
})(jQuery);

// IE6 supersleight hack for PNG transparencies
// http://24ways.org/2007/supersleight-transparent-png-in-ie6
jQuery.fn.supersleight = function(settings) {
	settings = jQuery.extend({
		imgs: true,
		backgrounds: true,
		shim: '/images/spacer.gif',
		apply_positioning: true
	}, settings);
	
	return this.each(function(){
		if (jQuery.browser.msie && parseInt(jQuery.browser.version, 10) < 7 && parseInt(jQuery.browser.version, 10) > 4) {
			//alert('fixing pngs');
			jQuery(this).find('*').andSelf().each(function(i,obj) {
				var self = jQuery(obj);
				// background pngs
				if (settings.backgrounds && self.css('background-image').match(/\.png/i) !== null) {
					var bg = self.css('background-image');
					var src = bg.substring(5,bg.length-2);
					var mode = (self.css('background-repeat') == 'no-repeat' ? 'crop' : 'scale');
					var styles = {
						'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='" + mode + "')",
						'background-image': 'url('+settings.shim+')'
					};
					self.css(styles);
				};
				// image elements
				if (settings.imgs && self.is('img[src$=png]')){
					var styles = {
						'width': self.width() + 'px',
						'height': self.height() + 'px',
						'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + self.attr('src') + "', sizingMethod='scale')"
					};
					
					self.attr('id', self.attr('src'));
					self.css(styles).attr('src', settings.shim);
				};
				// apply position to 'active' elements
				if (settings.apply_positioning && self.is('a, input') && (self.css('position') === '' || self.css('position') == 'static')){
					self.css('position', 'relative');
				};
			});
		};
	});
};

sfHoverTop = function() {
	var sfEls = document.getElementById("topNavList").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhovertop";
			if (jQuery.browser.msie && parseInt(jQuery.browser.version, 10) < 7 && parseInt(jQuery.browser.version, 10) > 4) {$('select, input').css('visibility','hidden');}
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhovertop\\b"), "");
			if (jQuery.browser.msie && parseInt(jQuery.browser.version, 10) < 7 && parseInt(jQuery.browser.version, 10) > 4) {$('select, input').css('visibility','visible');}
		}
	}
}


//used to get around FF cleartype bug
var TypeHelpers = new function(){

   // I use me instead of this.  For reasons why, please read:
   // http://w3future.com/html/stories/callbacks.xml
   var me = this;

   me.hasSmoothing = function(){

      // IE has screen.fontSmoothingEnabled - sweet!
      if (typeof(screen.fontSmoothingEnabled) != "undefined") {
         return screen.fontSmoothingEnabled;
      } else {

         try {

            // Create a 35x35 Canvas block.
            var canvasNode = document.createElement('canvas');
            canvasNode.width = "35";
            canvasNode.height = "35"

            // We must put this node into the body, otherwise
            // Safari Windows does not report correctly.
            canvasNode.style.display = 'none';
            document.body.appendChild(canvasNode);
            var ctx = canvasNode.getContext('2d');

            // draw a black letter 'O', 32px Arial.
            ctx.textBaseline = "top";
            ctx.font = "32px Arial";
            ctx.fillStyle = "black";
            ctx.strokeStyle = "black";

            ctx.fillText("O", 0, 0);

            // start at (8,1) and search the canvas from left to right,
            // top to bottom to see if we can find a non-black pixel.  If
            // so we return true.
            for (var j = 8; j <= 32; j++) {
               for (var i = 1; i <= 32; i++) {

                  var imageData = ctx.getImageData(i, j, 1, 1).data;
                  var alpha = imageData[3];

                  if (alpha != 255 && alpha != 0) {
                     return true; // font-smoothing must be on.
                  }
               }

            }

            // didn't find any non-black pixels - return false.
            return false;
         }
         catch (ex) {
            // Something went wrong (for example, Opera cannot use the
            // canvas fillText() method.  Return null (unknown).
            return null;
         }
      }
   }

   me.insertClasses = function(){
      var result = me.hasSmoothing();
      var htmlNode = document.getElementsByTagName('html')[0];
      if (result == true) {
         htmlNode.className += " hasFontSmoothing-true";
      } else if (result == false) {
            htmlNode.className += " hasFontSmoothing-false";
      } else { // result == null
            htmlNode.className += " hasFontSmoothing-unknown";
      }
   }

}

// if EventHelpers.js is included, insert the hasFontSmoothing CSS classes
/*
if (window.EventHelpers) {
   EventHelpers.addPageLoadEvent('TypeHelpers.insertClasses')
}
*/

function displayInfo() {
	 var message;
	 var isFS
	 var isFontSmoothingOn = TypeHelpers.hasSmoothing();
	 if (isFontSmoothingOn == true) {
			message = "This browser is using a font-smoothing technology";
			isFS = true;
	 } else if (isFontSmoothingOn == false) {
			message = "This browser isn't using a font-smoothing technology"
			isFS = false;
	 } else {
			message = "We could not detect if font-smoothing is being used."
	 }
	 //document.getElementById('detectInfo').innerHTML = message;
	 return isFS;
}


// macromedia stuff
var xr;
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; if(x.src.indexOf('spacer')>-1){ x.src=xr; $(x).supersleight(); }
	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.src.indexOf('spacer')>-1){ xr=x.id; } if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];$(x).supersleight();}
	 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_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}

function displayHideLayers() { 
  var i,p,v,obj,args=displayHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'block':(v='hide')?'none':v; }
    obj.display=v; }
}



