//sdc tag import file

//webtrends server settings ------------------------------------

var domain = "webtrend25.hemscott.com";

//javascript version -------------------------------------------

var jsTimeout = 3; //maximum value to prevent infinite loop for certain browsers (e.g. safari)
var vers, jsVersion = vers = 1.0;
for (var i = 1.1;jsVersion == vers && jsVersion < jsTimeout;i+=0.1) {
  vers = ("" + i).substring(0,3);
  document.write('<scr' + 'ipt language="JavaScript' + vers + '">jsVersion = ' + vers + ';</scr' + 'ipt>');
}

//vbscript version and plugin detection functions --------------

var vbVersion = "";
if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1)) {
  document.writeln('<scr' + 'ipt Language="VBScript">');
  
  document.writeln('vbVersion = ScriptEngineMajorVersion & "." & ScriptEngineMinorVersion & "." & ScriptEngineBuildVersion');
  
  document.writeln('sdcDetectableWithVB = False');
  //document.writeln('If ScriptEngineMajorVersion >= 2 Then');
  //document.writeln('  sdcDetectableWithVB = True');
  //document.writeln('End If');
  
  document.writeln('Function sdcDetectActiveXControl(activeXControlName)');
  document.writeln('  on error resume next');
  document.writeln('  sdcDetectActiveXControl = False');
  document.writeln('  If sdcDetectableWithVB Then');
  document.writeln('    sdcDetectActiveXControl = IsObject(CreateObject(activeXControlName))');
  document.writeln('  End If');
  document.writeln('End Function');
  
  document.writeln('Function sdcDetectQuickTimeActiveXControl(version)');
  document.writeln('  on error resume next');
  document.writeln('  sdcDetectQuickTimeActiveXControl = False');
  document.writeln('  If sdcDetectableWithVB Then');
  document.writeln('    sdcDetectQuickTimeActiveXControl = False');
  document.writeln('    hasQuickTimeChecker = false');
  document.writeln('    Set hasQuickTimeChecker = CreateObject("QuickTimeCheckObject.QuickTimeCheck." & version)');
  document.writeln('    If IsObject(hasQuickTimeChecker) Then');
  document.writeln('      If hasQuickTimeChecker.IsQuickTimeAvailable(0) Then');
  document.writeln('        sdcDetectQuickTimeActiveXControl = True');
  document.writeln('      End If');
  document.writeln('    End If');
  document.writeln('  End If');
  document.writeln('End Function');
  
  document.writeln('</scr' + 'ipt>');
}

//global data --------------------------------------------------

var sdcImages = new Array();
var sdcIndex = 0;
var sdcRE = ((jsVersion < 1.2)? false:{"%09":/\t/g,"%20":/ /g,"%23":/\#/g,"%26":/\&/g,"%2B":/\+/g,"%3F":/\?/g,"%5C":/\\/g});

//utility functions --------------------------------------------

function sdcGetVersion(plugin) {
  //get version number
  if (jsVersion >= 1.2 && plugin.description) {
    var description = plugin.name + " " + plugin.description;
    var version = description.match(/[0-9]+\.[^ ]+/);
    if (version) return version;
  }
  return "Yes";
}

function sdcGetPlugin(name) {
  //get version number
  for (var i=0;i < navigator.plugins.length;i++) {
    if (navigator.plugins[i].name.indexOf(name) >= 0) return sdcGetVersion(navigator.plugins[i]);
  }
  return "No";
}

function sdcEscape(value){
  if (sdcRE != false) {
    var retStr = new String(value);
    for (var R in sdcRE) retStr = retStr.replace(sdcRE[R],R);
    return retStr;
  } else {
    return escape(value);
  }
}

function sdcBasic(PRM) {
  //create the basic sdc tag url and parameters
  
  //get dcs id
  var dcsid = PRM["dcsid"];
  if (!dcsid) dcsid = "dcs00ceue00000wg6pzw1q3tv_5k7g";
  
  //base url
  var url = window.location.protocol;
  if (!url) url = "http:";
  url += "//" + domain + ((dcsid == "")?"":"/" + dcsid) + "/dcs.gif?";

  //get date and time
  var date = new Date();

  //dcs parameters
  var DCS = new Object();
  DCS.dcsdat = date.getTime();
  DCS.dcssip = window.location.hostname;
  DCS.dcsuri = window.location.pathname;
  if (window.location.search) DCS.dcsqry = window.location.search;
  if ((window.document.referrer != "") && (window.document.referrer != "-")) {
    if (!(navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion)<4)) {
      DCS.dcsref = window.document.referrer;
    }
  }
  for (var param in DCS) url += "&" + param + "=" + sdcEscape(DCS[param]);
  
  //referrer passthrough
  var referrer = "";
  if (window.location.search) referrer = unescape(window.location.search);
  var start = referrer.indexOf("HS.referrer=");
  if (start >= 0) {
    referrer = referrer.substring(start + 12);
    var finish = referrer.indexOf("&");
    if (finish >= 0) referrer = referrer.substring(0,finish);
    if (referrer != "" && referrer != "-") DCS.dcsref = referrer;
  } else {
    //add HS.referrer parameter to url for consistency purposes
    if (typeof(DCS.dcsref) != "undefined") url += "&HS.referrer=" + DCS.dcsref;
  }

  //wt parameters
  var WT = new Object();
  WT.tz = date.getTimezoneOffset()/60*-1;
  WT.bh = date.getHours();
  WT.ul = ((navigator.appName == "Netscape")? navigator.language:navigator.userLanguage);
  if (typeof(screen)=="object") {
    WT.cd = ((navigator.appName == "Netscape")? screen.pixelDepth:screen.colorDepth);
    WT.sr = screen.width + "x" + screen.height;
  }
  
  //java plugin
  if (navigator.plugins && navigator.plugins.length) {
    WT.jo = sdcGetPlugin("Java Plug-in");
    if (WT.rp != "No" && WT.rp != "Yes") WT.jo = "Yes";
  }
  if ((!WT.jo || WT.jo == "No") && typeof(navigator.javaEnabled()) == "boolean") {
    WT.jo = ((navigator.javaEnabled())? "Yes":"No");
  }
  
  if (document.title) WT.ti = document.title;
  else if (PRM["page"]) WT.ti = PRM["page"];
  WT.js = "Yes";
  if (jsVersion < jsTimeout) WT.jv = jsVersion;
  for (var param in WT) url += "&WT." + param + "=" + sdcEscape(WT[param]);

  return url;
}

function sdcAdvanced() {
  //get advanced sdc tag parameters such as plugins/etc
  
  var params = "";
  
  var HS = new Object();
  
  //viewable area
  if (typeof(screen) == "object") {
    if (screen.availWidth) HS.va = screen.availWidth + "x" + screen.availHeight;
  }
  
  //window size
  //note that on ie document.body.offsetHeight returns wrong value for pages with a valid doctype
  if (window.innerWidth) HS.ws = window.innerWidth + "x" + window.innerHeight;
  else if (document.body.offsetWidth) HS.ws = document.body.offsetWidth + "x" + document.body.offsetHeight;
  
  //detect if various plugins are installed and get version
    
    HS.js //javascript
  = HS.vb //vbscript
  = HS.jv //java
  = HS.sf //shockwave flash
  = HS.ar //adobe reader
  = HS.qt //quicktime
  = HS.wm //windows media
  = HS.rp //realplayer

  = "Unknown";
  
  //javascript
  HS.js = ((jsVersion < jsTimeout)? jsVersion:"Yes");
  
  //vbscript
  HS.vb = ((vbVersion == "")? "No":vbVersion);
  
  if (navigator.plugins && navigator.plugins.length) {
  
    //shockwave flash
    if (sdcGetPlugin("Shockwave Flash 2.0") != "No") {
      Hs.sf = 2.0;
    } else {
      HS.sf = sdcGetPlugin("Shockwave Flash");
    }
    
    //acrobat/pdf plugin
    HS.ar = sdcGetPlugin("Adobe Acrobat");
    
    //quicktime
    HS.qt = sdcGetPlugin("QuickTime");
    
    //windows media
    HS.wm = sdcGetPlugin("Windows Media");
    
    //realplayer
    HS.rp = sdcGetPlugin("RealPlayer");
    
    //java version
    HS.jv = sdcGetPlugin("Java Plug-in");
      
  } else if (sdcDetectableWithVB) {
      
    //flash/pdf
    for(var i = 1;i < 20;i++) {
      if (sdcDetectActiveXControl("ShockwaveFlash.ShockwaveFlash." + i)) HS.sf = i;
      if (sdcDetectActiveXControl("Pdf.PdfCtrl." + i)) HS.ar = i;
    }
    if (!HS.sf) HS.sf = "No";
    if (!HS.ar) HS.ar = "No";

    //quicktime
    HS.qt = ((sdcDetectQuickTimeActiveXControl(1))? "Yes":"No");

    //windows media
    HS.wm = ((sdcDetectActiveXControl("MediaPlayer.MediaPlayer.1"))? "Yes":"No");

    //realplayer
    HS.rp = ((sdcDetectActiveXControl("RealPlayer.RealPlayer(tm) ActiveX Control (32-bit) (Real5)"))? "Yes":"No");
    
  }
  
  //java plugin
  if ((!HS.jv || HS.jv == "No" || HS.jv == "Unknown") && typeof(navigator.javaEnabled()) == "boolean") {
    HS.jv = ((navigator.javaEnabled())? "Yes":"No");
  }
  
  //cookies enabled
  var cookieenabled = (navigator.cookieenabled);
  if (typeof navigator.cookieenabled == "undefined" && !cookieenabled) {
    var date = new Date();
    date.setTime(date.getTime()+1000);
    document.cookie = "testcookie=1; expires=" + date.toGMTString();
    cookieenabled = (document.cookie.indexOf("testcookie") != -1);
  }
  HS.ck = ((cookieenabled)? "Yes":"No");
  
  for (var param in HS) params += "&HS." + param + "=" + sdcEscape(HS[param]);
    
  return params;
}

function sdcGetParams(params) {
  var PRM = new Object();
  var paramArray = params.split("/");
  for (var i = 0;i < paramArray.length;i++) {
    var param = paramArray[i];
    if (param.indexOf) {
      var splitPos = param.indexOf('=');
      var name = param.substring(0,splitPos);
      var value = param.substring(splitPos+1);
      /*if (value != sdcEscape(value)) {
        alert("value of sdc parameter '" + name + "' is not url safe!");
        return false;
      }*/
      PRM[name] = value;
    }
  }
  return PRM;
}

function sdcCreateImage(url) {
  //create an sdc image tag within the page
  if (document.images) {
    sdcImages[sdcIndex]=new Image;
    sdcImages[sdcIndex].src=url;
    sdcIndex++;
  } else {
    document.write('<img border="0" alt="" src="' + url + '">');
  }
}

//function to create tag ----------------------------------------

function sdc(params) {
  
  PRM = sdcGetParams(params);
  var url = sdcBasic(PRM) + sdcAdvanced();
  for (var param in PRM) if (param != "dcsid") url += "&HS." + param + "=" + PRM[param];
  
  //trim url to 2048 bytes for ie
  if (url.length>2048&&navigator.userAgent.indexOf('MSIE')>=0){
    url = url.substring(0,2040)+"&WT.tu=1";
  }
  
  //output tracking tag
  sdcCreateImage(url);
}