function slideshow() {
		// load arguments as objects and set defaults
		var a = { objName:"ss", fadeSpeed:10 };
		for (var n in arguments[0]) 
		{ a[n]=arguments[0][n]; }
		
		this.slideBaseId = 'slide';
		this.numberBaseId = 'slide_number';
		this.slideImageBaseId = 'slide_image';
		this.slideLinksBaseId = 'slidelinks_container';
		this.slides = [];
		this.slideLinks = [];
		this.last = 0;
		this.current = 1;
		this.fadeTimers = []; 
		this.hashNumber = 1;
		
		// loads all the slid images. This is run with addLoadEvent at the end
		this.loadSlides = function()
		{
			function loadMe(elem_id,array_num) {
				var elem = document.getElementById(elem_id);
				
				if (elem != null) {
					elem.src = slide_images[array_num];
				}
			}
			
			// load image after
			loadMe(this.slideImageBaseId + (parseInt(this.hashNumber)+1),this.hashNumber);
			// load image before
			loadMe(this.slideImageBaseId + (parseInt(this.hashNumber)-1),this.hashNumber-2);
			// load the rest
			for (i=1;i<=slide_images.length;i++) {
				loadMe(this.slideImageBaseId + (String(i)),i-1);
			}
		};
		
		// this is used to move to a slide without a fade if need be
		this.showSlide = function()
		{
			this.current = this.hashNumber;
			
			this.slides[this.current].style.visibility = 'visible';
			this.slideLinks[this.current].style.visibility = 'visible';
			
			// add in your slide numbers to the navigation areas
			document.getElementById(this.numberBaseId).innerHTML = this.current;
			document.getElementById(this.numberBaseId + '_right').innerHTML = this.current;
		};


		// registers a page view
		this.pageView = function()
		{
			var URLFull,URL,pageURL;
			// Register Pageview
			try {
			    var pageNumber = this.current;
			
			    pageURL = String(document.location);
			    pageURL = pageURL.replace("?articlekey=", "-");

			    // Makes each page a pageview
			    wmdPageview(pageURL, pageNumber);
			}
			catch(e) {}
		};




		
		// refreshes the banner and right side ads
		this.refreshAllAds = function(slideNumber)
		{
			function refreshAd(strAd,transTileId) {
				
				var objAd = document.getElementById(strAd);
				var okToLoop = 0;

				if (objAd) {
		
					var theObjects = objAd.getElementsByTagName("*");

					/* Makes sure there is an approved iframe before running a possible infinte loop */
					for (i=0;i<=theObjects.length-1;i++)
						{
							if (theObjects[i].id.indexOf("Ad_Iframe") != -1) {
								okToLoop+=1;
							}
						}
					
					/* Runs two loops that remove all other objects other then the original webmd iframe */
					if (okToLoop == 1)
					{
						while(theObjects.length > 1) {
							for (i=0;i<=theObjects.length-1;i++)
							{
								if (theObjects[i].id.indexOf("Ad_Iframe") < 0) {
									objAd.removeChild(theObjects[i]);
								}
							}
						}
					}
		
					/* Grabs the src of either the iframe or script whichever on is in the div */
					iframe = objAd.getElementsByTagName('iframe')[0];
					adScript = objAd.getElementsByTagName('script')[0];
					
					if(!iframe) {
						var strHTML = adScript.src;
					}
					else {
						var strHTML = iframe.src;
					}
						
					/* Refreshes the other variables in the src */ 
					strHTML = strHTML.replace(new RegExp("transactionID=[0-9]+"), "transactionID=" + transTileId);
					strHTML = strHTML.replace(new RegExp("tile=[0-9]*"), "tile=" + transTileId);
					
					/* for slide ad targeting */
					strHTML.indexOf('frame=') != -1 ? strHTML = strHTML.replace(new RegExp("frame=[0-9]*"), "frame=" + slideNumber) : strHTML = strHTML + '&frame=' + slideNumber;
					if(slideNumber == 1) {
						strHTML = strHTML.replace(new RegExp("&frame=[0-9]*"), "");
					}
			
					if(!iframe) {
						adScript.contentWindow.location.replace(strHTML);
					}
					else {
					    // Clear style to fix pointroll ads
					    //$(iframe).attr('style', '');
					    iframe.setAttribute("style", "");					
						iframe.contentWindow.location.replace(strHTML);
					}
				}
			}
			
			var transTileId = Math.round(99999999*Math.random());
			refreshAd('slideshow_ad_300x250',transTileId);
			refreshAd('bannerAd_fmt',transTileId);
			
		};
		
		// moves to the next slide using the fade
		this.fadeNext = function () {
		    // if this.current has moved past the number of slides, bring it back to the beginning, otherwise, pick next slide
		    if (this.current >= this.slides.length - 1)
		    	{ moveNextChainedSlideshow(s_asset); }
		    else 
            		{this.last = this.current; this.current++;}

		        // fade in current slide, fade out last one
		        this.initFade(this.current, 0, this.slides[this.current], true, 100);
		        this.slideLinks[this.current].style.visibility = 'visible';

		        this.initFade(this.last, 100, this.slides[this.last], false, 0);
		        this.slideLinks[this.last].style.visibility = 'hidden';


		        // add in your slide numbers to the navigation areas
		        document.getElementById(this.numberBaseId).innerHTML = this.current;
		        document.getElementById(this.numberBaseId + '_right').innerHTML = this.current;

		        // count page view and refresh ads
		        this.pageView();
		        this.refreshAllAds(this.current);
		}; 
		
		// backs up a slide using the fade
		this.fadePrev = function() 
		{

			// if you are on slide 1, go back to last slide, otherwise, pick previous slide
			if (this.current == 1) 
			{this.current = this.slides.length-1;;this.last = 1;}
			else 
			{this.last = this.current;this.current--;}
			
			// fade out current slide, fade in last one
			this.initFade(this.current,0,this.slides[this.current],true,100); 
			this.slideLinks[this.current].style.visibility = 'visible';
			
			this.initFade(this.last,100,this.slides[this.last],false,0); 
			this.slideLinks[this.last].style.visibility = 'hidden';
			
			// add in your slide numbers to the navigation areas
			document.getElementById(this.numberBaseId).innerHTML = this.current;
			document.getElementById(this.numberBaseId + '_right').innerHTML = this.current;
			
			// count page view and refresh ads
			this.pageView();
			this.refreshAllAds(this.current);
		}; 
			
		// this initiaties a fade from one image to another
		this.initFade = function(i,opacity,theObject,fadeIn,fadeLimit) 
		{
			// i = which timer you are using. I'm using the image numbers as its timer. This allows for multiple fades at once.
			// opacity = the opacity at which you start your fades. For example, you can start at 10 if you want. 
			// theObject = which object you are fading
			// fadeIn = true for a fade in, false for a fade out
			// fadeLimit = opacity at which you stop. For example, you could stop with the object at 90
			
			// clear timer in case another fade with same timer is going on
			clearInterval(this.fadeTimers[i]);
			// set object to chosen opacity before starting fade, and make sure its visible
			this.setOpacity(i,opacity,theObject);
			theObject.style.visibility = 'visible';

			// fade in, or fade out depending on arguments
			if (fadeIn) {
				setTheInterval = 'window.setInterval(function() { ' + a.objName + '.setOpacity(i,opacity,theObject,fadeIn,fadeLimit); opacity = opacity + 4;},a.fadeSpeed)';
				this.fadeTimers[i] = eval(setTheInterval);
			}
			else {
				setTheInterval = 'window.setInterval(function() { ' + a.objName + '.setOpacity(i,opacity,theObject,fadeIn,fadeLimit); opacity = opacity - 4; if (opacity == 0) theObject.style.visibility = "hidden"; },a.fadeSpeed)';
				this.fadeTimers[i] = eval(setTheInterval);}
		}; 
		
		// function that is run on an interval to do the actual fade work
		this.setOpacity = function(i,opacity,theObject,fadeIn,fadeLimit) {
			// if you have reached whatever limit, clear timer
			if (opacity == fadeLimit) {clearInterval(this.fadeTimers[i]);}
			
			// set the opactity to whatever out of 100 and perform cross browser opacity move
			var setOpacity = opacity/100;
			theObject.style.filter = "alpha(opacity:"+opacity+")";
			theObject.style.KHTMLOpacity = setOpacity;
			theObject.style.MozOpacity = setOpacity;
			theObject.style.opacity = setOpacity;
		}; 
		
		this.init = function() {
			var count = 1;
			var s;
			// setup slides and texts arrays
			while (s = document.getElementById(this.slideBaseId + count)) {
				this.slides[count] = s;
				count++;
			}
			count = 1;
			while (s = document.getElementById(this.slideLinksBaseId + count)) {
				this.slideLinks[count] = s;
				count++;
			}
			
			// preload the first image based on the URL from which you enter
			if (location.hash) {
				var imageNumber = URLFull=String(location.hash).split("#");
				this.hashNumber = imageNumber[1];
				
				// grab only the image slide number from hash
				var imageSlide = document.getElementById(this.slideImageBaseId + this.hashNumber);
				
				// make sure we are on an image and not the text slide
				if (imageSlide) {
					// go ahead and load the image now
					document.getElementById(this.slideImageBaseId + this.hashNumber).src = slide_images[this.hashNumber-1];
				}
			}
			else {
				// if no hash, we just load the first image and set the hashNumber to 1
				document.getElementById(this.slideImageBaseId + '1').src = slide_images[0];		
			}
			
			// shows whichever slide you are supposed to go to based on hash
			this.showSlide();
		}; 
		this.jumpToSlide = function() 
		{


			//set this.last and this.current to their respective values.
			
			// fade out current slide, fade in last one
			this.initFade(this.current,0,this.slides[this.current],true,100); 
			this.slideLinks[this.current].style.visibility = 'visible';
			
			this.initFade(this.last,100,this.slides[this.last],false,0); 
			this.slideLinks[this.last].style.visibility = 'hidden';
			
			// add in your slide numbers to the navigation areas
			document.getElementById(this.numberBaseId).innerHTML = this.current;
			document.getElementById(this.numberBaseId + '_right').innerHTML = this.current;
			
			// count page view and refresh ads
			this.pageView();
			this.refreshAllAds(this.current);
		}; 

}
/* Repeating Functions from WebMD scripts.js to create a standalone slideshow */
/* function to add an onload event */
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') 
  {
    window.onload = func;
  } else 
    {
       window.onload = function() 
    {
      oldonload();
      func();
    }
  }
}	
/* function to change a class */
function setClass(objectID,newClass) {
	var object = document.getElementById(objectID);
	if (object) {
		object.className = newClass;
	}
}
function moveNextChainedSlideshow(articleID) {
    $.ajax({
        type: "GET",
        url: "/script/main/nextslideshow.asp",
        data: "id=" + articleID,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        error: function (xhr, ajaxOptions, thrownError) {
            alert(xhr.message);
        },
        success: function (response) {
            if (typeof (response) != 'undefined') {
                if (response.id > 0) {
                    //This is where we need the logic for showing the Loading Next "Title" spinner contained in response.title
                    $('.slides').prepend('<div class="animatedNxtGif"><div class="animatedNxtGifMask"></div><h3>Loading Next Slideshow</h3><h4 class="nextSlideTitle">' + response.title + '</h4></div>');
                    $('.slide').hide();
                    //$('.animatedNxtGif').show();
		    $('.animatedNxtGif').fadeIn('slow');    	
                    setTimeout(function () {
                        window.location = "/script/main/art.asp?articlekey=" + response.id;
                    }, 2500);
                }
                else {
                    window.location = "http://www.rxlist.com/drug-slideshows-all/article.htm";
                }
            }
            else
                window.location = "http://www.rxlist.com/drug-slideshows-all/article.htm";
        }
    });
}
