function setActiveStyleSheet(title) 
{

	var i, a, main;
	for(i=0; (a = document.getElementsByTagName("link")[i]); i++)
	{
		if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) 
		{ 
		
			a.disabled = true;
			if(a.getAttribute("title") == title) a.disabled = false;
		}
	}
}

function getActiveStyleSheet() 
{
	var i, a;
	for(i=0; (a = document.getElementsByTagName("link")[i]); i++) 
	{
		
		if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
	}
	return null;
}

function getPreferredStyleSheet()
{
	var i, a;
	for(i=0; (a = document.getElementsByTagName("link")[i]); i++)
	{
		if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("rel").indexOf("alt") == -1 && a.getAttribute("title"))
		return a.getAttribute("title");
	}
	return null;
}

function emailpage() {
	var strEmailTo = prompt("Recipient's email address:","");
	if (strEmailTo == null) {
		alert("You must enter an email address.")
	} else {
		var strEmailSubject = document.title;
		var strEmailLink = document.location.href;
		strEmailBody = "Please see the following Web document...\n\n" + "Source:  National Diabetes Education Program (NDEP)" + "\n" + "Title:      " + strEmailSubject + "\n" + "Link:      " + strEmailLink + "\n";
		var docMessage = "mailto:" + strEmailTo + "?subject=" + escape(strEmailSubject) + "&body=" + escape(strEmailBody);
		window.location = docMessage;
		window.focus();
	}
}

// cookie to maintain the state and to retrive for x number of days
function createCookie(name,value,days) 
{
	if (days) 
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) 
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) 
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function addToFavorites(){ 
	var url=window.location.href;
	var title = document.title;
	if (window.sidebar) // firefox
	{
		window.sidebar.addPanel(title, url, ""); 
	} else if(window.opera && window.print) // opera
	{
		var elem = document.createElement('a');
		elem.setAttribute('href',url);
		elem.setAttribute('title',title);
		elem.setAttribute('rel','sidebar');
		elem.click();
	} else if(document.all)// ie
	{
		window.external.AddFavorite(url, title);
	} else {
		alert("Sorry! Your browser doesn't support this function."); 
	}
}


window.onload = function(e) 
{
	var cookie = readCookie("TextSizeSelection");
	var title = cookie ? cookie : getPreferredStyleSheet();
	
	setActiveStyleSheet(title);
	
}

window.onunload = function(e) 
{
	var title = getActiveStyleSheet();
	createCookie("TextSizeSelection", title, 30);
}

var cookie = readCookie("TextSizeSelection");
var title = cookie ? cookie : getPreferredStyleSheet();

setActiveStyleSheet(title);



function leavingsite() {
	alert("You are now leaving the NIH website. The NIH is not responsible for the content of web pages found on this linked website. Links to nonfederal organizations are provided solely as a service to our users. These links do not indicate an endorsement of these organizations by NIH or the federal government.");
}


/* -*- mode: c; tab-width: 2; c-tab-always-indent: t; c-basic-offset: 2; comment-column: 0 -*- */

document.documentElement.className += ' js';
/*@cc_on try { document.execCommand('BackgroundImageCache', false, true); } catch(e) {} @*/

(function(){
  /* class setting functions */
  var className = {
    add: function(el, sName) {
      if (!className.test(el, sName)) {
	el.className += el.className ? ' ' + sName : sName;
      }
    },

    set: function(el, sName, bSet) {
      return bSet ? className.add(el, sName) : className.del(el, sName);
    },

    toggle: function(el, sName) {
      var bSet = !className.test(el, sName);
      className.set(el, sName, bSet);
      return bSet;
    },

    tester: function(cls) {
      var test = className.test;
      return function(el) { return test(el, cls) }
    }
  };

  (function() {
    var test, cache = {};
    function getRx(sName) {
      return cache[sName] || (cache[sName] = new RegExp('^'+sName+'(?:\\s+|$)|\\s+'+sName+'(?=\\s|$)'));
    };

    className.test = test = function(el, sName) {
      return getRx(sName).test(el.className);
    };

    className.del = function(el, sName) {
      if (test(el, sName))
	el.className = el.className.replace(getRx(sName), '');
    };
  })();


  /* dom manipulations */
  var Dom = {
    getAncestorByTest: function(el, test, depth) {
      if (!depth) depth = 0;
      while (!test(el) && (el = el.parentNode) && --depth)
	;
      return el && test(el) && el;
    },

    getAncestorWithClass: function(el, sCls, nDepth) {
      return Dom.getAncestorByTest(el, className.tester(sCls), nDepth);
    }
  };


  /* event handlers */
  var Events = {
    add: function(oNode, sType, fnCallback) {
      if (!oNode)
	return;
      Events.remove(oNode, sType, fnCallback);
      if (oNode.addEventListener)
	oNode.addEventListener(sType, fnCallback, false);
      else if (oNode.attachEvent)
	oNode.attachEvent('on' + sType, fnCallback);
    },

    remove: function(oNode, sType, fnCallback) {
      if (!oNode)
	return;
      if (oNode.removeEventListener)
	oNode.removeEventListener(sType, fnCallback, false);
      else if (oNode.detachEvent)
	oNode.detachEvent('on' + sType, fnCallback);
    },

    cancelBubble: function(e) {
      if (!e)
	e = event;
      if (!e)
	return;
      if (e.stopPropagation)
	e.stopPropagation();
      else
	e.cancelBubble = true;
    },

    halt: function(e) {
      if (!e)
	e = event;
      if (!e)
	return true;
      if (e.preventDefault)
	e.preventDefault();
      else
	e.returnValue = false;
      return false;
    },

    getTarget: function(e) {
      if (!e)
	e = event;
      return e.srcElement || e.target;
	},

    getTargetWithClass: function(e, cls, depth) {
      return Dom.getAncestorWithClass(Events.getTarget(e), cls, depth);
    }
  };

  /* actual collapsible code */
  Events.add(document, 'click', function(e) {
    var t = Events.getTargetWithClass(e, '(?:expand|collapse)');
    if (!t)
      return;
    var root = Dom.getAncestorWithClass(t, 'collapsible');
    if (!root)
      return;
    Events.halt(e);
    className.set(root, 'expanded', className.test(t, 'expand'));
  });
})();
