// popup window function, based on original code by James Craig
var sUserAgent = navigator.userAgent.toLowerCase();
var isOp = (sUserAgent.indexOf('opera')!=-1)?true:false;

// for old static pages, make sure we include the player javascript
try {NPR} catch (e) {document.write("<script type='text/javascript' src='/templates/javascript/player/player.js'></script>\n")};

function popUp(oAnchor,sProps,sWindow){
    var sUrl = '';
    if(typeof(oAnchor)=='string') sUrl = oAnchor;
    else {
        if(oAnchor.getAttribute) sUrl = oAnchor.getAttribute('href');
        if(sUrl=='') sUrl = oAnchor.href;
    }
    if(sUrl=='') return true;
    var sWindowName = sWindow?sWindow:'nprPopup';
    if(!sProps) sProps = null;
    if(sUrl) var oPopup = window.open(sUrl,sWindowName,sProps);
    if(oPopup && !isOp) oPopup.focus();
    return (oPopup)?false:true;
}
function setUserVars()
    {
        if(navigator.appName.indexOf('Internet Explorer') != -1)
            {
                window.isIE = true;
            }
        window.userPlatform = navigator.platform;
        if((window.userPlatform.indexOf("mac") != -1) || (window.userPlatform.indexOf("MAC") != -1) || (window.userPlatform.indexOf("Mac") != -1))
            {
                window.userPlatform = "mac";
            }
    }
setUserVars();
function adCompatible(mediaPreference)
    {
        /*returnVal = false;
        if(((window.isIE) && (window.userPlatform != "mac")) && ((mediaPreference == "WM") || (mediaPreference == "RM")) )
            {
                returnVal = true;
            }
        return returnVal;*/
        if (navigator.userAgent.indexOf("Windows\ NT\ 5.1") != -1)
        {
            // alert('Windows XP');
            return true;
        }
        else
        {
            //alert('Not Windows XP');
            return true;
        }
        // alert ('navigator.userAgent=' + navigator.userAgent);
        return true;
    }
function doAd(newURL, mediaPreference)
    {
        if(adCompatible(mediaPreference))
            {
                location.href=newURL + "&getUnderwriting=1";
            }
        else
            {
                location.href=newURL;
            }   
    }
function toNumericMonth(month)
    {
        var monthArray = new Object();
        monthArray["jan"] = 0;
        monthArray["feb"] = 1;
        monthArray["mar"] = 2;
        monthArray["apr"] = 3;
        monthArray["may"] = 4;
        monthArray["jun"] = 5;
        monthArray["jul"] = 6;
        monthArray["aug"] = 7;
        monthArray["sep"] = 8;
        monthArray["oct"] = 9;
        monthArray["nov"] = 10;
        monthArray["dec"] = 11;
        return monthArray[month.toLowerCase()];
    }
function toFullMonth(num)
    {
        var monthArray = new Object();
        monthArray[0] = "January";
        monthArray[1] = "February";
		monthArray[2] = "March";
		monthArray[3] = "April";
		monthArray[4] = "May";
		monthArray[5] = "June";
		monthArray[6] = "July";
		monthArray[7] = "August";
		monthArray[8] = "September";
		monthArray[9] = "October";
		monthArray[10] = "November";
		monthArray[11] = "December";
        return monthArray[num];
    }
function parseZero(valToUse)
    {
        if(valToUse.length > 1 && valToUse.charCodeAt(0) == 0)
            {
                valToUse = valToUse.substr(1, valToUse.length);
            }
        return valToUse;
    }
function setDate(dateToUse)
    {
        dateArray = dateToUse.split("-");
        dateToReturn = new Date();
        dateToReturn.setDate(parseZero(dateArray[0]));
        dateToReturn.setMonth(toNumericMonth(dateArray[1].toLowerCase()));
        dateToReturn.setYear(dateArray[2]);
        dateToReturn = Date.parse(dateToReturn);
        return dateToReturn;
    }
function compareDates(date1, date2)
    {
        date1 = setDate(date1);
        date2 = setDate(date2);
        returnVal = "after";
        if(date2 < date1)
            {
                returnVal = "before";           
            }
        return returnVal;
    }
function checkMediaPrefs(mediaPrefVals, valToTest)
    {
        match = false;
        for(i = 0; i < mediaPrefVals.length; i++)
            {
                if(mediaPrefVals[i] == valToTest)
                    {
                        match = true;
                    }
            }
        return match;
    }

function trimString(sInString) 
{
  sInString = sInString.replace( /^\s+/g, "" );// strip leading
  return sInString.replace( /\s+$/g, "" );// strip trailing
}

function makePrefArray(mediaPreference)
{
    numRetArray = 0;
    retArray = new Array();
    temp = new Array();
    temp = mediaPreference.split(",");
    for(i = 0; i < temp.length; i++)
    {
        if(trimString(temp[i]) != "")
        {
            retArray[numRetArray] = temp[i].toUpperCase();
            numRetArray++;
        }    
    }
    return retArray;
}

function goNewURL(newURL, saURL, winTarget)
    {
        if(saURL == "")
            {
                saURL = newURL;
            }
        if(window.sa_onclick)
            {
                sa_onclick(saURL);
            }
        if(winTarget == "new")
            {
                window.open(newURL, '', "width=540,height=360,toolbar=none,location=none,menubar=none,status=none,resizable=yes");
            }
        else
            {
                location.href= newURL;
            }
    }
function getMedia(prgCode, showDate, segNum, mediaAvailable)
    {
        nprcookie = get_cookie('sauid');
        
        mediaAvailArray = makePrefArray(mediaAvailable);
        if((segNum == "all") || (segNum == "ALL"))
        {
            segNum = "";
        }
        if(checkMediaPrefs(mediaAvailArray, "RAM") && (!checkMediaPrefs(mediaAvailArray, "RM")) && (!checkMediaPrefs(mediaAvailArray, "WM")))
        {
            // only ram available
            goNewURL("http://www.npr.org/templates/dmg/dmg.php?prgCode=" + prgCode + "&showDate=" + showDate + "&segNum=" + segNum + "&mediaPref=RAM", "", "");
        }
        else if(checkMediaPrefs(mediaAvailArray, "RM") && !checkMediaPrefs(mediaAvailArray, "WM"))
        {
            // only real available
            goNewURL("http://www.npr.org/templates/dmg/dmg.php?prgCode=" + prgCode + "&showDate=" + showDate + "&segNum=" + segNum + "&mediaPref=RM", "", "");
        }
        else if(checkMediaPrefs(mediaAvailArray, "WM") && !checkMediaPrefs(mediaAvailArray, "RM"))
        {
            // only windows available
            if(nprcookie != null && nprcookie != "undefined")
            {
                goNewURL("http://www.npr.org/templates/dmg/dmg_wmref.php?prgCode=" + prgCode + "&showDate=" + showDate + "&segNum=" + segNum + "&mediaPref=WM&sauid=" + nprcookie, "", "");
            }
            else
            {
                goNewURL("http://www.npr.org/templates/dmg/dmg_wmref.php?prgCode=" + prgCode + "&showDate=" + showDate + "&segNum=" + segNum + "&mediaPref=WM", "", "");
            }
            
        }       
        else if((checkMediaPrefs(mediaAvailArray, "RAM") || checkMediaPrefs(mediaAvailArray, "RM")) && checkMediaPrefs(mediaAvailArray, "WM"))
        {
            // windows available and at least one of real or ram available

                    if(checkCookie("NPRMediaPref"))
                        {
                            mediaPreference = checkCookie("NPRMediaPref");
                            if(mediaPreference == "WM")
                            {
                                if(nprcookie != null && nprcookie != "undefined")
                                {
                                    newURL = "http://www.npr.org/templates/dmg/dmg_wmref.php?prgCode=" + prgCode + "&showDate=" + showDate + "&segNum=" + segNum + "&mediaPref=" + mediaPreference + "&sauid=" + nprcookie;
                                }
                                else
                                {
                                    newURL = "http://www.npr.org/templates/dmg/dmg_wmref.php?prgCode=" + prgCode + "&showDate=" + showDate + "&segNum=" + segNum + "&mediaPref=" + mediaPreference;
                                }
                            }
                            else
                            {
                                if(checkMediaPrefs(mediaAvailArray, "RAM"))
                                {
                                    newURL = "http://www.npr.org/templates/dmg/dmg.php?prgCode=" + prgCode + "&showDate=" + showDate + "&segNum=" + segNum + "&mediaPref=RAM";
                                }
                                else
                                {
                                    newURL = "http://www.npr.org/templates/dmg/dmg.php?prgCode=" + prgCode + "&showDate=" + showDate + "&segNum=" + segNum + "&mediaPref=" + mediaPreference;
                                } 
                            }
                            if(window.sa_onclick)
                                {
                                    sa_onclick(newURL);
                                }
                            doAd(newURL, mediaPreference);
                        }
                    else
                        {
                            goNewURL("http://www.npr.org/templates/dmg/audioplayer.php?prgCode=" + prgCode + "&showDate=" + showDate + "&segNum=" + segNum, "", "new");
                        }
                

        }
    }
function getStaticMedia(URL, mediaPreference)
{
    sauid = checkCookie("sauid");
    referrer = document.referrer;

    mediaPrefVals = makePrefArray(mediaPreference);

    if(URL.indexOf("http://") != -1)
    {
        goNewURL(URL, '', '');
    }
    else if(URL.toUpperCase() == "NEWSCAST")
    {
        getNewsCast(); 
    }
    else if(URL.toUpperCase() == "PROGRAMSTREAM")
    {
        getProgramStream(); 
    }           
    else if((checkMediaPrefs(mediaPrefVals, "WM")) && (checkMediaPrefs(mediaPrefVals, "RM")))
    { 
        mediaPreference = checkCookie("NPRMediaPref");
        if((mediaPreference == false) || (mediaPreference == "RM"))
        {
            goNewURL("http://www.npr.org/templates/dmg/dmg.php?mediaURL=" + URL + "&mediaType=RM", URL, "");
        }
        else if(mediaPreference == "WM")    
        {
            goNewURL("http://www.npr.org/templates/dmg/dmg.php?mediaURL=" + URL + "&mediaType=WM", URL, "");
        }
    }
    else if((checkMediaPrefs(mediaPrefVals, "RM")) && (!checkMediaPrefs(mediaPrefVals, "WM")))
    {
        goNewURL("http://www.npr.org/templates/dmg/dmg.php?mediaURL=" + URL + "&mediaType=RM", URL, "");
    }
    else if((checkMediaPrefs(mediaPrefVals, "WM")) && (!checkMediaPrefs(mediaPrefVals, "RM")))
    {
        goNewURL("http://www.npr.org/templates/dmg/dmg.php?mediaURL=" + URL + "&mediaType=WM", URL, "");
    }

}
function getTopicMedia(topicId, topicName, mediaPreference)
    {
        topicName = escape(topicName);
        nprcookie = get_cookie('sauid');
        mediaPrefVals = makePrefArray(mediaPreference); 
        if(checkCookie("NPRMediaPref"))
            {
                mediaPreference = checkCookie("NPRMediaPref");
                newURL = "http://www.npr.org/templates/dmg/dmg.php?topicId=" + topicId + "&topicName=" + topicName + "&mediaPref=" + mediaPreference;
                if(mediaPreference == "WM")
                {
                    if(nprcookie != null && nprcookie != "undefined")
                    {
                        newURL = "http://www.npr.org/templates/dmg/dmg_wmref.php?topicId=" + topicId + "&topicName=" + topicName + "&mediaPref=" + mediaPreference + "&sauid=" + nprcookie;
                    }
                    else
                    {
                        newURL = "http://www.npr.org/templates/dmg/dmg_wmref.php?topicId=" + topicId + "&topicName=" + topicName + "&mediaPref=" + mediaPreference;
                    }
                    
                }

                if(window.sa_onclick)
                    {
                        sa_onclick(newURL);
                    }
                doAd(newURL, mediaPreference);
            }
        else
            {
                goNewURL("http://www.npr.org/templates/dmg/audioplayer.php?topicId=" + topicId + "&topicName=" + topicName, "", "new");
            }       
    }
function getLatestShow(prgCode)
    {
        if(checkCookie("NPRMediaPref"))
            {
                mediaPreference = checkCookie("NPRMediaPref");
                goNewURL("http://www.npr.org/templates/dmg/dmg.php?getLatestShow=true&prgCode=" + prgCode + "&NPRMediaPref=" + mediaPreference, "", "new");
            }
        else
            {
                goNewURL("http://www.npr.org/templates/dmg/audioplayer.php?getLatestShow=true&prgCode=" + prgCode, "", "new");
            }
    }
function getFeaturedAudio(newURL)
    {
        nprcookie = get_cookie('sauid');
        if(checkCookie("NPRMediaPref"))
            {
                mediaPreference = checkCookie("NPRMediaPref");
                if(mediaPreference == "WM")
                    {
                        newURL += "&NPRMediaPref=WM";
                        newURL = replaceString(newURL, 'dmg.php', 'dmg_wmref.php'); 
                        if(nprcookie != null && nprcookie != "undefined")
                        {
                            newURL += "&sauid=" + nprcookie;
                        }
                        
                    }
                else
                    {
                        newURL += "&NPRMediaPref=RM";
                    }
                if(window.sa_onclick)
                    {
                        sa_onclick(newURL);
                    }
                doAd(newURL, mediaPreference);
            }
        else
            {
                //newURL += "&NPRMediaPref=RM";
                //goNewURL(newURL, "", "new");
                goNewURL("http://www.npr.org/templates/dmg/audioplayer.php?newURL=" + newURL, '', 'new');
            }
    }
function getProgramStream()
    {
        NPR.Player.openPlayer(0,0,null,NPR.Player.Action.LIVE_STREAM, NPR.Player.Type.PROGRAM_STREAM, NPR.Player.Mode.FROM_FILE);
    }
function getNewsCast()
    {
        NPR.Player.openPlayer(0,0,null,NPR.Player.Action.PLAY_NOW, NPR.Player.Type.NEWSCAST, NPR.Player.Mode.FROM_FILE);
    }
function getMusicButton(songId, musicAudioFileName, prgCode)
    {
        if(checkCookie("NPRMediaPref"))
            {
                mediaPreference = checkCookie("NPRMediaPref");
                goNewURL("http://www.npr.org/templates/dmg/dmg.php?getMusicButton=true&songId=" + songId + "&musicAudioFileName=" + musicAudioFileName + "&prgCode=" + prgCode + "&NPRMediaPref=" + mediaPreference, "", "");
            }
        else
            {
                goNewURL("http://www.npr.org/templates/dmg/audioplayer.php?getMusicButton=true&songId=" + songId + "&musicAudioFileName=" + musicAudioFileName + "&prgCode=" + prgCode, '', "new");
            }
    }
//cookie code
function setCookie(cookieToSet, daysToExpiration, cookieValue)
    {
        var exp=new Date();
        exp.setTime(exp.getTime() + (1000 * 60 * 60 * 24 * daysToExpiration));
        document.cookie=cookieToSet + "=" + cookieValue + "; path=/; domain=npr.org; expires=" + exp.toGMTString();
    }
function checkCookie(cookieToCheck)
    {
        var allcookies = document.cookie;
        var pos = allcookies.indexOf(cookieToCheck + "=");
        if(pos != -1)
            {
                var start = pos + cookieToCheck.length + 1;
                var end = allcookies.indexOf(";", start);
                if(end == -1)
                    {
                        end = allcookies.length;
                    }
                return allcookies.substring(start, end);
            }
        else
            {
                return false;
            }
    }
function killCookie(cookieToKill)
    {
        setCookie(cookieToKill, -1, '');
        
        if(cookieToKill == 'station') {
        	$('.ddstn').slideUp(250, function () {
				$('#header .headercontent').removeClass("dd_active");
			});
			$('#globalstationlocation').html("\n");
			$('#station_info').html("\n");
        }
    }


// --------------------------------------------------------
// replaceString
// --------------------------------------------------------
//  description:  GENERIC REPLACE STRING FUNCTION
//
//  parameters:   
//      repStr is the string that will have the replace done to it
//      stringToFind is the string searched for in the repStr (and replaced, when found)
//      stringToRep is the string to replace when the stringToFind is found
//
//  RETURN newStr - the modified "repStr"
// 
function replaceString(repStr, stringToFind, stringToRep)
    {
        sFind = 0;
        newStr = repStr;

        while (sFind != -1)
            {
                // FIND THE NEXT OCCURENCE OF THE stringToFind
                sFind = newStr.indexOf(stringToFind);

                // IF THERE IS AN OCCURENCE, PERFORM THE REPLACE
                if (sFind != -1)
                    {
                        startString = newStr.substring(0, sFind); // GET THE STRING BEFORE stringToFind
                        endString = newStr.substring(sFind +  stringToFind.length, newStr.length); // GET THE STRING AFTER stringToFind
                        newStr = startString + stringToRep + endString; // CAT THE STRING BEFORE AND AFTER stringToFind AND INSERT stringToRep IN BETWEEN
                    }
            }

        return newStr;  // RETURN VALUE AFTER REPLACES
    }

function set_cookie( name, value, expires, path, domain, secure ) 
{
    // set time, it's in milliseconds
    var today = new Date();
    today.setTime( today.getTime() );

    /*
    if the expires variable is set, make the correct 
    expires time, the current script below will set 
    it for x number of days, to make it for hours, 
    delete * 24, for minutes, delete * 60 * 24
    */
    if ( expires )
    {
    expires = expires * 1000 * 60 * 60 * 24;
    }
    var expires_date = new Date( today.getTime() + (expires) );

    document.cookie = name + "=" +escape( value ) +
    ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
    ( ( path ) ? ";path=" + path : "" ) + 
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ( ( secure ) ? ";secure" : "" );
}

function get_cookie( name ) 
{
    
    var start = document.cookie.indexOf( name + "=" );
    var len = start + name.length + 1;
    if ( ( !start ) &&
    ( name != document.cookie.substring( 0, name.length ) ) )
    {
    return null;
    }
    if ( start == -1 ) return null;
    var end = document.cookie.indexOf( ";", len );
    if ( end == -1 ) end = document.cookie.length;
    return unescape( document.cookie.substring( len, end ) );
}
function get_source_code()
{
    var url = document.URL;
    var sc = url.match(/(&|\?)sc=(\w+)/);
    var sourceCode = url.match(/(&|\?)sourceCode=(\w+)/);
    var ft = url.match(/(&|\?)ft=(\w+)/);
    
    if(ft != null && ft[2] != null)
    {
        return '/sc=' + ft[2];
    }
    else if(sc != null && sc[2] != null)
    {
        return '/sc=' + sc[2];
    }
    else if(sourceCode != null && sourceCode[2] != null)
    {
        return '/sc=' + sourceCode[2];
    }
    else
    {
        return '';
    }    
}

function get_target()
{
    if(window.target != null)
    {
        return window.target;
    }
    else
    {
        return '';
    }
}

function getFinalPrefs(mediaPrefVals, valToTest)
{
    retPref = "";
    for(i = 0; i < mediaPrefVals.length; i++)
    {
        if(valToTest == "WM" && (mediaPrefVals[i] == "WM" || mediaPrefVals[i] == "WAX" || mediaPrefVals[i] == "ASX"))
        {
            retPref = mediaPrefVals[i];
        }
        else if(valToTest == "RM" && (mediaPrefVals[i] == "RM" || mediaPrefVals[i] == "RAM"))
        {
            retPref = mediaPrefVals[i];
        }
    }
    return retPref;
}

function choosePlayer(mediaAvailableVals, playerAvailableVals)
{
    countAvaPlayer = 0;
    avaMatchPlayer = "";
    for(i = 0; i < mediaAvailableVals.length; i++)
    {
        for(j=0; j < playerAvailableVals.length; j++)
        {
            if(mediaAvailableVals[i] == playerAvailableVals[j])
            {
                if(countAvaPlayer == 0)
                {
                    avaMatchPlayer = mediaAvailableVals[i];  
                    countAvaPlayer++;
                }
                else
                {
                    avaMatchPlayer += "," + mediaAvailableVals[i];
                }
            }
        }
    }
    return avaMatchPlayer;
}

function forceChoosePlayer(mediaAvailableVals)
{
    finalChoose = "";
    for(i = 0; i < mediaAvailableVals.length; i++)
    {
        if(mediaAvailableVals[i] == "WM" || mediaAvailableVals[i] == "ASX" || mediaAvailableVals[i] == "WAX")
        {
            finalChoose = mediaAvailableVals[i] ;
            break;
        }
        
    }
    
    if(finalChoose == "")
    {
        for(i = 0; i < mediaAvailableVals.length; i++)
        {
            if(mediaAvailableVals[i] == "RM" || mediaAvailableVals[i] == "RAM")
            {
                finalChoose = mediaAvailableVals[i];
                break;
            }    
        }
    }
    
    // here for mac machine user, need to reverse the preference order
    if(window.userPlatform == "mac" && finalChoose != "RM" && finalChoose != "RAM")
    {
        for(i = 0; i < mediaAvailableVals.length; i++)
        {
            if(mediaAvailableVals[i] == "RM" || mediaAvailableVals[i] == "RAM")
            {
                finalChoose = mediaAvailableVals[i];
                break;
            }    
        }
    }
    
    return finalChoose;
    
}

function getRandom(num)
{
    myRandomNum = '';
    for(myRandomNum = ''; myRandomNum.length < num; myRandomNum += Math.round(Math.random()*7));
    return myRandomNum;
}    
function getGUID()
{
    myGuid = get_cookie('GUID');
    if(myGuid == null || myGuid == "undefined")
    {
        for(myGuid = ''; myGuid.length < 32; myGuid += Math.round(Math.random()*7));
    }
    return myGuid;
}    

function popNewWindow(newURL)
{
    if(newURL)
    {
        popUp(newURL,'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=340,height=492','player');    
    }
}

// Add extra RAM format if end user installed RM player, OR ASX, WAX if user installed WM player. 
//   The reason is that we want to make choosePlayer func to work.
//   Available audio type maybe RAM, WAX, ASX, so we have to match this.    
function addExtraMediaType(availableMediaTypeArray)
{
    returnArray = new Array();
    mCounter = 0;
    for(i=0; i < availableMediaTypeArray.length; i++)
    {
        returnArray[mCounter] = availableMediaTypeArray[i];
        mCounter++;
        if(availableMediaTypeArray[i] == "RM")
        {
            returnArray[mCounter] = "RAM";
            mCounter++;
            returnArray[mCounter] = "RA";
            mCounter++;
            returnArray[mCounter] = "RMM";
            mCounter++;
        }
        else if(availableMediaTypeArray[i] == "WM")
        {
            returnArray[mCounter] = "ASX";
            mCounter++;
            returnArray[mCounter] = "WAX";
            mCounter++;
        }
    }
    return returnArray;
}

function checkFileMediaType(mediaAvailArray)
{
    for(i=0; i < mediaAvailArray.length; i++)
    {
        if(mediaAvailArray[i] == 'WM' || mediaAvailArray[i] == 'ASX' || mediaAvailArray[i] == 'WMA' || mediaAvailArray[i] == 'RM' || mediaAvailArray[i] == 'RAM' || mediaAvailArray[i] == 'RA' || mediaAvailArray[i] == 'RMM')
        {
            return true;
        }
    }
    return false;

}

function launchPlayer(baseId, baseType, baseDate, accParameters, mediaAvailable)
{
    // error code: 
    //  1. -- File not found
    //  2. -- No WM and RM player installed
    //  3. -- Installed Player Not Match Available Audio Type
    
    errorCode = 0;

    // create pageId, random 10 digit number and GUID
    pageId = getRandom(8);
    random10 = getRandom(10);
    myGuid = getGUID();
    
    // audioMediaType defined in detect_wmrm_player.js and assigned in story_base or other base php page
    // get common meida type between available segment media type and available installed media type

    wAudioMediaType = 'WM,RM';
    mediaAvailArray = makePrefArray(mediaAvailable);     // available segment media type
    if(!checkFileMediaType(mediaAvailArray))
    {
        errorCode = 1;
    }
    audioMediaTypeArray = makePrefArray(wAudioMediaType); // available installed player type 
    audioMediaTypeArray = addExtraMediaType(audioMediaTypeArray);
    if(audioMediaTypeArray.length == 0)
    {
        errorCode = 2;
    }
    avaMatchPlayer = choosePlayer(mediaAvailArray, audioMediaTypeArray); // find the common part of above 2
    avaMatchPlayerArray = makePrefArray(avaMatchPlayer); // make this common part as a array for following use
    
    // now get end user prefered media type
    userMediaPreference = checkCookie("NPRMediaPref");
    
    newURL = "http://www.npr.org/templates/dmg/popup.php?id=" + baseId + "&type=" + baseType + "&date=" + baseDate + "&au=1&pid=" + pageId + "&random=" + random10 + "&guid=" + myGuid + "&uaType=" + wAudioMediaType + "&aaType=" + mediaAvailable + "&upf=" + window.userPlatform + accParameters;
    if(baseType == 10)
    {
        newURL = "http://www.npr.org/templates/dmg/popup.php?id=100&type=10&staticUrl=" + baseDate + "&au=1&pid=" + pageId + "&random=" + random10 + "&guid=" + myGuid + "&uaType=" + wAudioMediaType + "&aaType=" + mediaAvailable + "&upf=" + window.userPlatform  + accParameters;    
    }
    
    if(userMediaPreference)
    {
        // has preference, now check this preference available or not
        finalSelMediaType = getFinalPrefs(avaMatchPlayerArray, userMediaPreference);
        if(finalSelMediaType != "")
        {
            // Bingo, end user preference matched and launch the player to play the media
            newURL += "&mtype=" + finalSelMediaType;
            popNewWindow(newURL);
        }
        else
        {
            if(avaMatchPlayerArray.length > 0)  // end user media preference is different to available media type
            {
                // we choose player for end user
                forceChooseMedia = forceChoosePlayer(avaMatchPlayerArray);
                if(forceChooseMedia != "")
                {
                    // Bingo, we successfully chosen a player for end user
                    newURL += "&mtype=" + forceChooseMedia;
                    popNewWindow(newURL);
                    return;
                }

            }
            
            if(avaMatchPlayerArray.length == 0 && errorCode == 0) // the situation is audio has WM format and installed only RM player, or vice versa
            {
               errorCode = 3;
            }
            // pop up error message window
            newURL += "&errorCode=" + errorCode;
            popNewWindow(newURL);

        }
    }
    else
    {
        // End user has no preference. We are going to choose for them
        forceChooseMedia = forceChoosePlayer(avaMatchPlayerArray);
        if(forceChooseMedia != "")
        {
            // Bingo, we successfully chosen a player for end user
            newURL += "&mtype=" + forceChooseMedia;
            popNewWindow(newURL);
        }
        else    // we can not choose player for end user
        {
            // pop up error message window
            newURL += "&errorCode=" + errorCode;
            popNewWindow(newURL);
        }
    }
}


function launchPlayerError(baseId, baseType, baseDate, accParameters, mediaAvailable, error_id)
{
    // error code: 
    //  1. -- File not found
    //  2. -- No WM and RM player installed
    //  3. -- Installed Player Not Match Available Audio Type
    
    // create pageId, random 10 digit number and GUID
    pageId = getRandom(8);
    random10 = getRandom(10);
    myGuid = getGUID();
    
    // audioMediaType defined in detect_wmrm_player.js and assigned in story_base or other base php page
    // get common meida type between available segment media type and available installed media type
    errorCode = 0;
    mediaAvailable = "";
    switch(error_id)
    {
        case 1: // No audio file exist
            mediaAvailable = "DC";
            break;
        case 2: // Not install WM and RM player, File available in WM and RM
            window.audioMediaType = "";
            mediaAvailable = "RM,WM";
            break;
        case 3: // RM not installed, but RM file available
            window.audioMediaType = "WM";
            mediaAvailable = "RM";
            break;
        case 4: // WM not installed, but WM file available
            window.audioMediaType = "RM";
            mediaAvailable = "WM";
            break;
        case 5: // WM,RM installed, ONLY WM file available    
            window.audioMediaType = "RM,WM";
            mediaAvailable = "WM";
            break;
        case 6: // WM,RM installed, ONLY RM file available    
            window.audioMediaType = "RM,WM";
            mediaAvailable = "RM";
            break;
        case 7: // WM installed, WM,RM file available    
            window.audioMediaType = "WM";
            mediaAvailable = "WM,RM";
            break;
        case 8: // RM installed, WM,RM file available    
            window.audioMediaType = "RM";
            mediaAvailable = "WM,RM";
            break;
            
    }
    wAudioMediaType = window.audioMediaType;
    mediaAvailArray = makePrefArray(mediaAvailable);     // available segment media type
    if(!checkFileMediaType(mediaAvailArray))
    {
        errorCode = 1;
    }
    audioMediaTypeArray = makePrefArray(wAudioMediaType); // available installed player type 
    audioMediaTypeArray = addExtraMediaType(audioMediaTypeArray);
    if(audioMediaTypeArray.length == 0)
    {
        errorCode = 2;
    }
    avaMatchPlayer = choosePlayer(mediaAvailArray, audioMediaTypeArray); // find the common part of above 2
    avaMatchPlayerArray = makePrefArray(avaMatchPlayer); // make this common part as a array for following use
    
    // now get end user prefered media type
    userMediaPreference = checkCookie("NPRMediaPref");
    
    newURL = "http://www.npr.org/templates/dmg/popup.php?id=" + baseId + "&type=" + baseType + "&date=" + baseDate + "&au=1&pid=" + pageId + "&random=" + random10 + "&guid=" + myGuid + "&uaType=" + wAudioMediaType + "&aaType=" + mediaAvailable + accParameters;
    
    if(userMediaPreference)
    {
        // has preference, now check this preference available or not
        finalSelMediaType = getFinalPrefs(avaMatchPlayerArray, userMediaPreference);
        if(finalSelMediaType != "")
        {
            // Bingo, end user preference matched and launch the player to play the media
            newURL += "&mtype=" + finalSelMediaType;
            popNewWindow(newURL);
        }
        else
        {
            if(avaMatchPlayerArray.length > 0)  // end user media preference is different to available media type
            {
                // we choose player for end user
                forceChooseMedia = forceChoosePlayer(avaMatchPlayerArray);
                if(forceChooseMedia != "")
                {
                    // Bingo, we successfully chosen a player for end user
                    newURL += "&mtype=" + forceChooseMedia;
                    popNewWindow(newURL);
                    return;
                }

            }
            
            if(avaMatchPlayerArray.length == 0 && errorCode == 0) // the situation is audio has WM format and installed only RM player, or vice versa
            {
               errorCode = 3;
            }
            // pop up error message window
            newURL += "&errorCode=" + errorCode;
            popNewWindow(newURL);

        }
    }
    else
    {
        // End user has no preference. We are going to choose for them
        forceChooseMedia = forceChoosePlayer(avaMatchPlayerArray);
        if(forceChooseMedia != "")
        {
            // Bingo, we successfully chosen a player for end user
            newURL += "&mtype=" + forceChooseMedia;
            popNewWindow(newURL);
        }
        else    // we can not choose player for end user
        {
            // pop up error message window
            newURL += "&errorCode=" + errorCode;
            popNewWindow(newURL);
        }
    }
}


/************************************************************************
 *  Get rul parameters
 ***********************************************************************/
function getURLParamArray()
{
    var aQueryString = new Array();
    var strHref = window.location.href;
    if( strHref.indexOf("?") > -1 )
    {
        var strQueryString = strHref.substr(strHref.indexOf("?"));
        var aQueryString = strQueryString.split("&");
    }
    return aQueryString;
}

function getURLParam(strParamName)
{
  var strReturn = "";
  var strHref = window.location.href;
  if ( strHref.indexOf("?") > -1 )
  {
    var strQueryString = strHref.substr(strHref.indexOf("?"));
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ )
    {
      if (aQueryString[iParam].indexOf(strParamName + "=") > -1 )
      {
        var aParam = aQueryString[iParam].split("=");
        strReturn = aParam[1];
        break;
      }
    }
  }
  return strReturn;
}

// fix for ie6, forces the topnav rollover images to cache and not flicker  
try
{
  document.execCommand("BackgroundImageCache", false, true);
} 
catch(err) {}

function collectionToArray(col) {
    a = new Array();
    for (i = 0; i < col.length; i++)
        a[a.length] = col[i];
    return a;
}


function concatCollections(col1, col2)
{
    if (col1 == null)
    {
        return collectionToArray(col2);
    }
    else if (col2 == null)
    {
        return collectionToArray(col1);
    }
    else
    {
        return collectionToArray(col1).concat(collectionToArray(col2));
    }
    
}

// toggle function for quizzes (on story page, in html insert at bottom of pg)

function toggleDetails(num) 

{

            if(document.getElementById)

            { 

                        objRef = document.getElementById("descriptionTxt" + num);

                        expanderRef = document.getElementById("expander" + num);

 

                        if (objRef.className=="closeDiv")

                        {

                                    objRef.className = "openDiv";

                                    expanderRef.setAttribute("src", "http://media.npr.org/images/quiz_hide.gif");

                                    expanderRef.setAttribute("alt", "Hide Answer");

                        }

                        else if (objRef.className=="openDiv")

                        {

                                    objRef.className = "closeDiv";

                                    expanderRef.setAttribute("src", "http://media.npr.org/images/quiz_show.gif");

                                    expanderRef.setAttribute("alt", "Show Answer");

                        }

            }

}  
