function decode64(inp)
{
    var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var out = "";                    // This is the output
    var chr1, chr2, chr3 = "";       // These are the 3 decoded bytes
    var enc1, enc2, enc3, enc4 = ""; // These are the 4 bytes to be decoded
    var i = 0;                       // Position counter

    // Remove all characters that are not A-Z, a-z, 0-9, +, /, or =

    var base64test = /[^A-Za-z0-9\+\/\=]/g;

    // Check for errors.

    if (base64test.exec(inp))
    {
        return "Error found in ad.";
    }
    inp = inp.replace(/[^A-Za-z0-9\+\/\=]/g, "");

    do
    {
        // Grab 4 bytes of encoded content.

        enc1 = keyStr.indexOf(inp.charAt(i++));
        enc2 = keyStr.indexOf(inp.charAt(i++));
        enc3 = keyStr.indexOf(inp.charAt(i++));
        enc4 = keyStr.indexOf(inp.charAt(i++));

        // Decode.

        chr1 = (enc1 << 2) | (enc2 >> 4);
        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
        chr3 = ((enc3 & 3) << 6) | enc4;

        // Start to output decoded content

        out = out + String.fromCharCode(chr1);

        if (enc3 != 64) {
        out = out + String.fromCharCode(chr2);
        }
        if (enc4 != 64) {
        out = out + String.fromCharCode(chr3);
        }

        // Clean the variables used

        chr1 = chr2 = chr3 = "";
        enc1 = enc2 = enc3 = enc4 = "";

    } while (i < inp.length);

    return out;
}

function displayAd(sAdsURL, sDomain, aAds)
{
   var adNumber = null;
   var adLink = "";

   if (aAds.length == 0)
   {
      document.write("<!-- Error: No ads assigned to position; problem with javascript file creation -->");
   }
   else if (aAds.length == 1)
   {
      adNumber = 0;
   }
   else
   {
      adNumber = Math.floor(Math.random()*aAds.length);
   }

   if (adNumber != null)
   {
      if (aAds[adNumber][2] == "swf")
      {
         adLink += "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0' width='"
                  + aAds[adNumber][3] + "' height='" + aAds[adNumber][4]
                  + "' name='" + aAds[adNumber][1] + "' id='" + aAds[adNumber][1] + "'>";
         adLink += "  <param name='movie' value='" + sAdsURL + "/"
                  + Math.floor(Math.random()*100000000000000) + "/creative/"
                  + sDomain + "/" + aAds[adNumber][0] + "/" + aAds[adNumber][1] + "." + aAds[adNumber][2] + "' />";
         adLink += "  <param name='quality' value='high' />";
         adLink += "  <param name='bgcolor' value='#FFFFFF' />";
         adLink += "  <embed src='" + sAdsURL + "/"
                  + Math.floor(Math.random()*100000000000000) + "/creative/"
                  + sDomain + "/"
                  + aAds[adNumber][0] + "/" + aAds[adNumber][1] + "." + aAds[adNumber][2]
                  + "' quality='high' bgcolor='#FFFFFF' width='" + aAds[adNumber][3] + "' height='" + aAds[adNumber][4]
                  + "' name='" + aAds[adNumber][1]
                  + "' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer'></embed>";
         adLink += "</object>";
      }
      else if (aAds[adNumber][2] == "js")
      {
         adLink += "<script type='text/javascript' language='javascript' src='" + sAdsURL + "/"
                  + Math.floor(Math.random()*100000000000000) + "/creative/"
                  + sDomain + "/"
                  + aAds[adNumber][0] + "/"
                  + aAds[adNumber][1] + "." + aAds[adNumber][2] + "'></script>";
      }
      else
      {
         if (aAds[adNumber][3] != "")
         {
            if (aAds[adNumber][3].substring(0,7) == "mailto:")
            {
                adLink = "<a href='" + aAds[adNumber][3] + "'>";
            }
            else
            {
                adLink += "<a href='" + sAdsURL + "/"
                         + Math.floor(Math.random()*100000000000000) + "/creative/"
                         + sDomain + "/"
                         + aAds[adNumber][0] + "/"
                         + aAds[adNumber][1] + "." + aAds[adNumber][2] + "?r="
                         + aAds[adNumber][3] + "'";
                if (aAds[adNumber][4] == "1")
                {
                   adLink += " target='_blank'>";
                }
                else
                {
                   adLink += ">";
                }
            }
         }

         adLink += "<img border='0' src='" + sAdsURL + "/"
                  + Math.floor(Math.random()*100000000000000) + "/creative/"
                  + sDomain + "/"
                  + aAds[adNumber][0] + "/"
                  + aAds[adNumber][1] + "." + aAds[adNumber][2] + "' />";

         if (aAds[adNumber][3] != "")
         {
            adLink += "</a>";
         }
      }

      document.write(adLink);
   }
}
