function slideshow() {
/* hardcode a height on the top banner ad container since were going to try to hide contents inside of it */
$('#bannerAd_rdr').css('height','90px');
// load arguments as objects and set defaults
var a = { objName:"ss", fadeSpeed:20 };
for (var n in arguments[0])
{ a[n]=arguments[0][n]; }
var ss = this;
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;
// Removes hash for slides
//location.hash = pageNumber;
URLFull=String(document.location).split("?");
pageURL=URLFull[0];
// Adds in fake page URL since we removed hash
// OLD CODE pageURL = pageURL + '#' + pageNumber;
pageURL = pageURL.replace(/#.*/,'') + '#' + pageNumber;
if (this.current == 1) {
URLFull=String(pageURL).split("#");
pageURL = URLFull[0];
}
// Makes each page a pageview
wmdPageview(pageURL, this.current);
}
catch(e) {}
};
// refreshes the banner and right side ads
this.refreshAllAds = function(slideNumber)
{
function refreshAd(strAd) {
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)
{
/* hide ad while refreshing */
$('#' + strAd).hide();
while(theObjects.length > 1) {
for (i=0;i<=theObjects.length-1;i++)
{
if (theObjects[i].id.indexOf("Ad_Iframe") < 0) {
try {objAd.removeChild(theObjects[i]);} catch (e) {}
}
}
}
}
/* 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.src = strHTML;
}
else {
// Clear style to fix pointroll ads
$(iframe).attr('style', '');
iframe.contentWindow.location.replace(strHTML);
}
/* show the ad now that we are done */
$('#' + strAd).show();
}
}
var transTileId = Math.round(99999999*Math.random());
var slideNum = this.current;
refreshAd('slideshow_ad_300x250');
refreshAd('bannerAd_fmt');
refreshAd('rightAd_fmt');
refreshAd('leftAd_fmt');
};
// 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)
{this.current = 1;this.last = this.slides.length-1;}
else
{this.last = this.current;this.current++;}
//refresh ads
this.refreshAllAds(this.current);
if (this.current == this.slides.length-1) {
if(typeof(goToSS) != 'undefined') {
document.getElementById('playControlNext').innerHTML = 'Next';
document.getElementById('previousRight').innerHTML = '';
setClass ("previousRightNumbers","invisible");
document.getElementById('previousLeft').innerHTML = '';
setClass ("previousLeftNumbers","invisible");
setTimeout('window.location.href = goToSS;', 3000);
}
}
// fade in current slide, fade out last one
this.initFade(this.current,0,this.slides[this.current],true,100);
if (typeof(goToSS) == 'undefined'){
this.slideLinks[this.current].style.visibility = 'visible';
}
else{
/* special case for seamless slideshow. if on the last slide do not fade in next slide links area */
if(this.current != this.slides.length-1){
this.slideLinks[this.current].style.visibility = 'visible';
}
}
this.initFade(this.last,100,this.slides[this.last],false,0);
if (typeof(goToSS) == 'undefined'){
this.slideLinks[this.last].style.visibility = 'hidden';
}
else{
/* special case for seamless slideshow. if on the last slide do not fade out slide links area */
if(this.current != this.slides.length-1){
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;
// unhide the previous links, unless this is a seamless slideshow and it's the last slide
if (!( (this.current == (this.slides.length-1)) && (typeof(goToSS) != 'undefined')))
{
if (document.getElementById("playControlLast").className == "disabled")
{document.getElementById("playControlLast").className = "";}
if (document.getElementById("playControlLastRight").className == "disabled")
{document.getElementById("playControlLastRight").className = "";}
}
// count page view
this.pageView();
//window.xmlFrame.getFile();
};
// 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)
{
if(typeof(goToSS) != 'undefined'){
this.current = this.slides.length-2;;this.last = 1;
}
else{
this.current = this.slides.length-1;;this.last = 1;
}
}
else
{this.last = this.current;this.current--;}
// refresh ads
this.refreshAllAds(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();
//window.xmlFrame.getFile();
};
// 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];
// hide the previous buttons if loading the first slide
document.getElementById("playControlLast").className = "disabled";
document.getElementById("playControlLastRight").className = "disabled";
}

/* insert iframe to ajax call for pageview 
document.domain = 'webmd.com';
var iframePane = document.getElementById('ContentPane3');
var iframeDiv = document.createElement('div');
iframeDiv.setAttribute('id','ajaxFrame');
iframeDiv.setAttribute('style','display:none;');
var iframeDivContent = '<iframe src="http://img.webmd.com/slideshow_fp/slideshow_fp_frame.html" width="0" height="0" id="xmlFrame" name="xmlFrame"></iframe>';
iframeDiv.innerHTML = iframeDivContent;
if (iframePane) {
iframePane.insertBefore(iframeDiv,iframePane.firstChild);
}*/
// shows whichever slide you are supposed to go to based on hash
this.showSlide();
};
}
/* 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 popInterstitial() {
var interstitial = window.open("/privacy_window.html","privacy_window","width=325,height=175,resizable=no,toolbar=no,left=350,top=300");
if (interstitial) {
interstitial.focus();
}
return false;
} 
