function setFindaDocMatchCounter(){
	if(document.getElementById("doctorNameField")){
		document.getElementById("doctorNameField").onkeyup = function(){
			makeFindADocCounterRequest();
		}
		document.getElementById("keywordField").onkeyup = function(){
			makeFindADocCounterRequest();
		}
		
	}

}
function makeFindADocCounterRequest(){
	document.getElementById("showMatchesTotal").innerHTML = "";
	n = document.forms.findadoc.name.value;
	k = document.forms.findadoc.keyword.value;
	d = document.forms.findadoc.dept.value;
	l = document.forms.findadoc.location.value;
	if(n||k||d||l){
		try{xmlrequestobject.abort();}catch(e){};
		xmlrequestobject = $.get("/common/includes/findadoc-total.php",{
			countonly: "true",
			name: n,
			keyword: k,
			dept: d,
			location: l
		}, function(xml) {
   			setTotalFromXML(xml);
 		});
	}
}

function setTotalFromXML(xml) {
	if(xml>=0 && xml != "" && xml != "null"){
		document.getElementById("showMatchesTotal").innerHTML = "&nbsp;(" + xml + " results)";
	}
}


function setSelect(selectId, selectValue, linkId, linkValue){

	se = document.getElementById(selectId);
	se.value=selectValue;
	document.getElementById(linkId).firstChild.nodeValue = linkValue;
	top.tb_remove();
	makeFindADocCounterRequest();

}



function roundCorners() {
	showErrors = false;
	var aDivs = document.getElementsByTagName('div');
	for (var i=0; i<aDivs.length; i++) {

		// if you want w3c happiness, this is specified as a class name
		if(aDivs[i].getAttribute('roundedcorners') == "true" || HasClassName(aDivs[i], 'roundedcorners'))
		{
			var k=0;
			while(aDivs[i].childNodes.item(k).nodeType!=1){
				k++;
			}
			var firstChild = aDivs[i].childNodes.item(k);
			//var colorBorder = firstChild.style.borderColor;
			//colorBorder = aDivs[i].className.split('-')[1];
			colorBorder = getStyle(firstChild, 'border-top-color');
			
			colorBorderWidth = getStyle(firstChild, 'border-top-width');
			if(!colorBorderWidth || colorBorderWidth=="0px" || colorBorderWidth=="medium"){
				colorBorder="ffffff";
			} else {
				colorBorder = returnWebSafeColorHex(colorBorder);
			}
			
			firstChild.style.borderTop = '0px';
			firstChild.style.borderBottom = '0px';
			
			oldPaddingTop = getStyle(firstChild, 'padding-top');
			if(!oldPaddingTop){oldPaddingTop = '0px'} 
			oldPaddingTop = oldPaddingTop.replace(/[A-Za-z ]/g, '');
			if(oldPaddingTop>=8){
				firstChild.style.paddingTop = oldPaddingTop-8 + 'px';
			} else {
				firstChild.style.paddingTop = 0 + 'px';
				if(showErrors){
					alert("There is insufficient padding at the TOP of div id: " + firstChild.id + ". All divs contained by other divs marked for rounding must have 8px of padding.  Padding here would be removed and replaced with the rounded corners.  Since there isn't enough space, by default I'll expand the div to make the rounded corners fit.  To fix: The existing padding of " + oldPaddingTop + "px should be 8px or greater.")
					}
			}
			
			oldPaddingBottom = getStyle(firstChild, 'padding-bottom');
			if(!oldPaddingBottom){oldPaddingBottom = '0px'} 
			oldPaddingBottom = oldPaddingBottom.replace(/[A-Za-z ]/g, '');
			if(oldPaddingBottom>=8){
				firstChild.style.paddingBottom = oldPaddingBottom-8 + 'px';
			} else {
				firstChild.style.paddingBottom = 0 + 'px';
				if(showErrors){
					alert("There is insufficient padding at the BOTTOM of div id: " + firstChild.id + ". All divs contained by other divs marked for rounding must have 8px of padding.  Padding here would be removed and replaced with the rounded corners.  Since there isn't enough space, by default I'll expand the div to make the rounded corners fit.  To fix: The existing padding of " + oldPaddingTop + "px should be 8px or greater.")
				}
			}
			
			firstChild.style.borderLeftColor = '#'+colorBorder;
			firstChild.style.borderRightColor = '#'+colorBorder;
			
			firstChild.style.borderLeftWidth = '1px';
			firstChild.style.borderRightWidth = '1px';
			
			var topSpan = document.createElement("span");
			topSpan.className = "borderTopLeft";
			var topDiv = document.createElement("div");
			topDiv.className = "borderTop";
			topDiv.appendChild(topSpan);
			
			var bottomSpan = document.createElement("span");
			bottomSpan.className = "borderBottomLeft";
			var bottomDiv = document.createElement("div");
			bottomDiv.className = "borderBottom";
			bottomDiv.appendChild(bottomSpan);
						
			aDivs[i].insertBefore(topDiv,firstChild);
			aDivs[i].appendChild(bottomDiv);
			
			// Modify this if you need to place your border image in a different directory
			if(window.location.toString().toLowerCase().indexOf("https:") == 0){
				serverprotocol = "https";
			} else {
				serverprotocol = "http";
			}
			
			topSpan.style.background = 'url('+ serverprotocol +'://www.mc.vanderbilt.edu/vanderbilthealth/images/borders/border_'+colorBorder+'.gif) top left no-repeat';
			topDiv.style.background = 'url('+ serverprotocol +'://www.mc.vanderbilt.edu/vanderbilthealth/images/borders/border_'+colorBorder+'.gif) top right no-repeat';
			bottomSpan.style.background = 'url('+ serverprotocol +'://www.mc.vanderbilt.edu/vanderbilthealth/images/borders/border_'+colorBorder+'.gif) 0px -8px no-repeat';
			bottomDiv.style.background = 'url('+ serverprotocol +'://www.mc.vanderbilt.edu/vanderbilthealth/images/borders/border_'+colorBorder+'.gif) 100% -8px no-repeat';
		}
	}

}

function sameLengthGroup(/* args */){
	var longestHeight = null;
	var heights = new Array();
	var bubbles = new Array();

	for(i=0;i<arguments.length;i++){
		if(bubbles[i] = document.getElementById(arguments[i])){} else return 0;
		heights[i] = document.getElementById(arguments[i]).clientHeight;
		if(longestHeight <= heights[i]){
			longestHeight = heights[i];
		}
	}

	for(i=0;i<bubbles.length;i++){
		divs = new Array();
		springs = new Array();
		smallColumnSprings = new Array();
		mediumColumnSprings = new Array();
		//all divs in the document
		divs = document.getElementsByTagName('div');
		for(k=0;k<divs.length;k++){
			if(divs[k].className == "stretchableArea"){
				//alert("found a stretchable area!");
				c = divs[k];
				foundParent = null;
				while(c.parentNode != null && foundParent == null)
				{	
					if(c.parentNode == bubbles[i]){
						// sentinal value set if matched
						foundParent = bubbles[i];
						//alert("adding to springs!");
						springs = springs.concat(divs[k]);
					}
					if(!foundParent){
						// climb tree
						if(c.parentNode.id == "smallSplitColumn"){	
							smallColumnSprings = smallColumnSprings.concat(divs[k]);
						}
						if(c.parentNode.id == "mediumSplitColumn"){
							mediumColumnSprings = mediumColumnSprings.concat(divs[k]);
						}
						c = c.parentNode;		
					}
				}
			}
		}
		heightDifference = longestHeight - heights[i];
		if(!(heightDifference > 0)){
			heightDifference = 0;
		}
		for(m=0; m<springs.length; m++){
			portion = (1/springs.length)*100;
			for(x=0; x<smallColumnSprings.length; x++){
				if(smallColumnSprings[x] == springs[m]){
					portion = (1/smallColumnSprings.length)*100;
				}
			}
			for(x=0; x<mediumColumnSprings.length; x++){
				if(mediumColumnSprings[x] == springs[m]){
					portion = (1/mediumColumnSprings.length)*100;
				}
			}
			oldAttribute = getStyle(springs[m], 'padding-top');
			if(!oldAttribute){oldAttribute = "0px"}

			if(oldAttributeInt = parseInt(oldAttribute.substr(0,oldAttribute.indexOf('px')))){} else { oldAttributeInt = 0; };
			newAttribute = oldAttributeInt + heightDifference * (portion/100) + "px";
			/*newAttribute = heightDifference * (portion/100) + "px";*/
			//setStyle(springs[m], attr, newAttribute);
			springs[m].style.paddingTop = newAttribute;
		}
	}
}	



// This is used by checkmouseenter and checkmouseleave
function containsDOM (container, containee) {
	var isParent = false;
	do {
		if ((isParent = container == containee))
			break;
		containee = containee.parentNode;
	}
	while (containee != null);
	return isParent;
}

// used to fix event bubbling.  
// example: onmouseover="if (checkMouseEnter(this, event)) {}"
function checkMouseEnter (element, evt) {
	if (element.contains && evt.fromElement) {
		return !element.contains(evt.fromElement);
	}
	else if (evt.relatedTarget) {
		return !containsDOM(element, evt.relatedTarget);
	}
}

// used to fix event bubbling. 
// example: onmouseout="if (checkMouseLeave(this, event)) {}"
function checkMouseLeave (element, evt) {
	if (element.contains && evt.toElement) {
		return !element.contains(evt.toElement);
	}
	else if (evt.relatedTarget) {
		return !containsDOM(element, evt.relatedTarget);
	}
}

// This clears out the search box
// Call this script from within the window.onload.
function searchBoxClear(){

	if(window.location.toString().toLowerCase().indexOf("https:") == 0){
		serverprotocol = "https";
	} else {
		serverprotocol = "http";
	}



	searchBG_focused = "url(" + serverprotocol + "://www.vanderbilthealth.com/images/search-field.gif) no-repeat";
	searchBG_unfocused = "url("+ serverprotocol +"://www.vanderbilthealth.com/images/search-field-search.gif) no-repeat";
	var inp=document.getElementById('searchInput');
	if(!inp){ return false; }
	
	
	if(inp.value){
		inp.defaultValue = inp.value;
	} else if(inp.defaultValue) {
		inp.value = inp.defaultValue;
	} else {
		inp.value = "";
		inp.defaultValue='';
	}
	
	if(inp.type=='text'){
		inp.setAttribute('originalValue',inp.defaultValue);
		inp.onfocus=function(){
			if(this.value==this.getAttribute('originalValue')){
				this.value='';
				this.style.background = searchBG_focused;
			}
			else{ return false;}
		}
		inp.onblur=function(){
			if(this.value==''){
				this.style.background = searchBG_unfocused;
			} else{ return false; }
		}
		inp.ondblclick=function(){
			//this.value=this.getAttribute('originalValue');
		}
		if(inp.value==""){
			inp.style.background = searchBG_unfocused;
			inp.blur();
		} else {
			inp.style.background = searchBG_focused;
			inp.setAttribute('originalValue',"");
		}
		
	}

}

// This clears out other input boxes when focused
// Call this script from within the window.onload.
function inputBoxClear(){
	var inp=document.getElementsByTagName('input');
	for(var i=0;i<inp.length;i++){
		if(inp[i].type=='text' && inp[i].getAttribute("clearonclick")==true){
			inp[i].blur();
			inp[i].setAttribute('rel',inp[i].defaultValue)
			inp[i].onfocus=function(){
				if(this.value==this.getAttribute('rel')){
					this.value='';
				}
				else{return false;}
				
			}
			inp[i].onblur=function(){
				if(this.value==''){
					this.value=this.getAttribute('rel');}
				else{return false;}
			}
		inp[i].ondblclick=function(){this.value=this.getAttribute('rel')}
		}
	}
}

// This allows for jumping to other pages from within drop down menus
// example: <select onchange="jumpMenu('parent',this,1)>
function jumpMenu(target,selectObject,restore){ //v3.0
  eval(target+".location='"+selectObject.options[selectObject.selectedIndex].value+"'");
  if (restore) selectObject.selectedIndex=0;
}


// First paramter is a nodes id, second the CSS property you want
function getStyle(oNode, sProperty)
{
	//var oNode = document.getElementById(sNodeId);
	
	if(document.defaultView)
	{
		return document.defaultView.getComputedStyle(oNode, null).getPropertyValue(sProperty);
	}
	else if(oNode.currentStyle)
	{
		var sProperty = sProperty.replace(/-\D/gi, function(sMatch)
		{
			return sMatch.charAt(sMatch.length - 1).toUpperCase();
		});

		return oNode.currentStyle[sProperty];
	}
	else return null;
}


// Original script by Stoyan Stefanov, sstoo@gmail.com
// Link: http://www.phpied.com/rgb-color-parser-in-javascript/
// Modified by Ryan Huber, VUMC Communications
function returnWebSafeColorHex(color_string){
	//alert("given " + color_string);
    this.ok = false;

    // strip any leading #
    if (color_string.charAt(0) == '#') { // remove # if any
        color_string = color_string.substr(1,6);
    }

    color_string = color_string.replace(/ /g,'');
    color_string = color_string.toLowerCase();

    // before getting into regexps, try simple matches
    // and overwrite the input
    var simple_colors = {
        aliceblue: 'f0f8ff',
        antiquewhite: 'faebd7',
        aqua: '00ffff',
        aquamarine: '7fffd4',
        azure: 'f0ffff',
        beige: 'f5f5dc',
        bisque: 'ffe4c4',
        black: '000000',
        blanchedalmond: 'ffebcd',
        blue: '0000ff',
        blueviolet: '8a2be2',
        brown: 'a52a2a',
        burlywood: 'deb887',
        cadetblue: '5f9ea0',
        chartreuse: '7fff00',
        chocolate: 'd2691e',
        coral: 'ff7f50',
        cornflowerblue: '6495ed',
        cornsilk: 'fff8dc',
        crimson: 'dc143c',
        cyan: '00ffff',
        darkblue: '00008b',
        darkcyan: '008b8b',
        darkgoldenrod: 'b8860b',
        darkgray: 'a9a9a9',
        darkgreen: '006400',
        darkkhaki: 'bdb76b',
        darkmagenta: '8b008b',
        darkolivegreen: '556b2f',
        darkorange: 'ff8c00',
        darkorchid: '9932cc',
        darkred: '8b0000',
        darksalmon: 'e9967a',
        darkseagreen: '8fbc8f',
        darkslateblue: '483d8b',
        darkslategray: '2f4f4f',
        darkturquoise: '00ced1',
        darkviolet: '9400d3',
        deeppink: 'ff1493',
        deepskyblue: '00bfff',
        dimgray: '696969',
        dodgerblue: '1e90ff',
        feldspar: 'd19275',
        firebrick: 'b22222',
        floralwhite: 'fffaf0',
        forestgreen: '228b22',
        fuchsia: 'ff00ff',
        gainsboro: 'dcdcdc',
        ghostwhite: 'f8f8ff',
        gold: 'ffd700',
        goldenrod: 'daa520',
        gray: '808080',
        green: '008000',
        greenyellow: 'adff2f',
        honeydew: 'f0fff0',
        hotpink: 'ff69b4',
        indianred : 'cd5c5c',
        indigo : '4b0082',
        ivory: 'fffff0',
        khaki: 'f0e68c',
        lavender: 'e6e6fa',
        lavenderblush: 'fff0f5',
        lawngreen: '7cfc00',
        lemonchiffon: 'fffacd',
        lightblue: 'add8e6',
        lightcoral: 'f08080',
        lightcyan: 'e0ffff',
        lightgoldenrodyellow: 'fafad2',
        lightgrey: 'd3d3d3',
        lightgreen: '90ee90',
        lightpink: 'ffb6c1',
        lightsalmon: 'ffa07a',
        lightseagreen: '20b2aa',
        lightskyblue: '87cefa',
        lightslateblue: '8470ff',
        lightslategray: '778899',
        lightsteelblue: 'b0c4de',
        lightyellow: 'ffffe0',
        lime: '00ff00',
        limegreen: '32cd32',
        linen: 'faf0e6',
        magenta: 'ff00ff',
        maroon: '800000',
        mediumaquamarine: '66cdaa',
        mediumblue: '0000cd',
        mediumorchid: 'ba55d3',
        mediumpurple: '9370d8',
        mediumseagreen: '3cb371',
        mediumslateblue: '7b68ee',
        mediumspringgreen: '00fa9a',
        mediumturquoise: '48d1cc',
        mediumvioletred: 'c71585',
        midnightblue: '191970',
        mintcream: 'f5fffa',
        mistyrose: 'ffe4e1',
        moccasin: 'ffe4b5',
        navajowhite: 'ffdead',
        navy: '000080',
        oldlace: 'fdf5e6',
        olive: '808000',
        olivedrab: '6b8e23',
        orange: 'ffa500',
        orangered: 'ff4500',
        orchid: 'da70d6',
        palegoldenrod: 'eee8aa',
        palegreen: '98fb98',
        paleturquoise: 'afeeee',
        palevioletred: 'd87093',
        papayawhip: 'ffefd5',
        peachpuff: 'ffdab9',
        peru: 'cd853f',
        pink: 'ffc0cb',
        plum: 'dda0dd',
        powderblue: 'b0e0e6',
        purple: '800080',
        red: 'ff0000',
        rosybrown: 'bc8f8f',
        royalblue: '4169e1',
        saddlebrown: '8b4513',
        salmon: 'fa8072',
        sandybrown: 'f4a460',
        seagreen: '2e8b57',
        seashell: 'fff5ee',
        sienna: 'a0522d',
        silver: 'c0c0c0',
        skyblue: '87ceeb',
        slateblue: '6a5acd',
        slategray: '708090',
        snow: 'fffafa',
        springgreen: '00ff7f',
        steelblue: '4682b4',
        tan: 'd2b48c',
        teal: '008080',
        thistle: 'd8bfd8',
        tomato: 'ff6347',
        turquoise: '40e0d0',
        violet: 'ee82ee',
        violetred: 'd02090',
        wheat: 'f5deb3',
        white: 'ffffff',
        whitesmoke: 'f5f5f5',
        yellow: 'ffff00',
        yellowgreen: '9acd32'
    };
    for (var key in simple_colors) {
        if (color_string == key) {
            color_string = simple_colors[key];
        }
    }
    // emd of simple type-in colors

    // array of color definition objects
    var color_defs = [
        {
            re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
            example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
            process: function (bits){
                return [
                    parseInt(bits[1]),
                    parseInt(bits[2]),
                    parseInt(bits[3])
                ];
            }
        },
        {
            re: /^(\w{2})(\w{2})(\w{2})$/,
            example: ['#00ff00', '336699'],
            process: function (bits){
                return [
                    parseInt(bits[1], 16),
                    parseInt(bits[2], 16),
                    parseInt(bits[3], 16)
                ];
            }
        },
        {
            re: /^(\w{1})(\w{1})(\w{1})$/,
            example: ['#fb0', 'f0f'],
            process: function (bits){
                return [
                    parseInt(bits[1] + bits[1], 16),
                    parseInt(bits[2] + bits[2], 16),
                    parseInt(bits[3] + bits[3], 16)
                ];
            }
        }
    ];

    // search through the definitions to find a match
    for (var i = 0; i < color_defs.length; i++) {
        var re = color_defs[i].re;
        var processor = color_defs[i].process;
        var bits = re.exec(color_string);
        if (bits) {
            channels = processor(bits);
            this.r = channels[0];
            this.g = channels[1];
            this.b = channels[2];
            this.ok = true;
        }

    }

    // validate/cleanup values
    this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);
    this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);
    this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);

	// convert to websafe
	this.r = Math.round(this.r/51)*51;
	this.g = Math.round(this.g/51)*51;
	this.b = Math.round(this.b/51)*51;

    var r = this.r.toString(16);
    var g = this.g.toString(16);
    var b = this.b.toString(16);
    if (r.length == 1) r = '0' + r;
    if (g.length == 1) g = '0' + g;
    if (b.length == 1) b = '0' + b;
	
    return r + g + b;

}


// Original JS for Bubble Tooltips by Alessandro Fulciniti
// http://pro.html.it
// Modified by Ryan Huber, VMC Communications
function enableTooltips(id){

	if(window.location.toString().toLowerCase().indexOf("https:") == 0){
		serverprotocol = "https";
	} else {
		serverprotocol = "http";
	}

	preloadImage(serverprotocol + "://www.vanderbilthealth.com/images/tooltip.gif", 20);
	var links,i,h;
	h=document.createElement("span");
	h.id="btc";
	h.setAttribute("id","btc");
	h.style.zIndex = 100;
	h.style.position="absolute";
	document.getElementsByTagName("body")[0].appendChild(h);
	//$("body").append(h);
	if(id==null){
		links=document.getElementsByTagName("a");
	} else {
		links=document.getElementById(id).getElementsByTagName("a");
	}
	for(i=0;i<links.length;i++){
		var tooltip,t,b,s,l;
		t=links[i].getAttribute("title");
		if(!(t==null || t=="")){
		
			links[i].removeAttribute("title");
			
			var tooltip=document.createElement("span");
			tooltip.className="tooltip";
			tooltip.style.display="block";
				
			var s=document.createElement("span");
			s.className="top";
			s.style.display="block";
			
			s.appendChild(document.createTextNode(t));
			tooltip.appendChild(s);
			
			var b=document.createElement("span");
			b.className="bottom";
			
			
			b.style.display="block";
			
			tooltip.appendChild(b);
			links[i].tooltip=tooltip;
			links[i].onmouseover = function() {
			
				if(!document.getElementById("btc")){ return 0;}
				var d=document.getElementById("btc");
				if(d.childNodes.length>0) d.removeChild(d.firstChild);
				d.appendChild(this.tooltip);
				var curleft = curtop = 0;
				posx=0;
				posy=0;
				if (this.offsetParent) {
					obj = this;
					posx = obj.offsetLeft
					posy = obj.offsetTop
					poswidth = obj.offsetWidth;
					posheight = obj.offsetHeight;
					while (obj = obj.offsetParent) {
						posx += obj.offsetLeft
						posy += obj.offsetTop
					}
					posx = (posx + poswidth + posx)/2 +  2;
					posy = (posheight + posy);
				}
				d.style.left = (posx - (document.getElementById("btc").offsetWidth/2)) + "px";
				d.style.top = posy + "px"; 
			}
			links[i].onmouseout= function(){
				if(!document.getElementById("btc")){ return 0; }
				var d=document.getElementById("btc");
				if(d.childNodes.length>0) d.removeChild(d.firstChild);
			}
		}
	}
}


// This allows us to fade things in and out.
// Credit to: http://www.brainerror.net/scripts_js_blendtrans.php
function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
	if(document.getElementById(id)){
		var object = document.getElementById(id).style;
		object.opacity = (opacity / 101);
		object.MozOpacity = (opacity / 101);
		object.KhtmlOpacity = (opacity / 101);
		object.filter = "alpha(opacity=" + opacity + ")";
	}
} 


function setUpFilledImage() {
	
	textShowing = false;
	
	if(document.getElementById("filledimagetext")){
		if(window.location.toString().toLowerCase().indexOf("https:") == 0){
			serverprotocol = "https";
		} else {
			serverprotocol = "http";
		}
	
	
		preloadImage(serverprotocol + '://www.mc.vanderbilt.edu/vanderbilthealth/module_images/icon-downarrow-black.gif', 21);
		
		if(imgcaption.length>0){
		   document.getElementById("filledimageoverlayId").style.display='block';
		}
		
		textToShow = document.getElementById("filledimagetext");
	
		textToShow.style.display = "none";
		opacity("filledimagetext", 100, 1, 10);
		document.getElementById("toggleText").onclick = function(){
			if(!textShowing){
				textShowing = true;
				textToShow.style.display = "block";
				document.getElementById("toggleText").className = "link-arrowup";
				opacity("filledimagetext", 1, 100, 1000);
				this.blur();
				clearInterval(imageTransitionIntervalId);
				return false;
			} else {
				textShowing = false;
				textToShow.style.display = "none";
				//set the alpha back to 0
				textToShow.style.opacity = .01;
				textToShow.style.MozOpacity = .01;
				textToShow.style.KhtmlOpacity = .01;
				textToShow.style.filter = "alpha(opacity=.01)";
				document.getElementById("toggleText").className = "link-arrowdown";
				this.blur();
				if(imgsrc.length>1){
					imageTransitionIntervalId = setInterval(imageTransitionInterval, imageTransitionIntervalLength);
				}
				return false;
			}
		}
	}
}

var imageTransitionCount = 0;
var imageTransitionCountMax = 20;
var imageTransitionIntervalLength = 6000;
var imageTransitionIntervalId;
var imgsrc = new Array();
var imgcaption = new Array();
var imgfull = new Array();
var preloadedImagesArray = new Array();


function preloadImage(imgSrc, i){
	if (document.images) {
		preloadedImagesArray[i] = new Image();
		preloadedImagesArray[i].src = imgSrc;
	}	
}



for(i=0; i<imgsrc.length; i++){
	preloadImage('images/' + imgsrc[i], i);
}

var currentImage = 0;
function setUpImageTransition(){

	if(document.getElementById("filledimageoverlayId") && imgcaption[0]==""){
		captionarea = document.getElementById("filledimageoverlayId");
		removed = captionarea.parentNode.removeChild(captionarea);
	}

	if(imgsrc.length>1 && document.getElementById("filledimage-topimageId")){
		frontImage = document.getElementById("filledimage-topimageId");
		backImage = document.getElementById("filledimageId");
		currentImage = (currentImage+1)%imgsrc.length;
		frontImage.style.backgroundImage = "url(images/" + imgsrc[currentImage] + ")";
		frontImage.style.opacity = .01;
		frontImage.style.MozOpacity = .01;
		frontImage.style.KhtmlOpacity = .01;
		frontImage.style.filter = "alpha(opacity=.01)";
		frontImage.style.visibility = "hidden";
	
		imageTransitionIntervalId = setInterval(imageTransitionInterval, imageTransitionIntervalLength);
	}

}

function imageTransitionInterval(){
	if(imageTransitionCount<imageTransitionCountMax){
		imageTransitionCount++;
		frontImage = document.getElementById("filledimage-topimageId");
		backImage = document.getElementById("filledimageId");
		if(frontImage.style.visibility == "visible"){
			// fade out front
			opacity(frontImage.id, 100, 1, 1000);
			if(document.getElementById("toggleText")&&imgcaption[1]!=""){
				opacity("toggleText", 100, 1, 500);
			}
			setTimeout(hideFrontandChange, 1010);
		
		} else {
			// fade in front
			frontImage.style.visibility = "visible";
			opacity(frontImage.id, 1, 100, 1000);
			if(document.getElementById("toggleText")&&imgcaption[1]!=""){
				opacity("toggleText", 100, 1, 1000);
			}
			setTimeout(changeBack, 1010);
		}
	} else {
		clearInterval(imageTransitionIntervalId);
	}
}
function hideFrontandChange(){
	frontImage.style.visibility = "hidden";
	frontImage.style.backgroundImage = "url(images/" + imgsrc[(currentImage+1)%imgsrc.length] + ")";
	if(document.getElementById("toggleText")&&imgcaption[currentImage]!=""){
		document.getElementById("toggleText").innerHTML = imgcaption[currentImage];
	}
	if(document.getElementById("filledimagetext")&&imgcaption[currentImage]!=""){
		document.getElementById("filledimagetext").innerHTML = imgfull[currentImage];
	}
	if(imgcaption[currentImage]!=""){
		opacity("toggleText", 1, 100, 10);
	}
	currentImage = (currentImage+1)%imgsrc.length;
}
function changeBack(){
	backImage.style.backgroundImage = "url(images/" + imgsrc[(currentImage+1)%imgsrc.length] + ")";
	if(document.getElementById("toggleText")&&imgcaption[currentImage]!=""){
		document.getElementById("toggleText").innerHTML = imgcaption[currentImage];
	}
	if(document.getElementById("filledimagetext")&&imgcaption[currentImage]!=""){
		document.getElementById("filledimagetext").innerHTML = imgfull[currentImage];
	}
	if(imgcaption[currentImage]!=""){
		opacity("toggleText", 1, 100, 10);
	}
	currentImage = (currentImage+1)%imgsrc.length;
}


function checkRequiredInputs(){	
	
	problemFound = false;
	
	inputs = document.getElementsByTagName("input");
	for(i=0;i<inputs.length;i++){
		if(inputs[i].getAttribute('required') == 'true' && inputs[i].value==""){
			AddClassName(inputs[i],"requiredFieldEmpty");
			problemFound = true;
		} else {
			RemoveClassName(inputs[i],"requiredFieldEmpty");
		}
	}
	
	inputs = document.getElementsByTagName("textarea");
	for(i=0;i<inputs.length;i++){
		if(inputs[i].getAttribute('required') == 'true' && inputs[i].value==""){
			AddClassName(inputs[i],"requiredFieldEmpty");
			problemFound = true;
		} else {
			RemoveClassName(inputs[i],"requiredFieldEmpty");
		}
	}
	
	
	if(problemFound){
		alert("There are some empty fields requiring responses.");
		return false;
	} else {
		return true;
	}
	
}


function HasClassName(objElement, strClass)
   {

   // if there is a class
   if ( objElement.className )
      {

      // the classes are just a space separated list, so first get the list
      var arrList = objElement.className.split(' ');

      // get uppercase class for comparison purposes
      var strClassUpper = strClass.toUpperCase();

      // find all instances and remove them
      for ( var i = 0; i < arrList.length; i++ )
         {

         // if class found
         if ( arrList[i].toUpperCase() == strClassUpper )
            {

            // we found it
            return true;

            }

         }

      }

   // if we got here then the class name is not there
   return false;

   }

function AddClassName(objElement, strClass, blnMayAlreadyExist)
   {

   // if there is a class
   if ( objElement.className )
      {

      // the classes are just a space separated list, so first get the list
      var arrList = objElement.className.split(' ');

      // if the new class name may already exist in list
      if ( blnMayAlreadyExist )
         {

         // get uppercase class for comparison purposes
         var strClassUpper = strClass.toUpperCase();

         // find all instances and remove them
         for ( var i = 0; i < arrList.length; i++ )
            {

            // if class found
            if ( arrList[i].toUpperCase() == strClassUpper )
               {

               // remove array item
               arrList.splice(i, 1);

               // decrement loop counter as we have adjusted the array's contents
               i--;

               }

            }

         }

      // add the new class to end of list
      arrList[arrList.length] = strClass;

      // add the new class to beginning of list
      //arrList.splice(0, 0, strClass);
      
      // assign modified class name attribute
      objElement.className = arrList.join(' ');

      }
   // if there was no class
   else
      {

      // assign modified class name attribute      
      objElement.className = strClass;
   
      }

   }

function RemoveClassName(objElement, strClass)
   {

   // if there is a class
   if ( objElement.className )
      {

      // the classes are just a space separated list, so first get the list
      var arrList = objElement.className.split(' ');

      // get uppercase class for comparison purposes
      var strClassUpper = strClass.toUpperCase();

      // find all instances and remove them
      for ( var i = 0; i < arrList.length; i++ )
         {

         // if class found
         if ( arrList[i].toUpperCase() == strClassUpper )
            {

            // remove array item
            arrList.splice(i, 1);

            // decrement loop counter as we have adjusted the array's contents
            i--;

            }

         }

      // assign modified class name attribute
      objElement.className = arrList.join(' ');

      }
   // if there was no class
   // there is nothing to remove

   }

