// //
// Copyright 2004 SurveySite. All rights reserved.

// Create the configuration, globals, and constants namespaces.
var SiteRecruit_Config = new Object();
var SiteRecruit_Globals = new Object();
var SiteRecruit_Constants = new Object();

// Browser information.
SiteRecruit_Constants.browser = new Object();
SiteRecruit_Constants.browser.internetExplorer = 'Microsoft Internet Explorer';
SiteRecruit_Constants.browser.mozilla = 'Netscape';

// Check browser information.
SiteRecruit_Globals.browserName = navigator.appName; 
SiteRecruit_Globals.browserVersion = parseInt(navigator.appVersion);

// Initialize browser flags.
SiteRecruit_Globals.isInternetExplorer = false;
SiteRecruit_Globals.isMozilla = false;

// Check for Internet Explorer based browsers.
if (SiteRecruit_Globals.browserName == SiteRecruit_Constants.browser.internetExplorer)
{
    if (SiteRecruit_Globals.browserVersion > 3)
    {
        SiteRecruit_Globals.isInternetExplorer = true;
    }
}

// Check for Mozilla based browsers.
if (SiteRecruit_Globals.browserName == SiteRecruit_Constants.browser.mozilla)
{
    if (SiteRecruit_Globals.browserVersion > 4)
    {
        SiteRecruit_Globals.isMozilla = true;
    }
}

// Cookie lifetime.
SiteRecruit_Constants.cookieLifetimeType = new Object();
SiteRecruit_Constants.cookieLifetimeType.duration = 1;
SiteRecruit_Constants.cookieLifetimeType.expireDate = 2;
    
// Invitation type.
SiteRecruit_Constants.invitationType = new Object();
SiteRecruit_Constants.invitationType.immediate = 1;
SiteRecruit_Constants.invitationType.domainDeparture = 2;
    
// Cookie type flags.
SiteRecruit_Constants.cookieType = new Object();
SiteRecruit_Constants.cookieType.alreadyAsked = 1;
SiteRecruit_Constants.cookieType.inProgress = 2;

// Alignment types.
SiteRecruit_Constants.horizontalAlignment = new Object();
SiteRecruit_Constants.horizontalAlignment.left = 1;
SiteRecruit_Constants.horizontalAlignment.middle = 2;
SiteRecruit_Constants.horizontalAlignment.right = 3;
SiteRecruit_Constants.verticalAlignment = new Object();
SiteRecruit_Constants.verticalAlignment.top = 1;
SiteRecruit_Constants.verticalAlignment.middle = 2;
SiteRecruit_Constants.verticalAlignment.bottom = 3;

// Survey cookie configuration.
SiteRecruit_Config.cookieName = 'msresearch';
SiteRecruit_Config.cookieDomain = '.microsoft.com';
SiteRecruit_Config.cookiePath = '/';

// Cookie element join character.
SiteRecruit_Constants.cookieJoinChar = ':';


// Settings for cookie lifetime.
SiteRecruit_Config.cookieLifetimeType = 1;


    // Duration of the cookie in days.
    SiteRecruit_Config.cookieDuration = 90;

// //
// Copyright 2004 SurveySite. All rights reserved.

// KeepAlive class definition.
function SiteRecruit_KeepAlive()
{
    // Time between page checks.
    this.keepAlivePollDelay = 1000;

    // Unique (well, sorta) ID for this page.
    this.id = Math.random();

    // Attach methods.
    this.attemptStart = KeepAlive_attemptStart;
    this.checkCookie = KeepAlive_checkCookie;
    this.inProgressCookieExists = KeepAlive_inProgressCookieExists;

    // Start the KeepAlive if an in-progress cookie exists.
    function KeepAlive_attemptStart()
    {
        if (this.inProgressCookieExists())
        {
            setInterval('SiteRecruit_Globals.keepAlive.checkCookie()', this.keepAlivePollDelay);
        }
    }
    
    // Check and update the cookie.
    function KeepAlive_checkCookie()
    {
        if (this.inProgressCookieExists())
        {
            var j = SiteRecruit_Constants.cookieJoinChar;
            
            // Update the cookie with the current time and location.
            var c = SiteRecruit_Config.cookieName + '=' + SiteRecruit_Constants.cookieType.inProgress
                + j + escape(document.location)
                + j + (new Date()).getTime()
                + j + this.id
                + '; path=' + SiteRecruit_Config.cookiePath;
            
            if (SiteRecruit_Config.cookieDomain != '')
            {
                c += '; domain=' + SiteRecruit_Config.cookieDomain;
            }
            
            document.cookie = c;
        }
    }

    // Return true if an in-progress cookie exists.
    function KeepAlive_inProgressCookieExists()
    {
        var c = SiteRecruit_Config.cookieName + '=' + SiteRecruit_Constants.cookieType.inProgress;
    
        if (document.cookie.indexOf(c) != -1)
        {
            return true;
        }
        
        return false;
    }
}

// Create the KeepAlive if a suitable cookie exists.
SiteRecruit_Globals.keepAlive = new SiteRecruit_KeepAlive();
SiteRecruit_Globals.keepAlive.attemptStart();
// //
// Copyright 2004 SurveySite. All rights reserved.

// Broker class definition.
function SiteRecruit_PageConfigurationBroker()
{
    this.urls = new Array();
    this.pages = new Array();
        
    // Attach methods.
    this.start = PageConfigurationBroker_start;
    this.initializeMapping = PageConfigurationBroker_initializeMapping;
    this.getConfigurationForPage = PageConfigurationBroker_getConfigurationForPage;
    this.loadConfiguration = PageConfigurationBroker_loadConfiguration;

    // Start the Broker.
    function PageConfigurationBroker_start(url)
    {
        this.initializeMapping();
        
        // Decide if there are surveys to run for this page.
        var configuration = this.getConfigurationForPage(url);
        
        // If there is, load id up.
        if (configuration != null)
        {
            this.loadConfiguration(configuration);
        }
    }
    
    // Initializes the page mapping.
    function PageConfigurationBroker_initializeMapping()
    {
        var u = this.urls;
        var p = this.pages;
        
                    u[0] = '//[\\w\\.-]+/resources/practices((/)|(/default\\.mspx))?$';
            p[0] = '/library/svy/SiteRecruit_PageConfiguration_2692mt_Page.js';
                    u[1] = '//[\\w\\.-]+/hardware((/)|(/default\\.mspx))?$';
            p[1] = '/library/svy/SiteRecruit_PageConfiguration_2546mt_Home_Page.js';
                    u[2] = '//[\\w\\.-]+/hardware/broadbandnetworking((/)|(/default\\.mspx))?$';
            p[2] = '/library/svy/SiteRecruit_PageConfiguration_2546mt_BroadbandNetworking_Page.js';
                    u[3] = '//[\\w\\.-]+/hardware/mouseandkeyboard((/)|(/default\\.mspx))?$';
            p[3] = '/library/svy/SiteRecruit_PageConfiguration_2546mt_MouseAndKeyboard_Page.js';
                    u[4] = '//[\\w\\.-]+/licensing((/)|(/default\\.mspx))?$';
            p[4] = '/library/svy/SiteRecruit_PageConfiguration_2680mt_Page.js';
                    u[5] = '//[\\w\\.-]+/windowsxp/tabletpc((/)|(/default\\.mspx))?$';
            p[5] = '/library/svy/SiteRecruit_PageConfiguration_2536mt_Page.js';
                    u[6] = '//[\\w\\.-]+/windowsxp/mediacenter((/)|(/default\\.mspx))?$';
            p[6] = '/library/svy/SiteRecruit_PageConfiguration_2537mt_Page.js';
                    u[7] = '//[\\w\\.-]+/atwork((/)|(/default\\.mspx))?$';
            p[7] = '/library/svy/SiteRecruit_PageConfiguration_2655mt_Page.js';
                    u[8] = '//[\\w\\.-]+/athome/security((/)|(/default\\.mspx))?$';
            p[8] = '/library/svy/SiteRecruit_PageConfiguration_2673mt_Page.js';
                    u[9] = '//[\\w\\.-]+/education((/)|(/default\\.aspx))?$';
            p[9] = '/library/svy/SiteRecruit_PageConfiguration_2522mt_Page.js';
                    u[10] = '//[\\w\\.-]+/communities((/)|(/default\\.mspx))?$';
            p[10] = '/library/svy/SiteRecruit_PageConfiguration_2524mt_Page.js';
                    u[11] = '//[\\w\\.-]+/business((/)|(/default\\.aspx))?$';
            p[11] = '/library/svy/SiteRecruit_PageConfiguration_2672mt_Page.js';
                    u[12] = '//[\\w\\.-]+/technet((/)|(/default\\.mspx))?$';
            p[12] = '/library/svy/SiteRecruit_PageConfiguration_2514mt_Page.js';
                    u[13] = '//[\\w\\.-]+/learning((/)|(/default\\.asp))?$';
            p[13] = '/library/svy/SiteRecruit_PageConfiguration_2515mt_2475mt_Page.js';
                    u[14] = '//[\\w\\.-]+/sql((/)|(/default\\.mspx))?$';
            p[14] = '/library/svy/SiteRecruit_PageConfiguration_2518mt_Page.js';
                    u[15] = '//[\\w\\.-]+/exchange((/)|(/default\\.mspx))?$';
            p[15] = '/library/svy/SiteRecruit_PageConfiguration_2519mt_Page.js';
                    u[16] = '//[\\w\\.-]+/windowsxp((/)|(/default\\.mspx))?$';
            p[16] = '/library/svy/SiteRecruit_PageConfiguration_2520mt_2475mt_Page.js';
                    u[17] = '//[\\w\\.-]+/windows/ie((/)|(/default\\.mspx))?$';
            p[17] = '/library/svy/SiteRecruit_PageConfiguration_2523mt_Page.js';
                    u[18] = '//[\\w\\.-]+/security((/)|(/default\\.mspx))?$';
            p[18] = '/library/svy/SiteRecruit_PageConfiguration_2525mt_Page.js';
                    u[19] = '//[\\w\\.-]+/windowsserver2003((/)|(/default\\.mspx))?$';
            p[19] = '/library/svy/SiteRecruit_PageConfiguration_2526mt_Page.js';
                    u[20] = '//[\\w\\.-]+/businesssolutions((/)|(/default\\.aspx))?$';
            p[20] = '/library/svy/SiteRecruit_PageConfiguration_2527mt_Page.js';
                    u[21] = '//[\\w\\.-]+/products($|(/$)|(/info/default\\.aspx))';
            p[21] = '/library/svy/SiteRecruit_PageConfiguration_2528mt_2475mt_Page.js';
                    u[22] = '//[\\w\\.-]+/mscorp((/)|(/default\\.asp))?$';
            p[22] = '/library/svy/SiteRecruit_PageConfiguration_2530mt_Page.js';
                    u[23] = '//[\\w\\.-]+/athome((/)|(/default\\.mspx))?$';
            p[23] = '/library/svy/SiteRecruit_PageConfiguration_2654mt_Page.js';
                    u[24] = '//[\\w\\.-]+/seminar/events((/)|(/default\\.mspx))?$';
            p[24] = '/library/svy/SiteRecruit_PageConfiguration_2674mt_Page.js';
                    u[25] = '//[\\w\\.-]+/technet/security((/)|(/default\\.mspx))?$';
            p[25] = '/library/svy/SiteRecruit_PageConfiguration_2675mt_Page.js';
                    u[26] = '//[\\w\\.-]+/downloads($|(/$)|(/search\\.aspx))';
            p[26] = '/library/svy/SiteRecruit_PageConfiguration_2533mt_2724mt_Page.js';
                    u[27] = '//[\\w\\.-]+/smallbusiness((/)|(/default\\.mspx))?$';
            p[27] = '/library/svy/SiteRecruit_PageConfiguration_2544mt_UnitedStates_Page.js';
                    u[28] = '//[\\w\\.-]+/australia/smallbusiness((/)|(/default\\.aspx))?$';
            p[28] = '/library/svy/SiteRecruit_PageConfiguration_2544mt_Australia_Page.js';
                    u[29] = '//[\\w\\.-]+/canada/smallbiz((/)|(/default\\.mspx))?$';
            p[29] = '/library/svy/SiteRecruit_PageConfiguration_2544mt_EnglishCanada_Page.js';
                    u[30] = '//[\\w\\.-]+/spain/empresas((/)|(/default\\.mspx))?$';
            p[30] = '/library/svy/SiteRecruit_PageConfiguration_2544mt_Spain_Page.js';
                    u[31] = '//[\\w\\.-]+/france/entrepreneur((/)|(/default\\.mspx))?$';
            p[31] = '/library/svy/SiteRecruit_PageConfiguration_2544mt_France_Page.js';
                    u[32] = '//[\\w\\.-]+/italy/pmi((/)|(/default\\.mspx))?$';
            p[32] = '/library/svy/SiteRecruit_PageConfiguration_2544mt_Italy_Page.js';
                    u[33] = '//[\\w\\.-]+/japan/smallbiz((/)|(/default\\.mspx))?$';
            p[33] = '/library/svy/SiteRecruit_PageConfiguration_2544mt_Japan_Page.js';
                    u[34] = '//[\\w\\.-]+/netherlands/ondernemers((/)|(/default\\.aspx))?$';
            p[34] = '/library/svy/SiteRecruit_PageConfiguration_2544mt_Netherlands_Page.js';
                    u[35] = '//[\\w\\.-]+/brasil/pequenasempresas((/)|(/default\\.mspx))?$';
            p[35] = '/library/svy/SiteRecruit_PageConfiguration_2544mt_Brazil_Page.js';
                    u[36] = '//[\\w\\.-]+/athome/security/protect((/)|(/default\\.mspx))?$';
            p[36] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_Home_Page.js';
                    u[37] = '//[\\w\\.-]+/athome/security/protect/windowsxp/firewall\\.aspx$';
            p[37] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_XpFirewall_Page.js';
                    u[38] = '//[\\w\\.-]+/athome/security/protect/windowsxp/updates\\.aspx$';
            p[38] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_XpUpdates_Page.js';
                    u[39] = '//[\\w\\.-]+/athome/security/protect/windowsxp/antivirus\\.aspx$';
            p[39] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_XpAntivirus_Page.js';
                    u[40] = '//[\\w\\.-]+/athome/security/protect/finish\\.aspx$';
            p[40] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_Finish_Page.js';
                    u[41] = '//[\\w\\.-]+/athome/security/protect/windows2000/firewall\\.aspx$';
            p[41] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_2000Firewall_Page.js';
                    u[42] = '//[\\w\\.-]+/athome/security/protect/windows2000/updates\\.aspx$';
            p[42] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_2000Updates_Page.js';
                    u[43] = '//[\\w\\.-]+/athome/security/protect/windows2000/antivirus\\.aspx$';
            p[43] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_2000Antivirus_Page.js';
                    u[44] = '//[\\w\\.-]+/athome/security/protect/windows9x/firewall\\.aspx$';
            p[44] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_9xFirewall_Page.js';
                    u[45] = '//[\\w\\.-]+/athome/security/protect/windows9x/updates\\.aspx$';
            p[45] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_9xUpdates_Page.js';
                    u[46] = '//[\\w\\.-]+/athome/security/protect/windows9x/antivirus\\.aspx$';
            p[46] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_9xAntivirus_Page.js';
                    u[47] = '//[\\w\\.-]+/athome/security/protect/windowsme/firewall\\.aspx$';
            p[47] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_MeFirewall_Page.js';
                    u[48] = '//[\\w\\.-]+/athome/security/protect/windowsme/updates\\.aspx$';
            p[48] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_MeUpdates_Page.js';
                    u[49] = '//[\\w\\.-]+/athome/security/protect/windowsme/antivirus\\.aspx$';
            p[49] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_MeAntivirus_Page.js';
                    u[50] = '//[\\w\\.-]+/athome/security/protect/checkos\\.aspx$';
            p[50] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_CheckOs_Page.js';
                    u[51] = '//[\\w\\.-]+/athome/security/protect/windowsxp/choose\\.aspx$';
            p[51] = '/library/svy/SiteRecruit_PageConfiguration_2503mt_XpChoose_Page.js';
                    u[52] = '//[\\w\\.-]+/china/windowsserversystem/facts((/)|(/default\\.mspx))?$';
            p[52] = '/library/svy/SiteRecruit_PageConfiguration_2670mt_Page.js';
            }
    
    // Return the appropriate configuration for the given URL, if any.
    function PageConfigurationBroker_getConfigurationForPage(url)
    {
        var currentScore = 0;
        var currentMatch = -1;
        
        // Iterate over each URL.
        for (var i = 0; i < this.urls.length; i++)
        {
            // Do the reg exp match.
            var r = new RegExp(this.urls[i], 'i');
            if (url.toString().search(r) != -1)
            {
                // Take the current if the score is equal or better.
                var newScore = this.urls[i].length;
                if (newScore >= currentScore)
                {
                    currentMatch = i;
                    currentScore = newScore;
                }
            }
        }
        
        // If there was a match, return the appropriate page configuration.
        var page = null;
        if (currentMatch >= 0)
        {
            page = this.pages[currentMatch];
        }
        
        return page;
    }
    
    // Dynamically loads the associated configuration.
    function PageConfigurationBroker_loadConfiguration(configuration)
    {
        document.write('<script language="JavaScript" src="' + configuration + '"></script>');
    }
}

try
{
    // Only run if the browser is supported.
    if (SiteRecruit_Globals.isInternetExplorer || SiteRecruit_Globals.isMozilla)
    {
        // Create and start the Broker for the current location.
        SiteRecruit_Globals.broker = new SiteRecruit_PageConfigurationBroker();
        SiteRecruit_Globals.broker.start(window.location);
    }
}
catch (e)
{
    // Suppress any errors.
}
