var Tracking = (function(){
	var trackers = [];
	//set tracking iframe object (if there is one)
	var custom_tracker = $("#customTrackingIframe");
	var custom_tracker_iframe = custom_tracker.length ? custom_tracker.get(0) : null;
	var custom_tracker_iframe_src = custom_tracker_iframe ? custom_tracker_iframe.src : "";

	var trackingExclude = [];
	var trackRemoveParams = [
	                         "lm=",
	                         "sub_id=",
	                         "pg=",
	                         "pgs=",
	                         "pm=",
	                         "folio=",
	                         "fs=",
	                         "texterityDebugConsole="
	];


  // Specifically for mozilla browsers (FF, etc.)
  // Remove the "src" attribute if it exists
  function reset_iframe_src(){
      if($.browser.mozilla === true && custom_tracker.attr("src")){
          custom_tracker.removeAttr("src");
      }
  }

  function notify_iframe(options){
    if(custom_tracker_iframe){
        custom_tracker_iframe.src = custom_tracker_iframe_src + "&title="+options.pageName;
    }
  }

  function notify_event(options){
    for(var i=0;i<trackers.length;i++){
      trackers[i].trackEvent(options);
    }
    notify_iframe(options);
  }

  function notify_page(options){
    for(var i=0;i<trackers.length;i++){
      trackers[i].trackPage(options);
    }
    notify_iframe(options);

    // Trigger a jQuery event for track page which can be captured with:
    //   $(document).bind("event_track_page", function(event, options) {<code>});
    $(document).trigger("event_track_page", [options]);
  }

  function add_tracker(tracker){
    trackers.push(tracker);
  }

  function clean(value){
    return value.replace(/[\s]+/g,"_").toLowerCase();
  }
  
  function cleanEscape(value) {
      return escape($.unescapifyHTML(clean(value)));
  }

  return function(options){
    this.getTrackRemoveParams = function() {
        return trackRemoveParams;
    };

    this.setTrackingExclude = function(excludes) {
        trackingExclude = trackingExclude.concat(excludes);
    }

    this.getTrackingExclude = function() {
        return trackingExclude;
    }

    this.addCustomTracker = function(params) {
        if(typeof params.name != "undefined" && typeof Tracking[params.name] == 'function'){
            add_tracker(new Tracking[params.name](params));
        }
    };

    /**
     * Build the url and title to pass to the trackers.  We want to
     * work as much as possible with location and tracking information
     * that is a snapshot at the time the initial tracking call was
     * made.  Therefore, we do not want location.href to be passed in
     * rather than determined at this late date.
     * 
     * @param options All the options passed in the tracking call
     * @return object with href and title to pass to tracking services
     */
    this.buildTrackInfo = function(options) {
        var category = typeof options.category != "undefined" ?
                options.category :
                "none";
        var pageTitle = typeof options.shortTitle != "undefined" ?
                options.shortTitle :
                PageView.shortTitle;
        var lochref = typeof options.lochref != "undefined" ?
                options.lochref :
                document.location.href;
        var searchPos = lochref.indexOf("?");
        var hashPos = lochref.indexOf("#");
        var href = "";
        var locSearch = "";
        if (searchPos == -1) {
            if (hashPos == -1) {
                href = lochref + "?";
            } else {
                href = lochref.substring(0, hashPos) + "?";
            }
        } else {
            href = lochref.substring(0, searchPos) + "?";
            if (hashPos == -1) {
                locSearch = lochref.substring(searchPos + 1);
            } else {
                locSearch = lochref.substring(searchPos + 1, hashPos);
            }
        }

        // We are creating our own url to pass to the tracker, so cut out
        // anything we don't want or will add back later
        var trackingQuery = "";
        if (locSearch.length > 0) {
            var params = locSearch.split("&");
            // loop through query string and only keep if NOT a candidate for removal
            if (trackingExclude.length > 0) {
                trackRemoveParams = trackRemoveParams.concat(PageController.pageTrackingExclude);
            }
            var addParam = true;
            for (var i = 0; i < params.length; i++) {
                addParam = true;
                for (var j = 0; j < trackRemoveParams.length; j++) {
                    if (params[i].indexOf(trackRemoveParams[j]) != -1) {
                        addParam = false;
                        break;
                    }
                }
                if (addParam === true) {
                    trackingQuery += params[i] + "&";
                }
            }
        }
        href += trackingQuery;

        href += "category=" + category;
        switch(category) {
        case "page_viewed":
            // folios
            // pageMode
            href += "&folio=" + options.folios[0];
            href += "&pm=" + options.pageMode;

            var pageLabel = "";
            var numFolios = options.folios.length;
            // add left page number...
            if (numFolios > 0) {
                pageLabel = " - Pages: " + PageController.buildFolioLabel(options.folios[0]);
            }
            // ...and right page number if more than one page
            if (numFolios > 1) {
                pageLabel += "-" + PageController.buildFolioLabel(options.folios[numFolios - 1]);
            }
            pageTitle = "Page View - " + pageTitle + pageLabel;
        break;
        case "video":
            // video_name
            // video_type
            href += "&video_name=" + cleanEscape(options.video_name);
            pageTitle = "Video - " + pageTitle + " - " + options.video_name;
        break;
	case "module":
	    href += "&module_name=" + options.module_name;
            href += "&module_type=" + options.module_type;
            pageTitle = options.module_type + " module - " + pageTitle + " - " + options.module_title ;
        break;
	case "enhancement":
            // enhancement_type
            // enhancement_link
            href += "&enhancement_type=" + options.enhancement_type;
            pageTitle = "Enhancement - " + pageTitle + " - " + options.enhancement_type;
        break;
        case "exit_link":
            // exit_link
            // link_type
            href += "&exit_link=" + cleanEscape(options.exit_link);
            pageTitle = "Exit Link - " + pageTitle + " - " + options.exit_link;
        break;
        case "archive":
            // archive_title
            href += "&archive_title=" + cleanEscape(options.archive_title);
            pageTitle = "Archive - " + pageTitle + " - " + options.archive_title;
        break;
        case "search":
            // search_term
            href += "&search_term=" + cleanEscape(options.search_term);
            pageTitle = "Search - " + pageTitle + " - " + options.search_term;
        break;
        case "print":
            // title
            href += "&title=" + cleanEscape(options.title);
            pageTitle = "Print - " + pageTitle + " - " + options.title;
        break;
        case "dialog":
            // dialog_type
            href += "&dialog_type=" + options.dialog_type;
            pageTitle = "Dialog - " + pageTitle + " - " + options.dialog_type;
        break;
        case "clip":
            // page
            href += "&folio=" + options.page;
            pageTitle = "Clip - " + pageTitle + " - Page: " + options.page;
        break;
        case "share":
            // share_type
            href += "&share_type=" + options.share_type;
            pageTitle = "Share - " + pageTitle + " - " + options.share_type;
        break;
        case "download":
            // download_type
            // title
            href += "&download_type=" + options.download_type;
            pageTitle = "Download - " + pageTitle + " - " + options.download_type;
        break;
        default:
            // category=none or unknown type
            var categoryType = category + "_type";
            if (typeof options[categoryType] != "undefined") {
                href += "&" + categoryType + "=" + cleanEscape(options[categoryType]);
            }
            category = category.charAt(0).toUpperCase() + category.slice(1);
            pageTitle = category + " - " + pageTitle + " - " + options[categoryType];
        }
        return {"pageName":href, "pageTitle":pageTitle};
    };

    this.trackEvent = function(e) {
      var opts = e || {};
      var trackEventAttr = "";

      if(typeof opts.target != "undefined"  && $(opts.target)){
        trackEventAttr = $(opts.target).attr("trackevent");
      }

      if(trackEventAttr !== ""){
        opts.eventName = trackEventAttr;
      }else{
        opts.eventName = this.setPageNameToCurrentUrl();
      }

      opts.eventName = clean(unescape(opts.eventName));
      notify_event(opts);
    };

    this.trackPage = function(e) {
      var opts = e || {};
      var trackInfo = this.buildTrackInfo(opts);
      // Explicitly set "target" to override building pageName
      var trackPageAttr = "";
      if(typeof opts.target != "undefined"  && $(opts.target)){
        trackPageAttr = $(opts.target).attr("trackevent");
      }
      if(trackPageAttr !== ""){
        opts.pageName = clean(unescape(trackPageAttr.replace(/&?lm=[\d]+/g,"")));
      }else {
        opts.pageName = trackInfo["pageName"];
      }
      opts.title = trackInfo["pageTitle"];

      Console.log("trackPage<br>category: " + opts.category + "<br>title: " + opts.title + "<br>pageName: " + opts.pageName);
      notify_page(opts);
    };

    // use this function to modify the url if needed -- adds flexibility for later
    this.setPageNameToCurrentUrl = function() {
      return location.href;
    };

    //constructor code
    if(options && typeof options.trackers != "undefined"){
        //$("*[trackpage]").unbind('click.page_tracking').bind('click.page_tracking',this.trackPage);
        //$("*[trackevent]").unbind('click.event_tracking').bind('click.event_tracking',this.trackPage);

        for(var x=0; x<options.trackers.length; x++){
            var t = options.trackers[x];
            if(typeof t.name != "undefined" && typeof Tracking[t.name] == 'function'){
                add_tracker(new Tracking[t.name](t));
            }
        }
    }

    if(custom_tracker_iframe && $.browser.mozilla === true){
        custom_tracker_iframe.onload = reset_iframe_src;
    }

  };
  
})();

Tracking.Google = (function(){
  var analytics_key = "";
  var page_tracker;

  return function(params){

    this.trackEvent = function(options){
      var event_params = options.eventName.split("/");
      var event_category = event_params[0] ? escape(event_params[0]) : "";
      var event_action = event_params[1] ? escape(event_params[1]) : "";
      var event_label = event_params[2] ? escape(event_params[2]) : "";
      var interval = setInterval(function(){
        if (analytics_key === false) {
          clearInterval(interval);
        }
        if (page_tracker) {
          clearInterval(interval);
          page_tracker._trackEvent(event_category,event_action,event_label);
        }
      }, 10);
    };

    this.trackPage = function(options){
      var interval = setInterval(function(){
        if (analytics_key===false) {
          clearInterval(interval);
        }
        if (page_tracker) {
            clearInterval(interval);
            page_tracker._trackPageview(options.pageName);
        }
      }, 10);
    };

    //constructor code
    if (params.options) {
        analytics_key = params.options;
    }
    if(analytics_key !== ""){
      var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
      $.getScript(gaJsHost + "google-analytics.com/ga.js",function(){
          var myinterval = setInterval(function(){
            page_tracker = (_gat ? _gat._getTracker(analytics_key) : null);
            if (page_tracker) {
                clearInterval(myinterval);
                page_tracker._setDomainName(CookieManager.getDomain());
                if(CookieManager.get("source")){
                  page_tracker._setCampSourceKey("source");
                }
                if(CookieManager.get("campaign_id")){
                  page_tracker._setCampNameKey("campaign_id");
                }
                if(CookieManager.get("medium")){
                  page_tracker._setCampMediumKey("medium");
                }
                if(CookieManager.get("offer")){
                  page_tracker._setCampContentKey("offer");
                }
                if(CookieManager.get("placement")){
                  page_tracker._setCampTermKey("placement");
                }
                if(CookieManager.get("creative")){
                    // _setVar is deprecated...
//                  page_tracker._setVar(CookieManager.get("creative"));
                    // 1 = slot #1, name of var, value, 3 = page-level scope
                    page_tracker._setCustomVar(1, "creative", CookieManager.get("creative"), 3);
                }
            }
          }, 10);
      });
    }
  };
})();

/**
 * Texterity Open Tracker class to setup any Texterity variables before calling
 * to load the Open Tracker javascript.
 *
 * Overrides available:
 *    open_tracking_server - Usually NOT overridden.  The server to call at
 *        Open Tracker to download the tracking javascript code.  This will likely
 *        only change if Open Tracker makes a major change to their functionality.
 *    open_tracking_site - The name to use to send to Open Tracker to identify the
 *        site being tracked.  This is usually obtained from the domain name in the
 *        url, but may be overridden if a client track under a different url.
 *        Note: The site may also be passed in the call to trackPage.
 *    open_tracking_site_overrides - Provides the ability to add post-processing
 *        overrides to site name to send the result to demo.texterity.com.  Usually
 *        only used by development, but exposed for specialized client needs.
 */
Tracking.OpenTracker = (function(){
	var last_tracked_site = "";
	var tracking_domain = typeof open_tracking_server != "undefined" ? open_tracking_server : "http://server1.opentracker.net";
	var tracking_site = typeof open_tracking_site != "undefined" ? open_tracking_site : location.hostname;
	if(tracking_site == "staging4.texterity.com") {
		tracking_site = "staging3.texterity.com";
	}
	// developers - add your server name here
	var tracking_site_demo_overrides = [
	                                    "localhost",
	                                    "kirk.texterity.com",
                                            "apu.texterity.com",
	                                    "clancy.texterity.com"];
	if (typeof open_tracking_site_overrides != "undefined" &&
			open_tracking_site_overrides.length > 0) {
		tracking_site_demo_overrides.concat(open_tracking_site_overrides);
	}
	// qa testing - add stacks servers here
	var tracking_site_qa_overrides = [
	                                  "qa1-webreader.ttyqa.com",
	                                  "qa2-webreader.ttyqa.com",
	                                  "qa3-webreader.ttyqa.com",
	                                  "qa4-webreader.ttyqa.com"];

	return function(){

	// NOTE:  Not currently used...
	this.trackEvent = function(options){
		var base_url = options.base_url || location.hostname;
		var domain_name = options.domainName || location.hostname;
		var title = options.title || "";
		var u1_value = u1 || "";
		var track_t0 = (new Date()).getTime();
		var track_colorDepth;
		var track_rc = '';

		try {
			// use the existing OpenTracker rc variable, if available
			track_rc = rc;
		} catch(err) {}

		// try variations used by different browsers
		track_colorDepth = screen.colorDepth;
		if(!track_colorDepth) {
			track_colorDepth = screen.pixelDepth;
		}

		// Construct OpenTracker call
		var track_url = base_url + '?t='+escape(options.eventName)+'&u1='+u1_value;
		var track_im = new Image(1,1);
		track_im.src = tracking_domain + '/collect.jsp?p=1&mid='+track_rc +
			'&fv=false' +
			'&cld='+ escape(new Date()) +
			'&sh=' + screen.height +
			'&sw=' + screen.width +
			'&sc=' + track_colorDepth +
			'&lc=' + escape( track_url ) +
			'&ref=' +
			'&t0=' + track_t0 +
			'&ti=' + escape(title) +
			'&si=' + domain_name;
	};

	this.trackPage = function(options){
		var site = options.site || tracking_site;
		//example from current web reader for reference
		//<script defer src="http://server1.opentracker.net/?site=today.sportingnews.com&ot_url=http://today.sportingnews.com/sportingnewstoday/20090206/?pg=1%26u1=texterity"></script>

		// munge the data for internal domains to track to different OT sites
		options.pageName = options.pageName.replace("localhost:8080","demo.texterity.com");
		if (typeof openTrackingVarsDomain != "undefined" && typeof openTrackingVarsReplaceDomain != "undefined") {
			options.pageName.replace(openTrackingVarsDomain, openTrackingVarsReplaceDomain);
		}
		for (var i = 0; i < tracking_site_demo_overrides.length; i++) {
			site = site.replace(tracking_site_demo_overrides[i],"demo.texterity.com");
		}
		for (var i = 0; i < tracking_site_qa_overrides.length; i++) {
			site = site.replace(tracking_site_qa_overrides[i],"qa-webreader.ttyqa.com");
		}

		if (typeof f_log == "function" && last_tracked_site == site) {
			ot_ti = options.title || "";
			ot_lc = escape(options.pageName);
			f_log();
		} else {
			var head = document.getElementsByTagName("head")[0];
			var script = document.createElement("script");
			if (typeof ot_evt != "undefined" && window.removeEventListener) {
				window.removeEventListener("unload",ot_evt,true);
				if (typeof ot_f != "undefined") {
					self.removeEventListener("click",ot_f,true);
				}
			}
			script.type = 'text/javascript';
			script.src = tracking_domain + "/?site=" + site + "&ot_url=" + escape(options.pageName);
			script.defer = true;
			// Handle Script loading
			var done = false;
			ot_ti = options.title || undefined;
			last_tracked_site = site;

			// Attach handlers for all browsers
			script.onload = script.onreadystatechange = function(){
				if ( !done && (!this.readyState ||
						this.readyState == "loaded" || this.readyState == "complete") ) {
					done = true;

					// Handle memory leak in IE
					script.onload = script.onreadystatechange = null;
					head.removeChild( script );
				}
			};
			head.appendChild(script);
		}
	};

  };

})();

Tracking.OpenTrackerRBT = (function(){
	var last_tracked_site = "";
	var tracking_domain = typeof open_tracking_server != "undefined" ? open_tracking_server : "http://server1.opentracker.net";
	var tracking_site = typeof open_tracking_site != "undefined" ? open_tracking_site : location.hostname;
	if(tracking_site == "staging4.texterity.com") {
		tracking_site = "staging3.texterity.com";
	}

	// developers - add your server name here
	var tracking_site_demo_overrides = [
	                                    "localhost",
	                                    "kirk.texterity.com",
                                            "apu.texterity.com",
	                                    "clancy.texterity.com"];
	if (typeof open_tracking_site_overrides != "undefined" &&
			open_tracking_site_overrides.length > 0) {
		tracking_site_demo_overrides.concat(open_tracking_site_overrides);
	}
	// qa testing - add stacks servers here
	var tracking_site_qa_overrides = [
	                                  "qa1-webreader.ttyqa.com",
	                                  "qa2-webreader.ttyqa.com",
	                                  "qa3-webreader.ttyqa.com",
	                                  "qa4-webreader.ttyqa.com"];
	var cookie_tracking_vars = [];
	var base_vars = ["subscriber_id","machine-id","code"];
	var camp_vars = ["source","campaign","medium","placement","creative","offer","campaign_id"];
  	var other_vars = [];

  	// get engagement_time from override; else use 10 seconds as default value
  	var engagement_time = typeof tracking_engaged_time != "undefined" ? tracking_engaged_time : 10;
  	var engagedTimer = null;


 	function setTrackingString(){
   		var cookie_vars = [];
   		cookie_tracking_vars = new Object();
   		cookie_vars = cookie_vars.concat(base_vars, camp_vars, other_vars);
   		if (typeof custom_vars != "undefined") {
      			cookie_vars = cookie_vars.concat(custom_vars);
   		}
   		for(var i=0;i<cookie_vars.length;i++){
     			var current_var_value = CookieManager.get(cookie_vars[i]);
     			if(current_var_value){
         			cookie_tracking_vars[cookie_vars[i]]=encodeURIComponent(current_var_value);

     			}
   		}
  	}

	return function(){
	this.trackPage = function(options){
		var site = options.site || tracking_site; 
                setTrackingString();
             
		// munge the data for internal domains to track to different OT sites
		//options.pageName = options.pageName.replace("localhost:8080","demo.texterity.com");
		if (typeof openTrackingVarsDomain != "undefined" && typeof openTrackingVarsReplaceDomain != "undefined") {
			options.pageName.replace(openTrackingVarsDomain, openTrackingVarsReplaceDomain);
		}
		for (var i = 0; i < tracking_site_demo_overrides.length; i++) {
			site = site.replace(tracking_site_demo_overrides[i],"demo.texterity.com");
		}
		for (var i = 0; i < tracking_site_qa_overrides.length; i++) {
			site = site.replace(tracking_site_qa_overrides[i],"qa-webreader.ttyqa.com");
		}

		if (typeof _ot_send == "function" && last_tracked_site == site) {
			var map = new OTMap();
			map.put("ti", options.title || "");
			map.put("lc",escape(options.pageName));
			for (var name in cookie_tracking_vars) {
				map.put(name, cookie_tracking_vars[name]);
			}
			_ot_send(map); 
		} else {
			var head = document.getElementsByTagName("head")[0];
			var script = document.createElement("script");
			if (typeof ot_evt != "undefined" && window.removeEventListener) {
				window.removeEventListener("unload",ot_evt,true);
				if (typeof ot_f != "undefined") {
					self.removeEventListener("click",ot_f,true);
				}
			}
			script.type = 'text/javascript';
			script.src = tracking_domain + "/?site=" + site + "&ot_url=" + escape(options.pageName);
			script.defer = true;
			// Handle Script loading
			var done = false;
			ot_ti = options.title || undefined;
			last_tracked_site = site;

			// Attach handlers for all browsers
			script.onload = script.onreadystatechange = function(){
				if ( !done && (!this.readyState ||
						this.readyState == "loaded" || this.readyState == "complete") ) {
					done = true;

					// Handle memory leak in IE
					script.onload = script.onreadystatechange = null;
					head.removeChild( script );
				}
			};
			head.appendChild(script);
		}
		
	};

  };

})();


Tracking.Texterity = (function(){
  var event_tracking_vars = ["category","action","label"];
  var campaign_tracking_vars = [];
  var tracking_domain = "";
  var cookie_tracking_vars = [];
  var base_vars = ["subscriber_id","machine-id","code"];
  var camp_vars = ["source","campaign","medium","placement","creative","offer","campaign_id"];
  var other_vars = [];

  // get engagement_time from override; else use 10 seconds as default value
  var engagement_time = typeof tracking_engaged_time != "undefined" ? tracking_engaged_time : 10;
  var engagedTimer = null;

  function setTrackingString(){
   var cookie_vars = [];
   cookie_tracking_vars = [];
   cookie_vars = cookie_vars.concat(base_vars, camp_vars, other_vars);
   if (typeof custom_vars != "undefined") {
      cookie_vars = cookie_vars.concat(custom_vars);
   }
   for(var i=0;i<cookie_vars.length;i++){
     var current_var_value = CookieManager.get(cookie_vars[i]);
     if(current_var_value){
         cookie_tracking_vars.push(cookie_vars[i] + "|" + encodeURIComponent(current_var_value));
     }
   }
  }

  return function(params){

    // Event Tracking
    // Note: Not currently used.
    this.trackEvent = function(options){
      setTrackingString();
      var tracking_string = tracking_domain + "/images/event.gif?";
      var event_params = options.eventName.split("/");
      if(event_params.length > 0){
        for (var i=0;i<event_params.length;i++){
          if(event_params[i]){
              event_tracking_vars[i] = event_tracking_vars[i] + "=" + escape(event_params[i]);
          }
        }
      }
      if(event_tracking_vars.length > 0){
        tracking_string += event_tracking_vars.join("&") + "&";
      }
      if(cookie_tracking_vars.length > 0){
        tracking_string += cookie_tracking_vars.join("&");
      }
      track_im = new Image(1,1);
      track_im.src=tracking_string;
      delete track_im;
    };

    // Page Tracking
    this.trackPage = function(options) {
      setTrackingString();
      if ((CookieManager.get("subscriber_id") == "undefined") || (CookieManager.get("subscriber_id") === null) || (CookieManager.get("subscriber_id") === "")) {
         return;
      }
      if ((options["category"] == "exit_link") && (ViewHelper.trim(options["link_type"]) != 'external')) {
         return;
      }
      // Stop pages engaged tracking, if still going
      if (engagedTimer && options["category"] == "page_viewed") {
         clearTimeout(engagedTimer);
      }

      // Setup tracking defaults
      var DocProps = (typeof DocumentProperties != "undefined") ? DocumentProperties : null;
      if (!options["pageName"]) {
         options["pageName"] = 0;
      }
      if (!options["title"]) {
         if (DocProps) {
            options["title"] = DocProps.getCollectionTitle();
         } else {
            options["title"] = "no title";
         }
      }
      if (!options["issue"]) {
         if (DocProps) {
            options["issue"] = DocProps.getDocumentUrl();
         } else {
            options["issue"] = "";
         }
      }

      var tracking_string = tracking_domain + "/icons/tracking.gif?";
      var track_array = [];

      // Capture event specific parameters
      for (var param in options) {
         track_array.push(param + "|" + encodeURIComponent(options[param]));
      }
      if(track_array.length > 0){
         tracking_string += track_array.join(";") + ";";
      }

      if(cookie_tracking_vars.length > 0){
           tracking_string += cookie_tracking_vars.join(";") + ";";
       }

      // Add timestamp
      var now = new Date();
      tracking_string += "d|" + now.getTime();

      track_im1 = new Image(1,1);
      track_im1.src=tracking_string;
      delete track_im1;

      // Start pages engaged tracking on new page viewed
      if (options["category"] == "page_viewed") {
         var callback = this.trackPage;
         options["category"] = "page_engaged";
         engagedTimer = setTimeout(function() {
             callback(options);
         },(engagement_time*1000));
      }
   };

    // constructor code
    if (params.options) {
        camp_vars = params.options;
    }
    if (params.server) {
      tracking_domain = params.server;
    }

  };
})();

Tracking.Neilsen = (function(){
  var trac = null;

  return function(params){
    this.loaded = true;

    this.getTrackingString = function(title,pageName){
        var tracking_string = title + '-' + pageName.replace(/.*\?/,"");
        return escape(tracking_string.replace(/\W+/g,"-"));
    };

    this.trackEvent = function(options){
        var that = this;
        var i = 0;
        var trackEventInterval = setInterval(function(){
            if(trac){
                clearInterval(trackEventInterval);
                var currentPage = that.getTrackingString(document.title,options.pageName);
                trac.sectionEvent(currentPage);
            }
            i++;
            if(i==10){
                clearInterval(trackEventInterval);
            }
        },10);
    };

    this.trackPage = function(options){
        var that = this;
        var i = 0;
        if(PageView.numPagesViewed > 1){
            var trackPageInterval = setInterval(function(){
                if(trac){
                    clearInterval(trackPageInterval);
                    var currentPage = that.getTrackingString(document.title,options.pageName);
                    trac.pageEvent(currentPage);
                    that.initial_page = false;
                }
                i++;
                if(i==10){
                    clearInterval(trackPageInterval);
                }
            },10);
        }
    };

    //constructor code
    if (params.options) {
      tracker_id = params.options;
    }
    var that = this;
    $.getScript("//secure-au.imrworldwide.com/v60.js",function(){
        var myinterval = setInterval(function(){
            if(typeof nol_t != "undefined"){
                clearInterval(myinterval);
                var pvar = { cid: "auditbc-au", content: "0", server: "secure-au" };
                trac = nol_t(pvar);
                trac.record().post();
            }
        },10);
    });
  };

})();


