/*
 * common code to check for toolbar and relevant info
 *
 * As of version 2.2, we include support for detecting Facebook toolbars.
 *
 * bInstalled = Any of the MyWebSearch, XPI or Vicinio toolbars are installed
 * bMWSInstalled = The MyWebSearch Toolbar is installed
 * bXPIInstalled = The Firefox XPI Toolbar is installed
 * bVicinioInstalled = The Vicinio Toolbar is installed
 */

var TOOLBAR = {
	bInstalled: false,
	oActiveXCtl: null,
	sVersion: null,
	sUID: null,
	sPartnerID: null,
	sParentPartnerID: null,
	sChildPartnerID: null,
	sBucket: "",
	sPartnerSource: "",
	sHtmlMenuCtlId: null,
	iToolbarType: -1,
	sLatestVersion: "",
	bLatestVersion: false,
	bUpgradeRequired: false, // why was this true by default?
	bScreenSaverCtl: false,
	oScreenSaverInstaller: null,
	bToolbarErrorCaught: false,
    detectionCachingEnabled: true,

	// debugging enabled/disabled
	debug_enabled: false,
    // code version for this object
    code_version: "2.0.2",

	//-- should not be using xpi specific vars anymore
	bXPIInstalled: false,
	bXPIErrorCaught: false,
	sXPIVersion: null,
	sXPILatestVersion: "",
	bXPILatestVersion: false,
	bXPIUpgradeRequired: false,

	//Specific toolbar installed booleans
	bMWSInstalled: false,
	bVicinioInstalled: false,

	// controller objects after instantiation
	oSettingsCtl: null,
	oHtmlMenuCtl: null,
    oScreenSaverCtl: null,
    oDataCtl: null,
    oChatCtl: null,

	xpi_interval: null,
	xpi_event: {
		TBCkElem: null,
		TBCkEvt: null
	},

	browser: {
		name: "",
		major_version: 0
	},

	toolbar_list: [
        'mws_retrogamer_dual.settingsCtl',
        'mws_retrogamer_firefox.settingsCtl',
        'mws_retrogamer_msie.settingsCtl',
        'mws.settingsCtl',
        'mws.xpi',
        'vicinio.settingsCtl'
    ],

    facebook_toolbar_list: [
        'facebook_iwon_msie.settingsCtl',
        'facebook_retrogamer_msie.settingsCtl',
        'facebook_mfc_msie.settingsCtl',
        'facebook_webfetti_msie.settingsCtl',
        'facebook_iwonglobal_msie.settingsCtl',
        'facebook_mywebface_msie.settingsCtl',
        'facebook_kazulah_msie.settingsCtl',
        'facebook_girlsense_msie.settingsCtl',
        'facebook_zwinky_msie.settingsCtl',
        'facebook_pss_msie.settingsCtl',
        'facebook_cursormania_msie.settingsCtl',
        'facebook_smileycentral_msie.settingsCtl',
        'facebook_smileycreator_msie.settingsCtl',
        'facebook_gamingwonderland_msie.settingsCtl',
        'affinity_ourbabymaker_msie.settingsCtl',

        'facebook_iwon_dual.settingsCtl',
        'facebook_retrogamer_dual.settingsCtl',
        'facebook_mfc_dual.settingsCtl',
        'facebook_webfetti_dual.settingsCtl',
        'facebook_iwonglobal_dual.settingsCtl',
        'facebook_mywebface_dual.settingsCtl',
        'facebook_kazulah_dual.settingsCtl',
        'facebook_girlsense_dual.settingsCtl',
        'facebook_zwinky_dual.settingsCtl',
        'facebook_pss_dual.settingsCtl',
        'facebook_cursormania_dual.settingsCtl',
        'facebook_smileycentral_dual.settingsCtl',
        'facebook_smileycreator_dual.settingsCtl',
        'facebook_gamingwonderland_dual.settingsCtl',
        'affinity_ourbabymaker_dual.settingsCtl',

        'facebook_iwon_firefox.settingsCtl',
        'facebook_retrogamer_firefox.settingsCtl',
        'facebook_mfc_firefox.settingsCtl',
        'facebook_webfetti_firefox.settingsCtl',
        'facebook_iwonglobal_firefox.settingsCtl',
        'facebook_mywebface_firefox.settingsCtl',
        'facebook_kazulah_firefox.settingsCtl',
        'facebook_girlsense_firefox.settingsCtl',
        'facebook_zwinky_firefox.settingsCtl',
        'facebook_pss_firefox.settingsCtl',
        'facebook_cursormania_firefox.settingsCtl',
        'facebook_smileycentral_firefox.settingsCtl',
        'facebook_smileycreator_firefox.settingsCtl',
        'facebook_gamingwonderland_firefox.settingsCtl',
        'affinity_ourbabymaker_firefox.settingsCtl',

        'mws_webfetti_dual.settingsCtl',
        'mws_webfetti_firefox.settingsCtl',
        'mws_webfetti_msie.settingsCtl',

        'mws_iwon_dual.settingsCtl',
        'mws_iwon_firefox.settingsCtl',
        'mws_iwon_msie.settingsCtl',

        'mws_iwonglobal_dual.settingsCtl',
        'mws_iwonglobal_firefox.settingsCtl',
        'mws_iwonglobal_msie.settingsCtl',

        'mws_mywebface_dual.settingsCtl',
        'mws_mywebface_firefox.settingsCtl',
        'mws_mywebface_msie.settingsCtl',

        'mws_mfc_dual.settingsCtl',
        'mws_mfc_firefox.settingsCtl',
        'mws_mfc_msie.settingsCtl'
    ],

	toolbar_test: true,

	//Keith, is this a good idea?
	toolbar_detectAll: false,

	cookie: {
		config: {
			name: "tsox_data",
			data: null
		}
	},

	winner: {},

	init: function( _opts )
	{
		this.get_browser();
		if ( _opts != undefined && _opts != null ){
            // If a custom toolbar list is provided, use it.
			if ( _opts.tb_list != undefined && _opts.tb_list != null ){
				this.toolbar_list = _opts.tb_list;
			}
            // If some products are listed as preferred, then they stand a
            // better chance of becoming the winner.
            if (_opts.preferred_products) {
                // Translate products to toolbars.
                var preferred_tb_list = [];
                for (var k = 0; k < _opts.preferred_products.length; k++) {
                    var preferred_product = _opts.preferred_products[k];
                    var preferred_tb = this._asControlName(preferred_product);
                    preferred_tb_list.push(preferred_tb);
                }

                this.toolbar_list = preferred_tb_list.concat(this.toolbar_list);
            }
            // If a custom toolbar test is provided, use it.
			if ( _opts.find != undefined && _opts.find != null && _opts.find != "" ){
				this.toolbar_test = _opts.find;
			}
			if ( _opts.detectAll != undefined && _opts.detectAll != null && _opts.detectAll != "" ){
				this.toolbar_detectAll = _opts.detectAll;
			}
		}
		// this.DEBUG("init: this.toolbar_list = " + this.toolbar_list);
		if ( this.toolbar_test ){ this.find_toolbar(); }
		if ( this.toolbar_detectAll ){ this.detect_toolbars(); }

        // TB-1288 Zwinky, PSS, Smiley, CursorMania must be treated differently.
        // For these websites, if any toolbar in the pool has been detected and
        // that toolbar is not MWS, then redirect to an error page.
        var nonMwsDetected = this.bInstalled && this.winner && this.winner.toolbar != 'mws';
        if (nonMwsDetected) {
            var website = this.getWebsiteInformation();
            if (website && website.denyAccess) {
                window.location.href = 'http://www.mywebface.com/toolbar/error.html?website=' + encodeURIComponent(website.name);
            }
        }
	},

    websites: [
        //{ denyAccess: true, name: 'Zwinky', match: '.zwinky.com/' },
        { denyAccess: true, name: 'Popular ScreenSavers', match: 'http[s]?://([^/]+\\.)?popularscreensavers\\.com(:[0-9]+)?/' }
        //{ denyAccess: true, name: 'Smiley Central', match: '.smileycentral.com/' }
    ],

    getWebsiteInformation: function() {
        // Looks at the location href to infer whether we're being visited by
        // one of the exception websites.
        var s = window.location.href.toLowerCase();
        for (var k = 0; k < this.websites.length; k++) {
            var website = this.websites[k];
            if (s.match(website.match)) {
                return website;
            }
        }
        return null;
    },

    isProductToolbarInstalled: function(productName) {
        var control = this._asControl(productName);
        return this.tb_exists(control);
    },

    isProductToolbarInstallable: function(productName, channel) {
        return productName == channel || productName.indexOf(channel + '.') == 0;
    },

    _normalizeProductName: function(productName) {
        var k = productName.length - '.current'.length;
        if (productName.indexOf('.current') == k) {
            productName = productName.substring(0, 1 + k) + this.browser.name;
        }
        return productName;
    },

    _asControlName: function(productName) {
        productName = this._normalizeProductName(productName);

        var object = this.get_toolbar_from_master(productName);
        if (!object.ctl) {
            throw 'Misconfigured product: ' + productName
                + '; must include main control name "ctl".';
        }
        var controlName = productName + '.' + object.ctl;
        return controlName;
    },

    _asControl: function(productName) {
        productName = this._normalizeProductName(productName);

        var object = this.get_toolbar_from_master(productName);
        if (!object.ctl) {
            throw 'Misconfigured product: ' + productName
                + '; must include main control name "ctl".';
        }
        return object[object.ctl];
    },

	find_toolbar: function()
	{
		// loop through toolbar_list, stop on first match
		for ( var idx=0; idx < this.toolbar_list.length; idx++ ){
			var oTb = this.get_toolbar_from_master( this.toolbar_list[idx] );
            var currentBrowserEnabled = !oTb.browser || oTb.browser == this.browser.name || oTb.browser == 'dual';
			if ( currentBrowserEnabled && this.tb_exists( oTb ) ){
                // Nonetheless, we could be trying to detect a dual install and
                // happen to find a Firefox-only install (because the two
                // install modes have the same class IDs), so find out for
                // sure by checking the value of the BrowsersSupported flag.
                var actuallyInstalled = true;

                if (oTb.browser == 'dual') {
                    this.CreateInstance({ control: oTb });
                    var settingsControl = document.getElementById(oTb.html_id);
                    settingsControl.GetVersion('');

                    try {
                        var bsf = settingsControl.BrowsersSupported;
                        if (typeof (bsf) == 'undefined') {
                            // Not supported. Err on the side of allowing
                            // access.
                        } else {
                            var expectedBsf = 0x03;
                            if (bsf == expectedBsf) {
                                // It is installed as a matter of fact.
                            } else {
                                // Not truly installed; I'm just seeing a Firefox here.
                                // --
                                // TB-1341 - Ignore the BrowsersSupported flag
                                // until we address TB-1287 in DLP.
                                //actuallyInstalled = false;
                                // --
                            }
                        }
                    } catch (e) {
                        // Not supported. Err on the side of allowing
                        // access.
                    }
                }

                if (actuallyInstalled) {
                    this.winner = oTb;
                    this.bInstalled = true;
                    return;
                }
			}
		}
	},

	detect_toolbars: function()
	{
		// loop through toolbar_list, simply set toolbar installed booleans.  Do not pick a winner.  Leave that up to find_toolbar()
		for ( var idx=0; idx < this.toolbar_list.length; idx++ ){
			var oTb = this.get_toolbar_from_master( this.toolbar_list[idx] );
            var currentBrowserEnabled = !oTb.browser || oTb.browser == this.browser.name;
			if ( currentBrowserEnabled && this.tb_exists( oTb ) ){
				//this.winner = oTb;
				this.bInstalled = true;
				//Keith, I need some magic here... obviously this won't work.
				if (oTb == "mws") this.bMWSInstalled = true;
				else if (oTb == "xpi") this.bXPIInstalled = true;
				else if (oTb == "vicinio") this.bVicinioInstalled = true;
			}
		}
	},

	find_html_menu_ctl: function()
	{
		// this.DEBUG("find_html_menu_ctl: this.winner.toolbar = " + this.winner.toolbar);
		// this.DEBUG("find_html_menu_ctl: this.winner.xpi = " + this.winner.xpi);
		if ( this.winner.toolbar == null || this.winner.toolbar == undefined || this.winner.toolbar == "" ){
			return;
		}
		var oTb = this.get_toolbar_from_master( this.winner.toolbar + ".htmlMenuCtl" );
		this.get_toolbar_data( oTb );
	},

	get_toolbar_data: function( _ctl )
	{
		// this.DEBUG("get_toolbar_data: _ctl.xpi = " + _ctl.xpi);
		// this.DEBUG("get_toolbar_data: this.cookie.config.data = " + this.cookie.config.data);
		if ( _ctl.xpi && this.cookie.config.data == null ){
			// this.DEBUG("get_toolbar_data: xpi is true, coookie data is null");
			GetXpiConfig( this );
		} else if ( _ctl.xpi && this.cookie.config.data != null ){
			// this.DEBUG("get_toolbar_data: xpi is true, coookie data is NOT null");
			this.set_xpi_data();
		} else if ( _ctl.exe ){
			// this.DEBUG("get_toolbar_data: xpi is false, exe is true");
			// instantiate the control we want to use
			this.instantiate( _ctl );
		}
	},

	version_check: function( _ctl )
	{
		// this.DEBUG("version_check: _ctl.name = " + _ctl.name);
		// this.DEBUG("version_check: this.bInstalled = " + this.bInstalled);
		if ( this.bInstalled ){
			var versionCheck = this.check_versions( this.sVersion, _ctl.max_version, _ctl.required_version );
			this.bLatestVersion = versionCheck.latest;
			this.bUpgradeRequired = versionCheck.upgrade;
			if( this.bXPIInstalled ){
				this.bXPILatestVersion = this.bLatestVersion;
				this.bXPIUpgradeRequired = this.bUpgradeRequired;
			}
		}
	},

	set_xpi_data: function( _props )
	{
		if ( this.cookie.config.data != null ){
			// this.DEBUG("set_xpi_data: cookie data is NOT null");
			try {
				// this.DEBUG("set_xpi_data: this.cookie.config.data.gu = " + this.cookie.config.data.gu);
				this.sVersion = this.cookie.config.data.ver;
				this.sUID = this.cookie.config.data.gu;
				this.sPartnerID = this.cookie.config.data.cb;
				this.sBucket = this.cookie.config.data.trk;
				var partner = this.parse_partner( this.sPartnerID );

				this.sParentPartnerID = partner.parentid;
				this.sChildPartnerID = partner.childid;
				this.sBucket = partner.bucket;
				this.sPartnerSource = partner.source;
			} catch(Err){
				// this.DEBUG("set_xpi_data: woops! " + Err);
				this.bXPIErrorCaught = true;
			}
		} else {
			try {
				this.sUID = document.getElementsByTagName("TSOX_TBCk")[0].getAttribute("tbid");
				this.sPartnerID = document.getElementsByTagName("TSOX_TBCk")[0].getAttribute("cbid");
				this.sBucket = document.getElementsByTagName("TSOX_TBCk")[0].getAttribute("trkid");
				var partner = this.parse_partner( this.sPartnerID );

				this.sParentPartnerID = partner.parentid;
				this.sChildPartnerID = partner.childid;
				this.sBucket = partner.bucket;
				this.sPartnerSource = partner.source;
			} catch(Err){
				// this.DEBUG("set_xpi_data: woops! " + Err);
				this.bXPIErrorCaught = true;
			}
		}
	},

	get_settingsCtl_data: function()
	{
		try {
            // To ensure complete initialization of the settings control in the
            // presence of a bug, we require the call to GetVersion to be the
            // first call into the settings control once it is initialized.
            this.sVersion = this.oSettingsCtl.GetVersion('');

			this.sUID = this.oSettingsCtl.I;
			this.sPartnerID = this.oSettingsCtl.P;
			var partner = this.parse_partner( this.sPartnerID );

			this.sParentPartnerID = partner.parentid;
			this.sChildPartnerID = partner.childid;
			this.sBucket = partner.bucket;
			this.sPartnerSource = partner.source;
			this.iToolbarType = this.oSettingsCtl.Type;
			// oToolbarController.iToolbarType = oToolbarController.oActiveXCtl.Type;
		} catch(Err){
			this.bToolbarErrorCaught=true;
		}
	},

	get_htmlCtl_data: function()
	{
        this.DEBUG("get_htmlCtl_data: this.oHtmlMenuCtl  = " + this.oHtmlMenuCtl );
		this.sHtmlMenuCtlId = this.oHtmlMenuCtl.GetUID('http://www.funwebproducts.com/');
		// this.DEBUG("get_htmlCtl_data: this.sHtmlMenuCtlId  = " + this.sHtmlMenuCtlId );
		// this.DEBUG("get_htmlCtl_data: this.winner.classid  = " + this.winner.classid );
		// this.DEBUG("get_htmlCtl_data: winner = " + this.winner.toolbar + "." + this.winner.name );
	},

	parse_partner: function( _partnerid )
	{
		var parentid = null;
		var childid = null;
		var bucket = null;
		var source = null;

        var pf = new PartnerIdFactory();
        var p = pf.parse(_partnerid, null, null);
        if (p.hasParent()){
            parentid = p.getParent().toString();
            childid = p.getChild().toString();
        } else {
            parentid = p.toString();
        }
        if (p.hasCampaign())
            source = p.getCampaign();
        if (p.hasTrack())
            bucket = p.getTrack();

		return {
			parentid: parentid,
			childid: childid,
			bucket: bucket,
			source: source
		};
		//this.sParentPartnerID = parentid;
		//this.sBucket = ( bucket ) ? bucket : "" ;
	},

	instantiate: function( _props )
	{
		// switch
		switch ( _props.name ){
			case 'settingsCtl':
				this._instantiate_Ctl( _props );
				// this.DEBUG("instantiate: [settingsCtl] _props.html_id = " + _props.html_id);
				// this.DEBUG("instantiate: [settingsCtl] document.getElementById( _props.html_id ) = " + document.getElementById( _props.html_id ));
				this.oSettingsCtl = document.getElementById( _props.html_id );
                this.settingsCtlProperties = _props;
				this.get_settingsCtl_data();
				this.check_update_flag();
				// this.DEBUG( "[TOOLBAR::instantiate] check for if FF and tb version < 2.3.50.21");
				// check for if FF and tb version < 2.3.50.21
				this.require_update(
					{
						require_firefox: true,
						required_version: "2.3.50.21",
						redirect_url: "http://help.mywebsearch.com/upgrade_now.jsp?p=" + this.sPartnerID + "&url=" + escape(document.location.href)
					}
				);
				// this.DEBUG( "[TOOLBAR::instantiate] after require_update");
				break;
			case 'htmlMenuCtl':
				this._instantiate_Ctl( _props );
				// this.DEBUG("instantiate: [htmlMenuCtl] _props.html_id = " + _props.html_id);
				// this.DEBUG("instantiate: [htmlMenuCtl] document.getElementById( _props.html_id ) = " + document.getElementById( _props.html_id ));
				this.oHtmlMenuCtl = document.getElementById( _props.html_id );
				this.get_htmlCtl_data( _props );
				break;
		}
	},

	_instantiate_Ctl: function( _props )
	{
		try {
			if ( window.ActiveXObject ){
				new ActiveXObject( _props.activeX_object );
				//var object_tag = "<object id=\""+_props.html_id+"\" classid=\"clsid:"+_props.classid+"\" width=1 height=1>&nbsp;</object>";
				var object_tag = this.get_tag_html( { tagname:"object", attribs: _props } );
				// this.DEBUG("_instantiate_Ctl: object_tag = " + object_tag);
				document.write(object_tag);
				//this.bInstalled = true;
			} else if ( this.plugin_exists( _props.mimetype ) ){
				/*
				var embed_tag = "<embed id=\""+_props.html_id+"\"" +
								" type=\""+_props.mimetype+"\"" +
								" ProgId=\""+_props.prog_id+"\"" +
								" width=2 height=2>&nbsp;</embed>";
				*/
				var embed_tag = this.get_tag_html( { tagname:"embed", attribs: _props } );
				document.write(embed_tag);
				//this.bInstalled = true;
			}
		} catch(Err){
			this.bToolbarErrorCaught=true;
		}
	},

	get_tag_html: function( _props )
	{
		if ( _props.tagname == undefined || _props.tagname == "" || _props.tagname == null ){ _props.tagname = "object"; }
		var html = "";
		if ( _props.tagname == 'embed' ){
			html = this._get_embed_tag_html( _props.attribs );
		} else {
			html = this._get_object_tag_html( _props.attribs );
		}
		return html;
	},

	_get_object_tag_html: function( _props )
	{
		var tag_html = "<object id=\""+_props.html_id+"\"" +
						" classid=\"clsid:"+_props.classid+"\"" +
                " width=1 height=1>";
        var params_html = "";
        if ( _props.params ){
            for ( var key in _props.params ){
                this.DEBUG("_get_object_tag_html: "+key+" = " + _props.params[key]);
                params_html += "<param name=\""+key+"\" value=\""+_props.params[key]+"\" />";
            }
            this.DEBUG("_get_object_tag_html: params_html = " + params_html);
            tag_html += params_html;
        }
        tag_html += "&nbsp;</object>";
		return tag_html;
	},

	_get_embed_tag_html: function( _props )
	{
		var tag_html = "<embed id=\""+_props.html_id+"\"" +
						" type=\""+_props.mimetype+"\"" +
						" ProgId=\""+_props.prog_id+"\"" +
                        " width=2 height=2";
        var params_html = "";
        if ( _props.params ){
            for ( var key in _props.params ){
                this.DEBUG("_get_embed_tag_html: "+key+" = " + _props.params[key]);
                params_html += " param_" + key + "=\"" + _props.params[key] + "\"";
            }
            this.DEBUG("_get_embed_tag_html: params_html = " + params_html);
            tag_html += params_html;
        }
        tag_html += ">&nbsp;</embed>";
		return tag_html;
	},

    get_toolbar_from_master: function( _key )
    {
        var parts = _key.split('.');
        //this.DEBUG("get_toolbar_from_master: _key = " + _key);
        //this.DEBUG("get_toolbar_from_master: parts = " + parts);
        //this.DEBUG("get_toolbar_from_master: parts[0] = " + parts[0]);
        //this.DEBUG("get_toolbar_from_master: parts[1] = " + parts[1]);

        var object = this.master_list;
        for (var k = 0; k < parts.length; k++) {
            var part = parts[k];
            object = object[part];
            if (typeof (object) == 'undefined') {
                throw 'Invalid master list key: ' + _key + '.';
            }
        }

        return object;
    },

	tb_exists: function( _props )
	{
        if (this.detectionCachingEnabled && _props.tested) {
            return _props.installed;
        }

		// this.DEBUG("tb_exists: is it exe/xpi = " + _props.exe + "/" + _props.xpi);
		if ( _props.exe ){
			var bExe = this._exe_exists( _props );
			// this.DEBUG("tb_exists: bExe = " + bExe);
            _props.tested = true;
            _props.installed = bExe;
			return bExe;
		} else if ( _props.xpi ){
			var bXpi = this._xpi_exists( _props );
            _props.tested = true;
            _props.installed = bXpi;
			return bXpi;
		}
	},

	_exe_exists: function( _props )
	{
		try {
			if (window.ActiveXObject) {
				new ActiveXObject( _props.activeX_object );
				return true;
			} else {
				if ( this.plugin_exists( _props.mimetype ) ){
					return true;
				}
			}
		} catch(Err){
			// this.DEBUG("_exe_exists: Err = " + Err);
		}
		return false;
	},

	_xpi_exists: function( _props )
	{
		if ( this.browser.name == "firefox" ){
			var tsox_el = document.getElementById('tsox_ver_el');
			// this.DEBUG("_xpi_exists: tsox_el = " + tsox_el);
			if ( tsox_el ){
				try {
					this.bInstalled = this.bXPIInstalled = true;
					this.sVersion = this.sXPIVersion = tsox_el.getAttribute('ver');
					return true;
				} catch(Err){}
			} else {
				this.get_tsox_cookies();
				if ( this.cookie.config.data != null ){
					this.bInstalled = this.bXPIInstalled = true;
					this.bXPILatestVersion = this.bLatestVersion;
					return true;
				} else {
					return false;
				}
				//return ( this.cookie.config.data != null );
			}
		}
		return false;
	},

	get_tsox_cookies: function()
	{
		//var cookie_strings = document.cookie.split(";");
		var cookie = {};
		var start = document.cookie.indexOf(this.cookie.config.name + "=");
		if ( start < 0 ){ return; }
		var end = document.cookie.indexOf(";",start);
		if ( end < 0 ){ end = document.cookie.length; }
		start += ( this.cookie.config.name.length + 1 );
		// this.DEBUG("get_tsox_cookies: start = " + start);
		// this.DEBUG("get_tsox_cookies: end = " + end);
		var data = unescape( document.cookie.substring(start,end) );
		// this.DEBUG("get_tsox_cookies: data = " + data);
		var params = data.split("&");
		// this.DEBUG("get_tsox_cookies: params.length = " + params.length);
		for ( var kvp in params ){
			var key = params[kvp].split("=")[0];
			var val = params[kvp].split("=")[1];
			// this.DEBUG("get_tsox_cookies: " + key + " = " + val);
			cookie[key] = val;
		}
		this.cookie.config.data = cookie;
	},

	NeedsUpgrade: function( _compare )
	{
		// this.DEBUG("NeedsUpgrade: typeof(_compare) = " + typeof(_compare));
		if ( typeof(_compare) == "string" ){
			if ( this.sVersion != this.get_max_version( _compare, this.sVersion ) ){
		 		return true;
		    }
		} else if( _compare != null && _compare != undefined ) {
			// this.DEBUG("NeedsUpgrade: _compare.tb = " + _compare.tb );
			// this.DEBUG("NeedsUpgrade: _compare.ver = " + _compare.ver );
			try {
                var index = _compare.tb.lastIndexOf('.');
                var compareToolbar = _compare.tb.substring(0, index);
                var compareName = _compare.tb.substring(1 + index);
				var check = false;
				if ( this.winner.toolbar == compareToolbar && this.winner.name == compareName ) {
                    check = true;
                }
				// this.DEBUG("NeedsUpgrade: check = " + check );
				if ( check ){
					// this.DEBUG("NeedsUpgrade: version match = " + ( this.sVersion != this.get_max_version( _compare.ver, this.sVersion ) ) );
					return ( this.sVersion != this.get_max_version( _compare.ver, this.sVersion ) );
				}
			} catch(Err){}
		}

	    return false;
	},

	check_versions: function( _current, _latest, _required )
	{
		// this.DEBUG("check_versions: _current = " + _current);
		// this.DEBUG("check_versions: _latest = " + _latest);
		// this.DEBUG("check_versions: _required = " + _required);
		if ( _current == null || _current == undefined ){ _current = ""; }
		if ( _latest == null || _latest == undefined ){ _latest = ""; }
		if ( _required == null || _required == undefined ){ _required = ""; }
		var aToolbarVersion = ( _current != "" ) ? _current.split('.') : [];
		var aLatestVersion = ( _latest != "" ) ? _latest.split('.') : ['0','0','0','0'];
		var aRequiredVersion = _required.split('.');

		for (i=0; i < aToolbarVersion.length; i++){
			// this.DEBUG("check_versions: i = " + i);
			if ( aToolbarVersion[i].length == 1 ) aToolbarVersion[i] = "0" + aToolbarVersion[i];
			if ( aLatestVersion[i].length == 1 ) aLatestVersion[i] = "0" + aLatestVersion[i];
			if ( aRequiredVersion[i].length == 1 ) aRequiredVersion[i] = "0" + aRequiredVersion[i];
		}

		var iToolbarVersion = aToolbarVersion.join("");
		var iLatestToolbarVersion = aLatestVersion.join("");
		var iRequiredToolbarVersion = aRequiredVersion.join("");

		// this.DEBUG("check_versions: iToolbarVersion = " + iToolbarVersion);
		// this.DEBUG("check_versions: iLatestToolbarVersion = " + iLatestToolbarVersion);
		// this.DEBUG("check_versions: iRequiredToolbarVersion = " + iRequiredToolbarVersion);

		iToolbarVersion = iToolbarVersion - 0;
		iLatestToolbarVersion = iLatestToolbarVersion - 0;
		iRequiredToolbarVersion = iRequiredToolbarVersion - 0;

		return {
				latest:(iToolbarVersion >= iLatestToolbarVersion),
				upgrade:(iToolbarVersion < iRequiredToolbarVersion)
		};
	},

	get_max_version: function( _v1, _v2 )
	{
		// this.DEBUG("get_max_version: _v1 = " + _v1);
		// this.DEBUG("get_max_version: _v2 = " + _v2);
		var aVersion1 = _v1.split('.');
		var aVersion2 = _v2.split('.');
		if ( aVersion1.length < aVersion2.length ){
			aVersion1 = this._pad_version_number( aVersion1, aVersion2.length );
		} else if ( aVersion1.length > aVersion2.length ){
			aVersion2 = this._pad_version_number( aVersion2, aVersion1.length );
		}
		for (i=0; i < aVersion1.length; i++){
			if (aVersion1[i].length == 1) aVersion1[i] = "0" + aVersion1[i];
			if (aVersion2[i].length == 1) aVersion2[i] = "0" + aVersion2[i];
		}
		// this.DEBUG("get_max_version: aVersion1 = " + aVersion1.join("."));
		// this.DEBUG("get_max_version: aVersion2 = " + aVersion2.join("."));

		var iToolbarVersion = aVersion1.join("");
		var iLatestToolbarVersion = aVersion2.join("");
		iToolbarVersion = iToolbarVersion - 0;
		iLatestToolbarVersion = iLatestToolbarVersion - 0;

		return ( iToolbarVersion >= iLatestToolbarVersion ) ? _v1 : _v2 ;
	},

	_pad_version_number: function( _value_array, _max )
	{
		// this.DEBUG("_pad_version_number: _value_array.length = " + _value_array.length);
		// this.DEBUG("_pad_version_number: _max = " + _max);
		for( var idx=_value_array.length; idx < _max; idx++ ){
			_value_array[idx] = "0";
		}
		return _value_array;
	},

	plugin_exists: function( _mimetype )
	{
		navigator.plugins.refresh(false);
		var numPlugins = navigator.plugins.length;
		for (var i = 0; i < numPlugins; i++) {
			var plugin = navigator.plugins[i];
			var numTypes = plugin.length;
	        var mimetype;
	        var enabled;
	        var enabledPlugin;
	        for (var j = 0; j < numTypes; j++) {
	            mimetype = plugin[j];
	            if (mimetype) {
	                if (mimetype.type == _mimetype) {
	                	return true;
	                }
	            }
	        }
		}
		return false;
	},

	get_browser: function()
	{
		if ( navigator.userAgent.search(/Firefox/i) > -1 ){
			this.browser.name = "firefox";
			try {
				this.browser.major_version = navigator.userAgent.match(/Firefox\/(\d+(\.\d*)*)/i)[1].split(".")[0];
			} catch(err){}
			return;
		}
		// make sure it's not Opera which sometimes reports itself as IE
		if ( navigator.appName.search(/Internet Explorer/i) > -1 ){
			if ( navigator.userAgent.search(/Opera\s/i) < 0 ){
				this.browser.name = "msie";
				try {
					this.browser.major_version = navigator.userAgent.match(/msie\s(\d+(\.\d*)*)/i)[1].split(".")[0];
				} catch(err){}
				return;
			}
		}
	},

	get_property: function( _prop, _alt )
	{
		if ( _prop == undefined || _prop == null || _prop == "" ){ return ""; }
		if ( _alt == undefined ){ _alt = ""; }
		var pvalue = ( this[_prop] ) ? this[_prop] : _alt ;
		// this.DEBUG("get_property: this["+_prop+"] = " + this[_prop]);
		return pvalue;
	},

	check_disable: function( _ctl, productCode, bReturnValue, successURL )
	{
		try {
            //Check if IE8+ has the Toolbar Enabled
            var toolbandClassid = this.settingsCtlProperties.toolbandClassid;
            var enabled
                    = toolbandClassid && toolbandClassid != '-'
                    && this.oSettingsCtl.IsObjectEnabled('{' + toolbandClassid + '}');
			if (!enabled) {
				// this.DEBUG("disabled");
				if(typeof(urchinTracker)=="function")urchinTracker('/toolbar/detect/disabled/viewdialog');
				if(bReturnValue) {
					return true;
				} else {
					showModal(productCode,this.sPartnerID,"disabled",successURL);
				}
			//Check if IE5+ has the Toolbar visible
			} else if (! this.oSettingsCtl.ToolbarVisible) {
				// this.DEBUG("not visible");
				if(typeof(urchinTracker)=="function")urchinTracker('/toolbar/detect/hidden/viewdialog');
				if(bReturnValue) {
					return true;
				} else {
					showModal(productCode,this.sPartnerID,"hidden",successURL);
				}
			} else {
				// this.DEBUG("enabled");
				if(typeof(urchinTracker)=="function")urchinTracker('/toolbar/detect/enabled');
				if(bReturnValue) return false;
			}
		} catch(e) {
			// this.DEBUG("method not available");
			if(bReturnValue) return false;
		}
	},

	check_update_flag: function()
	{
		// this.DEBUG( "[TOOLBAR::check_update_flag]");
		try {
			// this.DEBUG( "[TOOLBAR::check_update_flag] check for au");
			if (! this.oSettingsCtl.GetRegistryToggle("au") ) {
				// this.DEBUG( "[TOOLBAR::check_update_flag] au = " + this.oSettingsCtl.GetRegistryToggle("au") );
				this.oSettingsCtl.SetRegistryToggle("ua",false);
				this.oSettingsCtl.SetRegistryToggle("au",true);
				if (this.oSettingsCtl.GetRegistryToggle("au")) {
					var pxUAUrl='http://imgfarm.com/images/nocache/tr/tb/ua.gif?uid='+this.sUID+'&p='+this.sPartnerID+'&v='+this.sVersion+'&url='+escape(window.location.href);
					var pxUAImage = new Image();
					pxUAImage.src = pxUAUrl;
				}
			}
		} catch(Err){
			// this.DEBUG( "[TOOLBAR::check_update_flag] Err.msg = " + Err.msg );
		}
	},

	require_update: function( _opts )
	{
		var bReqFF = false;
		var bReqIE = false;
		var sTbReqVer = "";
		var sRedirect = "";

		// this.DEBUG( "[TOOLBAR::require_update] _opts.require_firefox = " + _opts.require_firefox );
		// this.DEBUG( "[TOOLBAR::require_update] _opts.required_version = " + _opts.required_version );
		this.DEBUG( "[TOOLBAR::require_update] _opts.redirect_url = " + _opts.redirect_url );

		// check for values passed in
		if ( _opts == undefined ){ _opts = {} }
		if ( typeof _opts.require_firefox == 'boolean' ){
			bReqFF = _opts.require_firefox;
		}
		// not needed now, but for future use
		if ( typeof _opts.require_ie == 'boolean' ){
			bReqIE = _opts.require_ie;
		}

		if ( _opts.required_version != null && _opts.required_version != undefined ){
			sTbReqVer = _opts.required_version;
		}

		if ( _opts.redirect_url != null && _opts.redirect_url != undefined ){
			sRedirect = _opts.redirect_url;
		}

		if ( bReqFF && this.browser.name == "firefox" && this.sVersion!=null && this.sVersion!="undefined" && this.sVersion!=""){
			// check_versions: function( _current, _latest, _required )

			var vcheck = this.check_versions( this.sVersion, this.winner.max_version, "2.3.50.21" );
			// this.DEBUG( "[TOOLBAR::RequiredUpdate] vcheck.latest = " + vcheck.latest );
			// this.DEBUG( "[TOOLBAR::require_update] vcheck.upgrade = " + vcheck.upgrade );
			if ( vcheck.upgrade && sRedirect != "" ){
				this.send_to_upgrade( { url: sRedirect } );
			}
		}

	},

	send_to_upgrade: function( _opts )
	{
		// this.DEBUG( "[TOOLBAR::send_to_upgrade] _opts.url = " + _opts.url );
		// check for values passed in
		if ( _opts == undefined ){ _opts = {} }
		if ( _opts.url != null && _opts.url != undefined ){
			window.location.replace( _opts.url );
		}
	},

	check_search_asst: function()
	{
		var sa = ( this.oSettingsCtl.GetRegistryToggle("mwssrcas.dll") ) ? true : false;
		return sa;
	},

	check_hp: function( _domains )
	{
		var hp = true;
		if ( _domains == null || _domains == undefined || _domains == "" ){
			return true;
		}

		var browser = 1; // 1 = ie, 2 = ff
		if ( navigator.userAgent.toLowerCase().indexOf("firefox") > -1 ){ browser = 2; }
		try {
			hp = this.oSettingsCtl.IsHomePageOnOurDomain( _domains, browser );
		} catch(err){
			hp = null;
			return null;
		}
		return (hp != 0) ;
	},

	feature_detect: function( _domains )
	{
		// check_disable: function( _ctl, productCode, bReturnValue, successURL )
		// this.oSettingsCtl.IsObjectEnabled("{07B18EA9-A523-4961-B6BB-170DE4475CCA}")
		var features = {
			enabled: true,
			search: true,
			home: true,
			track: {
				t: "1",
				s: "1",
				h: "1"
			},
			track_str: ""
		};

		features.enabled = !this.check_disable( "","",true,"" );
		features.search = this.check_search_asst();
		features.home = this.check_hp( _domains );


		//if ( window.location.href.split("?")[0].indexOf('smileycentraldev.com') > -1 ){
		//	features.search = true;
		//	features.track.s = "X";
		//}
		//features.track.t = ( features.enabled === true ) ? "1" : "0" ;
		//features.track.s = ( features.search === true ) ? "1" : "0" ;
		//features.track.h = ( features.home === true ) ? "1" : "0" ;

		if ( features.enabled === false ){
			features.track.t = "0";
		} else if ( features.enabled == null ){
			features.track.t = "X";
		}

		if ( features.search === false ){
			features.track.s = "0";
		} else if ( features.search == null ){
			features.track.s = "X";
		}

		if ( features.home === false ){
			features.track.h = "0";
		} else if ( features.home == null ){
			features.track.h = "X";
		}

		features.track_str = "t" + features.track.t
							+"s" + features.track.s
							+"h" + features.track.h;

		return features;
	},

	get_segment: function()
	{
		var legend = "0123456789abcdefghijklmnopqrstuvwxyz_";
		var key = this.sUID.substr(-1).toLowerCase();
		return legend.indexOf(key);
	},

/*
possible key/value pairs for _options
control (object)      : similar to master_list objects, will be used if present, else winner is used
tbtype (string)       : mws|vicinio|mindspark|xpi
element (object)      : html element to write to
element_id (string)   : id of htmle element to write to (if object not provided)
override (object)     : override the default values for select properties of a control object
		ex: override { html_id: "SettingsControl", min_version: "2.4.0.1" }
		excludes name,toolbar,exe,xpi
write_to_client (boolean) : write object/embed tag to client
write_to_element (boolean) : write object/embed tag to innerHTML of html element
*/

    // generic get data from toolbar
    // uses settingsCtl to get data
    GetDataFromToolbar: function( _options )
    {
        this.DEBUG("GetDataFromToolbar: _options = " + _options);
        if ( _options == undefined || _options == null ){
            _options = {
                control: this.winner,
                element: null,
                element_id: "",
                override: {},
                write_to_element: false
            };
        }
        if ( _options.control.xpi && this.cookie.config.data == null ){
            this.DEBUG("GetDataFromToolbar: xpi is true, coookie data is null");
            GetXpiConfig( this );
        } else if ( _options.control.xpi && this.cookie.config.data != null ){
            this.DEBUG("GetDataFromToolbar: xpi is true, coookie data is NOT null");
            this.set_xpi_data();
        } else if ( _options.control.exe ){
            // init the settingsCtl via instantiating it and reading data from it
            this.DEBUG("GetDataFromToolbar: _options.control.exe = " + _options.control.exe);
            this.InitSettingsCtl( _options );
        }
    },

    // get data from xpi toolbar
    InitXpiToolbar: function( _options )
    {

    },

    CreateInstance: function( _options )
    {
        this.DEBUG("CreateInstance: _options.control = " + _options.control);
        var html = "";
        try {
            if ( window.ActiveXObject ){
                this.DEBUG("CreateInstance: activeX_object = " + _options.control.activeX_object);
                if ( _options.control.activeX_object ) { new ActiveXObject( _options.control.activeX_object ); }
                html = this.get_tag_html( { tagname:"object", attribs: _options.control } );
                this.DEBUG("CreateInstance: html = " + html);
            } else if ( this.plugin_exists( _options.control.mimetype ) ){
                html = this.get_tag_html( { tagname:"embed", attribs: _options.control } );
            }

            //this.DEBUG("CreateInstance: _options.write_to_element = " + _options.write_to_element);
            if ( _options.write_to_element ){
                var html_element = ( _options.element ) ? _options.element : document.getElementById( _options.element_id ) ;

                if ( html_element ){
                    html_element.innerHTML = html;
                } else {
                    document.write( html );
                }
            } else {
                document.write( html );
            }

        } catch(Err){
            this.DEBUG("CreateInstance: catch(Err) = " + Err.message);
            this.bToolbarErrorCaught=true;
        }
    },

    // instantiate settings control
    InitSettingsCtl: function( _options )
    {
        if ( _options == undefined || _options == null ){
            _options = {};
        }
        this.DEBUG("InitSettingsCtl: _options.control [1] = " + _options.control);
        this.DEBUG("InitSettingsCtl: _options.write_to_element = " + _options.write_to_element);
        //this.DEBUG("InitSettingsCtl: _options.control [2] = " + _options.control);
        if ( _options.control ){
            this.DEBUG("InitSettingsCtl: _options.control exists and is not null or undefined");
            this.CreateInstance( _options );
            this.oSettingsCtl = document.getElementById( _options.control.html_id );
            this.settingsCtlProperties = _options.control;
            this.get_settingsCtl_data();
        } else if( this.winner.exe ){
            var control = this.get_toolbar_from_master( this.winner.toolbar + ".settingsCtl" );
            this.DEBUG("InitSettingsCtl: control = " + control);
            if ( control ){
                _options.control = control;
                this.CreateInstance( _options );
                this.oSettingsCtl = document.getElementById( control.html_id );
                this.settingsCtlProperties = control;
                this.get_settingsCtl_data();
            }
        }
    },

    InitHtmlMenuCtl: function( _options )
    {
        if ( _options == undefined || _options == null ){
            _options = {};
        }
        if ( _options.control ){
            this.DEBUG("InitHtmlMenuCtl: _options.control exists and is not null or undefined");
            this.CreateInstance( _options );
            this.oHtmlMenuCtl = document.getElementById( _options.control.html_id );
            this.get_htmlCtl_data();
        } else if( this.winner.exe ){
            var control = this.get_toolbar_from_master( this.winner.toolbar + ".htmlMenuCtl" );
            this.DEBUG("InitHtmlMenuCtl: control = " + control);
            if ( control ){
                _options.control = control;
                this.DEBUG("InitHtmlMenuCtl: control.html_id = " + control.html_id);
                this.CreateInstance( _options );
                this.oHtmlMenuCtl = document.getElementById( control.html_id );
                this.get_htmlCtl_data();
            }
        }
        /*
        if ( this.winner.toolbar == null || this.winner.toolbar == undefined || this.winner.toolbar == "" ){
            return;
        }
        var oTb = this.get_toolbar_from_master( this.winner.toolbar + ".htmlMenuCtl" );
        */
    },

    InitChatCtl: function( _options )
    {
        this.DEBUG("InitSettingsCtl: _options = " + _options);
        if ( _options == undefined || _options == null ){
            _options = {};
        }

        if( this.winner.exe ){
            var control = this.get_toolbar_from_master( this.winner.toolbar + ".chatCtl" );
            this.DEBUG("InitChatCtl: control = " + control);
            if ( control ){
                _options.control = control;
                this.CreateInstance( _options );
                this.DEBUG("InitChatCtl: control.html_id = " + control.html_id);
                this.oChatCtl = document.getElementById( control.html_id );
                this.DEBUG("InitChatCtl: oChatCtl = " + oChatCtl);
            }
        }

    },

    InitScreenSaverCtl: function( _options )
    {
        this.DEBUG("InitScreenSaverCtl: _options = " + _options);
        if ( _options == undefined || _options == null ){
            _options = {};
        }
        if ( _options.control ){
            this.DEBUG("InitScreenSaverCtl: _options.control exists and is not null or undefined");
            this.CreateInstance( _options );
            this.oScreenSaverCtl = document.getElementById( _options.control.html_id );
        } else if( this.winner.exe ){
            var control = this.get_toolbar_from_master( this.winner.toolbar + ".screenSaverCtl" );
            this.DEBUG("InitScreenSaverCtl: control = " + control);
            if ( control ){
                _options.control = control;
                this.DEBUG("InitScreenSaverCtl: control.html_id = " + control.html_id);
                this.CreateInstance( _options );
                this.oScreenSaverCtl = document.getElementById( control.html_id );
                //this.get_htmlCtl_data();
            }
        }
        this.DEBUG("InitScreenSaverCtl: oScreenSaverCtl = " + this.oScreenSaverCtl);
        this.DEBUG("InitScreenSaverCtl: oScreenSaverCtl.version = " + this.oScreenSaverCtl.version);


    },

    InitDataCtl: function( _options )
    {
        this.DEBUG("InitDataCtl: _options = " + _options);
        if ( _options == undefined || _options == null ){
            _options = {};
        }
        if ( _options.control ){
            this.DEBUG("InitDataCtl: _options.control exists and is not null or undefined");
            this.CreateInstance( _options );
            this.oDataCtl = document.getElementById( _options.control.html_id );
        } else if( this.winner.exe ){
            var control = this.get_toolbar_from_master( this.winner.toolbar + ".dataCtl" );
            this.DEBUG("InitDataCtl: control = " + control);
            if ( control ){
                _options.control = control;
                this.DEBUG("InitDataCtl: control.html_id = " + control.html_id);
                this.CreateInstance( _options );
                this.oDataCtl = document.getElementById( control.html_id );
            }
        }
    },

    DataCtl_SetFileName: function( _name )
    {
        this.DEBUG("DataCtl_SetFileName: _name = " + _name);
        try {
            this.oDataCtl.DataFileName = _name;
        } catch(Err) {
            this.DEBUG("DataCtl_SetFileName: catch(Err) = " + Err.message);
        }
    },

    DataCtl_Set: function( _data )
    {
        this.DEBUG("DataCtl_Set: _data = " + _data);
        try {
            this.oDataCtl.SetData( _data );
            //this.DEBUG("DataCtl_Set: _data = " + _data);
        } catch(Err) {
            this.DEBUG("DataCtl_Set: catch(Err) = " + Err.message);
        }
    },

    DataCtl_Get: function()
    {
        var data = "";
        try {
            data = this.oDataCtl.GetData();
            this.DEBUG("DataCtl_Get: data = " + data);
        } catch(Err) {
            this.DEBUG("DataCtl_Get: catch(Err) = " + Err.message);
        }
        return data;
    },

	DEBUG: function( _msg )
	{
		if ( !this.debug_enabled ){ return; }
		try {
			console.log( _msg );
		}catch(err){
			/*
			try {
				document.getElementById('data_output').innerHTML += _msg + "<br />\n";
			} catch(err2){
				debug_string += _msg + "<br />\n";
			}
			*/
		}
	}
};

// The complete list includes all the Facebook toolbars.
TOOLBAR.toolbar_list = TOOLBAR.toolbar_list.concat(TOOLBAR.facebook_toolbar_list);

TOOLBAR.master_list = {
    affinity_ourbabymaker_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'affinity_ourbabymaker_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-ourbabymaker_27plugin',
            prog_id: 'OurBabyMaker_27.SettingsPlugin',
            activeX_object: 'OurBabyMaker_27.SettingsPlugin',
            classid: '6fb2c9e3-a8cd-42f3-a80d-7fe582164231',
            html_id: 'OurBabyMakerSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '27',
            toolbandClassid: 'e0b0df9f-34a3-4db1-becc-621697348607',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'affinity_ourbabymaker_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-ourbabymaker_27plugin',
            prog_id: 'OurBabyMaker_27.HTMLMenu',
            activeX_object: 'OurBabyMaker_27.HTMLMenu',
            classid: '03a6cf83-55b3-4c34-a29f-8747cdbfe61c',
            html_id: 'OurBabyMakerHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    affinity_ourbabymaker_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'affinity_ourbabymaker_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-ourbabymaker_27plugin',
            prog_id: 'OurBabyMaker_27.SettingsPlugin',
            activeX_object: 'OurBabyMaker_27.SettingsPlugin',
            classid: '6fb2c9e3-a8cd-42f3-a80d-7fe582164231',
            html_id: 'OurBabyMakerSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '27',
            toolbandClassid: 'e0b0df9f-34a3-4db1-becc-621697348607',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'affinity_ourbabymaker_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-ourbabymaker_27plugin',
            prog_id: 'OurBabyMaker_27.HTMLMenu',
            activeX_object: 'OurBabyMaker_27.HTMLMenu',
            classid: '03a6cf83-55b3-4c34-a29f-8747cdbfe61c',
            html_id: 'OurBabyMakerHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    affinity_ourbabymaker_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'affinity_ourbabymaker_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-ourbabymaker_27plugin',
            prog_id: 'OurBabyMaker_27.SettingsPlugin',
            activeX_object: 'OurBabyMaker_27.SettingsPlugin',
            classid: '6fb2c9e3-a8cd-42f3-a80d-7fe582164231',
            html_id: 'OurBabyMakerSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '27',
            toolbandClassid: 'e0b0df9f-34a3-4db1-becc-621697348607',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'affinity_ourbabymaker_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-ourbabymaker_27plugin',
            prog_id: 'OurBabyMaker_27.HTMLMenu',
            activeX_object: 'OurBabyMaker_27.HTMLMenu',
            classid: '03a6cf83-55b3-4c34-a29f-8747cdbfe61c',
            html_id: 'OurBabyMakerHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_cursormania_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'facebook_cursormania_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-yv-cursormaniaplugin',
            prog_id: 'CursorMania.SettingsPlugin',
            activeX_object: 'CursorMania.SettingsPlugin',
            classid: '15d6ba7e-9ba6-46c0-808c-f39c57317644',
            html_id: 'CursorManiaSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'yv',
            toolbandClassid: '-',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'facebook_cursormania_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-yv-cursormaniaplugin',
            prog_id: 'CursorMania.HTMLMenu',
            activeX_object: 'CursorMania.HTMLMenu',
            classid: 'd7a9a1ec-d7f4-40fe-4aee-6b46fd085596',
            html_id: 'CursorManiaHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_cursormania_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'facebook_cursormania_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-yv-cursormaniaplugin',
            prog_id: 'CursorMania.SettingsPlugin',
            activeX_object: 'CursorMania.SettingsPlugin',
            classid: '15d6ba7e-9ba6-46c0-808c-f39c57317644',
            html_id: 'CursorManiaSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'yv',
            toolbandClassid: '-',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'facebook_cursormania_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-yv-cursormaniaplugin',
            prog_id: 'CursorMania.HTMLMenu',
            activeX_object: 'CursorMania.HTMLMenu',
            classid: 'd7a9a1ec-d7f4-40fe-4aee-6b46fd085596',
            html_id: 'CursorManiaHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_cursormania_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'facebook_cursormania_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-bv-cursormaniaieplugin',
            prog_id: 'CursorManiaIE.SettingsPlugin',
            activeX_object: 'CursorManiaIE.SettingsPlugin',
            classid: '35d3f52f-e6d8-4675-925c-35752ae7c520',
            html_id: 'CursorManiaSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'bv',
            toolbandClassid: '-',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'facebook_cursormania_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-bv-cursormaniaieplugin',
            prog_id: 'CursorManiaIE.HTMLMenu',
            activeX_object: 'CursorManiaIE.HTMLMenu',
            classid: 'e864a736-8ea0-c189-3087-6c286ba821d1',
            html_id: 'CursorManiaHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_gamingwonderland_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'facebook_gamingwonderland_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-gt-gamingwonderlandplugin',
            prog_id: 'GamingWonderland.SettingsPlugin',
            activeX_object: 'GamingWonderland.SettingsPlugin',
            classid: '08fbcb5f-de4f-49e0-977e-e4269f4d7206',
            html_id: 'GamingWonderlandSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'gt',
            toolbandClassid: 'a899079d-206f-43a6-be6a-07e0fa648ea0',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'facebook_gamingwonderland_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-gt-gamingwonderlandplugin',
            prog_id: 'GamingWonderland.HTMLMenu',
            activeX_object: 'GamingWonderland.HTMLMenu',
            classid: '26a73c38-b71a-4d3a-80b7-e010420da1e7',
            html_id: 'GamingWonderlandHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_gamingwonderland_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'facebook_gamingwonderland_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-gt-gamingwonderlandplugin',
            prog_id: 'GamingWonderland.SettingsPlugin',
            activeX_object: 'GamingWonderland.SettingsPlugin',
            classid: '08fbcb5f-de4f-49e0-977e-e4269f4d7206',
            html_id: 'GamingWonderlandSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'gt',
            toolbandClassid: 'a899079d-206f-43a6-be6a-07e0fa648ea0',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'facebook_gamingwonderland_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-gt-gamingwonderlandplugin',
            prog_id: 'GamingWonderland.HTMLMenu',
            activeX_object: 'GamingWonderland.HTMLMenu',
            classid: '26a73c38-b71a-4d3a-80b7-e010420da1e7',
            html_id: 'GamingWonderlandHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_gamingwonderland_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'facebook_gamingwonderland_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-1z-gamingwonderlandieplugin',
            prog_id: 'GamingWonderlandIE.SettingsPlugin',
            activeX_object: 'GamingWonderlandIE.SettingsPlugin',
            classid: '8964a731-e2f9-4b55-b652-553de4ca0a4f',
            html_id: 'GamingWonderlandSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '1z',
            toolbandClassid: 'aeab7aec-d98c-4a17-b837-47be1ce0c9ab',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'facebook_gamingwonderland_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-1z-gamingwonderlandieplugin',
            prog_id: 'GamingWonderlandIE.HTMLMenu',
            activeX_object: 'GamingWonderlandIE.HTMLMenu',
            classid: '6eb4b285-1b8f-4467-8cdc-9b205a45deb1',
            html_id: 'GamingWonderlandHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_girlsense_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'facebook_girlsense_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-pr-girlsensebarplugin',
            prog_id: 'GirlSenseBar.SettingsPlugin',
            activeX_object: 'GirlSenseBar.SettingsPlugin',
            classid: '7ef73410-c7d9-4506-b094-c969d3ef2d60',
            html_id: 'GirlSenseSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'pr',
            toolbandClassid: '75642f0a-3b51-4a82-8413-eaf1dc0524e1',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'facebook_girlsense_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-pr-girlsensebarplugin',
            prog_id: 'GirlSenseBar.HTMLMenu',
            activeX_object: 'GirlSenseBar.HTMLMenu',
            classid: '9855612d-2e00-c65f-d0f7-e74087af798a',
            html_id: 'GirlSenseHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_girlsense_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'facebook_girlsense_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-pr-girlsensebarplugin',
            prog_id: 'GirlSenseBar.SettingsPlugin',
            activeX_object: 'GirlSenseBar.SettingsPlugin',
            classid: '7ef73410-c7d9-4506-b094-c969d3ef2d60',
            html_id: 'GirlSenseSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'pr',
            toolbandClassid: '75642f0a-3b51-4a82-8413-eaf1dc0524e1',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'facebook_girlsense_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-pr-girlsensebarplugin',
            prog_id: 'GirlSenseBar.HTMLMenu',
            activeX_object: 'GirlSenseBar.HTMLMenu',
            classid: '9855612d-2e00-c65f-d0f7-e74087af798a',
            html_id: 'GirlSenseHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_girlsense_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'facebook_girlsense_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-zr-girlsensebarieplugin',
            prog_id: 'GirlSenseBarIE.SettingsPlugin',
            activeX_object: 'GirlSenseBarIE.SettingsPlugin',
            classid: 'ebdc002d-485e-4d89-90c8-b0bdd83cff89',
            html_id: 'GirlSenseSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'zr',
            toolbandClassid: '14828961-15ba-4ab0-8368-6b8e5781e68c',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'facebook_girlsense_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-zr-girlsensebarieplugin',
            prog_id: 'GirlSenseBarIE.HTMLMenu',
            activeX_object: 'GirlSenseBarIE.HTMLMenu',
            classid: '4287751e-6f28-00d2-da12-2b8a37dd0ccc',
            html_id: 'GirlSenseHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_iwon_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'facebook_iwon_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-jf-iwonplugin',
            prog_id: 'iWon.SettingsPlugin',
            activeX_object: 'iWon.SettingsPlugin',
            classid: 'c94072e9-9edf-423f-b8ca-a4c95bbd15d7',
            html_id: 'iWonSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'jf',
            toolbandClassid: '8ff0d967-9ff2-47ae-9794-a22fcae4f485',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'facebook_iwon_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-jf-iwonplugin',
            prog_id: 'iWon.HTMLMenu',
            activeX_object: 'iWon.HTMLMenu',
            classid: 'c70efa5e-5f49-4c4f-8459-d15f47d4802e',
            html_id: 'iWonHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_iwon_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'facebook_iwon_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-jf-iwonplugin',
            prog_id: 'iWon.SettingsPlugin',
            activeX_object: 'iWon.SettingsPlugin',
            classid: 'c94072e9-9edf-423f-b8ca-a4c95bbd15d7',
            html_id: 'iWonSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'jf',
            toolbandClassid: '8ff0d967-9ff2-47ae-9794-a22fcae4f485',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'facebook_iwon_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-jf-iwonplugin',
            prog_id: 'iWon.HTMLMenu',
            activeX_object: 'iWon.HTMLMenu',
            classid: 'c70efa5e-5f49-4c4f-8459-d15f47d4802e',
            html_id: 'iWonHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_iwon_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'facebook_iwon_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-id-iwonieplugin',
            prog_id: 'iWonIE.SettingsPlugin',
            activeX_object: 'iWonIE.SettingsPlugin',
            classid: '4adfbab0-94f3-4dea-a509-9beffee52c4c',
            html_id: 'iWonSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'id',
            toolbandClassid: '44843b6e-d44a-4b4f-bca4-559c86633dc6',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'facebook_iwon_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-id-iwonieplugin',
            prog_id: 'iWonIE.HTMLMenu',
            activeX_object: 'iWonIE.HTMLMenu',
            classid: 'ff73db5d-3c1e-4fe6-b324-23e8dadb0ae7',
            html_id: 'iWonHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_iwonglobal_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'facebook_iwonglobal_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-9u-iwongplugin',
            prog_id: 'IWONG.SettingsPlugin',
            activeX_object: 'IWONG.SettingsPlugin',
            classid: 'bf2f395d-8edb-4a01-9b04-cbaae0a0f69e',
            html_id: 'iWonGlobalSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '9u',
            toolbandClassid: '97facf40-32b1-4e02-bd2d-073dac256e8b',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'facebook_iwonglobal_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-9u-iwongplugin',
            prog_id: 'IWONG.HTMLMenu',
            activeX_object: 'IWONG.HTMLMenu',
            classid: '13a5e233-f88a-40f3-ac78-972b14f74e7e',
            html_id: 'iWonGlobalHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_iwonglobal_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'facebook_iwonglobal_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-9u-iwongplugin',
            prog_id: 'IWONG.SettingsPlugin',
            activeX_object: 'IWONG.SettingsPlugin',
            classid: 'bf2f395d-8edb-4a01-9b04-cbaae0a0f69e',
            html_id: 'iWonGlobalSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '9u',
            toolbandClassid: '97facf40-32b1-4e02-bd2d-073dac256e8b',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'facebook_iwonglobal_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-9u-iwongplugin',
            prog_id: 'IWONG.HTMLMenu',
            activeX_object: 'IWONG.HTMLMenu',
            classid: '13a5e233-f88a-40f3-ac78-972b14f74e7e',
            html_id: 'iWonGlobalHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_iwonglobal_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'facebook_iwonglobal_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-vr-iwongieplugin',
            prog_id: 'IWONGIE.SettingsPlugin',
            activeX_object: 'IWONGIE.SettingsPlugin',
            classid: '92b978e8-af43-4d1a-887f-233c034ed189',
            html_id: 'iWonGlobalSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'vr',
            toolbandClassid: '43a3055a-6ff3-4aa5-90e6-18a10297cb53',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'facebook_iwonglobal_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-vr-iwongieplugin',
            prog_id: 'IWONGIE.HTMLMenu',
            activeX_object: 'IWONGIE.HTMLMenu',
            classid: '8879c48b-facd-4909-83e2-f19a74aa04e1',
            html_id: 'iWonGlobalHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_kazulah_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'facebook_kazulah_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-n5-kazulahbarplugin',
            prog_id: 'KazulahBar.SettingsPlugin',
            activeX_object: 'KazulahBar.SettingsPlugin',
            classid: '95c55ad5-6298-47e6-b24c-2bc08855634f',
            html_id: 'KazulahSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'n5',
            toolbandClassid: '7dc4e0e1-b1b4-4e58-a388-220d3163d64e',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'facebook_kazulah_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-n5-kazulahbarplugin',
            prog_id: 'KazulahBar.HTMLMenu',
            activeX_object: 'KazulahBar.HTMLMenu',
            classid: '2580aa10-d563-8f20-593d-bb9923271b02',
            html_id: 'KazulahHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_kazulah_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'facebook_kazulah_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-n5-kazulahbarplugin',
            prog_id: 'KazulahBar.SettingsPlugin',
            activeX_object: 'KazulahBar.SettingsPlugin',
            classid: '95c55ad5-6298-47e6-b24c-2bc08855634f',
            html_id: 'KazulahSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'n5',
            toolbandClassid: '7dc4e0e1-b1b4-4e58-a388-220d3163d64e',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'facebook_kazulah_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-n5-kazulahbarplugin',
            prog_id: 'KazulahBar.HTMLMenu',
            activeX_object: 'KazulahBar.HTMLMenu',
            classid: '2580aa10-d563-8f20-593d-bb9923271b02',
            html_id: 'KazulahHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_kazulah_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'facebook_kazulah_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-k1-kazulahbarieplugin',
            prog_id: 'KazulahBarIE.SettingsPlugin',
            activeX_object: 'KazulahBarIE.SettingsPlugin',
            classid: '64264c50-12a0-46a5-a811-614d025ed431',
            html_id: 'KazulahSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'k1',
            toolbandClassid: 'b58ebbee-d58c-40f6-9404-1bd79f2f949d',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'facebook_kazulah_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-k1-kazulahbarieplugin',
            prog_id: 'KazulahBarIE.HTMLMenu',
            activeX_object: 'KazulahBarIE.HTMLMenu',
            classid: '6ea3cc46-62e9-eee9-cbd5-46e061d43c31',
            html_id: 'KazulahHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_mfc_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'facebook_mfc_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-79-myfuncardsbarplugin',
            prog_id: 'MyFunCardsBar.SettingsPlugin',
            activeX_object: 'MyFunCardsBar.SettingsPlugin',
            classid: 'f9483bd5-166a-46a4-b8d6-bafa9f70876d',
            html_id: 'MFCSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '79',
            toolbandClassid: '19dbb97c-8677-4c04-9d00-5c0122cffafc',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'facebook_mfc_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-79-myfuncardsbarplugin',
            prog_id: 'MyFunCardsBar.HTMLMenu',
            activeX_object: 'MyFunCardsBar.HTMLMenu',
            classid: 'a2063fc4-a649-46e0-ba48-270fb0502550',
            html_id: 'MFCHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_mfc_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'facebook_mfc_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-79-myfuncardsbarplugin',
            prog_id: 'MyFunCardsBar.SettingsPlugin',
            activeX_object: 'MyFunCardsBar.SettingsPlugin',
            classid: 'f9483bd5-166a-46a4-b8d6-bafa9f70876d',
            html_id: 'MFCSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '79',
            toolbandClassid: '19dbb97c-8677-4c04-9d00-5c0122cffafc',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'facebook_mfc_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-79-myfuncardsbarplugin',
            prog_id: 'MyFunCardsBar.HTMLMenu',
            activeX_object: 'MyFunCardsBar.HTMLMenu',
            classid: 'a2063fc4-a649-46e0-ba48-270fb0502550',
            html_id: 'MFCHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_mfc_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'facebook_mfc_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-c8-myfuncardsbarieplugin',
            prog_id: 'MyFunCardsBarIE.SettingsPlugin',
            activeX_object: 'MyFunCardsBarIE.SettingsPlugin',
            classid: 'fc1857f0-7f42-4206-b939-1f65daa8d547',
            html_id: 'MFCSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'c8',
            toolbandClassid: '4b3b7746-935c-48e9-95cd-a855419cdef0',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'facebook_mfc_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-c8-myfuncardsbarieplugin',
            prog_id: 'MyFunCardsBarIE.HTMLMenu',
            activeX_object: 'MyFunCardsBarIE.HTMLMenu',
            classid: '87023b86-7511-4ce2-b5f9-0dc038b82597',
            html_id: 'MFCHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_mywebface_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'facebook_mywebface_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-mywebface_2uplugin',
            prog_id: 'myWebFace_2u.SettingsPlugin',
            activeX_object: 'myWebFace_2u.SettingsPlugin',
            classid: '83cb59f3-5afc-4ee8-895c-0d78c395d66d',
            html_id: 'MyWebFaceSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '2u',
            toolbandClassid: 'c618bed0-c03c-4113-a6dd-d73a1d495ad7',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'facebook_mywebface_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-mywebface_2uplugin',
            prog_id: 'myWebFace_2u.HTMLMenu',
            activeX_object: 'myWebFace_2u.HTMLMenu',
            classid: 'c1ee4f30-d6ba-489d-ae9e-aca469e911c2',
            html_id: 'MyWebFaceHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_mywebface_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'facebook_mywebface_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-mywebface_2uplugin',
            prog_id: 'myWebFace_2u.SettingsPlugin',
            activeX_object: 'myWebFace_2u.SettingsPlugin',
            classid: '83cb59f3-5afc-4ee8-895c-0d78c395d66d',
            html_id: 'MyWebFaceSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '2u',
            toolbandClassid: 'c618bed0-c03c-4113-a6dd-d73a1d495ad7',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'facebook_mywebface_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-mywebface_2uplugin',
            prog_id: 'myWebFace_2u.HTMLMenu',
            activeX_object: 'myWebFace_2u.HTMLMenu',
            classid: 'c1ee4f30-d6ba-489d-ae9e-aca469e911c2',
            html_id: 'MyWebFaceHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_mywebface_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'facebook_mywebface_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-mywebfaceie_2wplugin',
            prog_id: 'myWebFaceIE_2w.SettingsPlugin',
            activeX_object: 'myWebFaceIE_2w.SettingsPlugin',
            classid: '60b24564-1775-46b8-9ef3-a682b8373e21',
            html_id: 'MyWebFaceSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '2w',
            toolbandClassid: 'dfa6f716-6499-4a36-ad6a-c9a98cce1eb7',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'facebook_mywebface_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-mywebfaceie_2wplugin',
            prog_id: 'myWebFaceIE_2w.HTMLMenu',
            activeX_object: 'myWebFaceIE_2w.HTMLMenu',
            classid: '2bafed1e-60b7-4102-93af-8e57015928de',
            html_id: 'MyWebFaceHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_pss_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'facebook_pss_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-jk-popularscreensaversplugin',
            prog_id: 'PopularScreenSavers.SettingsPlugin',
            activeX_object: 'PopularScreenSavers.SettingsPlugin',
            classid: '1dbbffca-ef0c-443d-8881-87acd2eac0ea',
            html_id: 'PSSSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'jk',
            toolbandClassid: '-',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'facebook_pss_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-jk-popularscreensaversplugin',
            prog_id: 'PopularScreenSavers.HTMLMenu',
            activeX_object: 'PopularScreenSavers.HTMLMenu',
            classid: '74cb667c-7446-8866-12b8-36520576d14d',
            html_id: 'PSSHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_pss_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'facebook_pss_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-jk-popularscreensaversplugin',
            prog_id: 'PopularScreenSavers.SettingsPlugin',
            activeX_object: 'PopularScreenSavers.SettingsPlugin',
            classid: '1dbbffca-ef0c-443d-8881-87acd2eac0ea',
            html_id: 'PSSSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'jk',
            toolbandClassid: '-',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'facebook_pss_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-jk-popularscreensaversplugin',
            prog_id: 'PopularScreenSavers.HTMLMenu',
            activeX_object: 'PopularScreenSavers.HTMLMenu',
            classid: '74cb667c-7446-8866-12b8-36520576d14d',
            html_id: 'PSSHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_pss_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'facebook_pss_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-fl-popularscreensaversieplugin',
            prog_id: 'PopularScreenSaversIE.SettingsPlugin',
            activeX_object: 'PopularScreenSaversIE.SettingsPlugin',
            classid: 'fea39c01-d69a-4180-8756-e24a52aaacc9',
            html_id: 'PSSSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'fl',
            toolbandClassid: '-',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'facebook_pss_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-fl-popularscreensaversieplugin',
            prog_id: 'PopularScreenSaversIE.HTMLMenu',
            activeX_object: 'PopularScreenSaversIE.HTMLMenu',
            classid: 'b0f15928-2d9e-3bb6-2365-fe2eb780fc81',
            html_id: 'PSSHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_retrogamer_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'facebook_retrogamer_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-k7-retrogamerplugin',
            prog_id: 'Retrogamer.SettingsPlugin',
            activeX_object: 'Retrogamer.SettingsPlugin',
            classid: '3d397062-cc5d-4248-b9d7-c9bdcfb1463f',
            html_id: 'RetrogamerSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'k7',
            toolbandClassid: '779d0683-0351-4790-b30d-71b1863da278',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'facebook_retrogamer_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-k7-retrogamerplugin',
            prog_id: 'Retrogamer.HTMLMenu',
            activeX_object: 'Retrogamer.HTMLMenu',
            classid: 'a296888d-a25d-44e3-a86f-6f29ce29e670',
            html_id: 'RetrogamerHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_retrogamer_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'facebook_retrogamer_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-k7-retrogamerplugin',
            prog_id: 'Retrogamer.SettingsPlugin',
            activeX_object: 'Retrogamer.SettingsPlugin',
            classid: '3d397062-cc5d-4248-b9d7-c9bdcfb1463f',
            html_id: 'RetrogamerSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'k7',
            toolbandClassid: '779d0683-0351-4790-b30d-71b1863da278',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'facebook_retrogamer_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-k7-retrogamerplugin',
            prog_id: 'Retrogamer.HTMLMenu',
            activeX_object: 'Retrogamer.HTMLMenu',
            classid: 'a296888d-a25d-44e3-a86f-6f29ce29e670',
            html_id: 'RetrogamerHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_retrogamer_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'facebook_retrogamer_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-6h-retrogamerieplugin',
            prog_id: 'RetrogamerIE.SettingsPlugin',
            activeX_object: 'RetrogamerIE.SettingsPlugin',
            classid: 'bd95583c-30c9-4799-a068-8de08913cbb6',
            html_id: 'RetrogamerSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '6h',
            toolbandClassid: '4d96ce9c-9788-44a5-bfbc-45e4e745afb5',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'facebook_retrogamer_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-6h-retrogamerieplugin',
            prog_id: 'RetrogamerIE.HTMLMenu',
            activeX_object: 'RetrogamerIE.HTMLMenu',
            classid: '6325f1f7-d4ad-47f6-bcff-069b2d72a5b0',
            html_id: 'RetrogamerHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_smileycentral_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'facebook_smileycentral_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-smileycentral_1vplugin',
            prog_id: 'SmileyCentral_1v.SettingsPlugin',
            activeX_object: 'SmileyCentral_1v.SettingsPlugin',
            classid: '6a2c7b59-76ca-415b-83fb-8d89932a6b37',
            html_id: 'SmileyCentralSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '1v',
            toolbandClassid: '32014f65-8c22-49ad-899b-475549e3e596',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'facebook_smileycentral_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-smileycentral_1vplugin',
            prog_id: 'SmileyCentral_1v.HTMLMenu',
            activeX_object: 'SmileyCentral_1v.HTMLMenu',
            classid: '62db1239-0df3-4ad7-9313-317682b4ac78',
            html_id: 'SmileyCentralHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_smileycentral_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'facebook_smileycentral_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-smileycentral_1vplugin',
            prog_id: 'SmileyCentral_1v.SettingsPlugin',
            activeX_object: 'SmileyCentral_1v.SettingsPlugin',
            classid: '6a2c7b59-76ca-415b-83fb-8d89932a6b37',
            html_id: 'SmileyCentralSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '1v',
            toolbandClassid: '32014f65-8c22-49ad-899b-475549e3e596',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'facebook_smileycentral_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-smileycentral_1vplugin',
            prog_id: 'SmileyCentral_1v.HTMLMenu',
            activeX_object: 'SmileyCentral_1v.HTMLMenu',
            classid: '62db1239-0df3-4ad7-9313-317682b4ac78',
            html_id: 'SmileyCentralHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_smileycentral_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'facebook_smileycentral_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-smileycentralie_1wplugin',
            prog_id: 'SmileyCentralIE_1w.SettingsPlugin',
            activeX_object: 'SmileyCentralIE_1w.SettingsPlugin',
            classid: 'fe039010-f9a8-4615-9053-ed99e7241364',
            html_id: 'SmileyCentralSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '1w',
            toolbandClassid: 'd3ca5551-fc2e-4d09-8ece-263607acf9fc',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'facebook_smileycentral_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-smileycentralie_1wplugin',
            prog_id: 'SmileyCentralIE_1w.HTMLMenu',
            activeX_object: 'SmileyCentralIE_1w.HTMLMenu',
            classid: '2e97a836-86c6-4ac3-9e75-70125d5e35f0',
            html_id: 'SmileyCentralHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_smileycreator_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'facebook_smileycreator_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-7w-smileycreatorplugin',
            prog_id: 'SmileyCreator.SettingsPlugin',
            activeX_object: 'SmileyCreator.SettingsPlugin',
            classid: '7e1c3003-b8d1-43ab-9028-841a4162c1f5',
            html_id: 'SmileyCreatorSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '7w',
            toolbandClassid: '-',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'facebook_smileycreator_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-7w-smileycreatorplugin',
            prog_id: 'SmileyCreator.HTMLMenu',
            activeX_object: 'SmileyCreator.HTMLMenu',
            classid: '4a73a698-e2f1-74cb-d961-ab8aa98509c6',
            html_id: 'SmileyCreatorHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_smileycreator_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'facebook_smileycreator_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-7w-smileycreatorplugin',
            prog_id: 'SmileyCreator.SettingsPlugin',
            activeX_object: 'SmileyCreator.SettingsPlugin',
            classid: '7e1c3003-b8d1-43ab-9028-841a4162c1f5',
            html_id: 'SmileyCreatorSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '7w',
            toolbandClassid: '-',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'facebook_smileycreator_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-7w-smileycreatorplugin',
            prog_id: 'SmileyCreator.HTMLMenu',
            activeX_object: 'SmileyCreator.HTMLMenu',
            classid: '4a73a698-e2f1-74cb-d961-ab8aa98509c6',
            html_id: 'SmileyCreatorHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_smileycreator_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'facebook_smileycreator_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-z6-smileycreatorieplugin',
            prog_id: 'SmileyCreatorIE.SettingsPlugin',
            activeX_object: 'SmileyCreatorIE.SettingsPlugin',
            classid: 'f6bc63ca-3037-4a1d-a88a-20dd8b8d4d3b',
            html_id: 'SmileyCreatorSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'z6',
            toolbandClassid: '-',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'facebook_smileycreator_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-z6-smileycreatorieplugin',
            prog_id: 'SmileyCreatorIE.HTMLMenu',
            activeX_object: 'SmileyCreatorIE.HTMLMenu',
            classid: '9450e4f8-b8c8-5900-adbf-94855991314f',
            html_id: 'SmileyCreatorHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_webfetti_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'facebook_webfetti_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-7d-webfettiplugin',
            prog_id: 'Webfetti.SettingsPlugin',
            activeX_object: 'Webfetti.SettingsPlugin',
            classid: '438b5c1d-0e9e-4548-a2e1-3ea0b9daa937',
            html_id: 'WebfettiSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '7d',
            toolbandClassid: 'da9315e7-514d-4f86-9c8c-39a5b7107d48',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'facebook_webfetti_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-7d-webfettiplugin',
            prog_id: 'Webfetti.HTMLMenu',
            activeX_object: 'Webfetti.HTMLMenu',
            classid: '6822088b-6b67-4a76-bbe4-e292e335e323',
            html_id: 'WebfettiHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_webfetti_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'facebook_webfetti_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-7d-webfettiplugin',
            prog_id: 'Webfetti.SettingsPlugin',
            activeX_object: 'Webfetti.SettingsPlugin',
            classid: '438b5c1d-0e9e-4548-a2e1-3ea0b9daa937',
            html_id: 'WebfettiSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '7d',
            toolbandClassid: 'da9315e7-514d-4f86-9c8c-39a5b7107d48',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'facebook_webfetti_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-7d-webfettiplugin',
            prog_id: 'Webfetti.HTMLMenu',
            activeX_object: 'Webfetti.HTMLMenu',
            classid: '6822088b-6b67-4a76-bbe4-e292e335e323',
            html_id: 'WebfettiHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_webfetti_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'facebook_webfetti_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-yb-webfettiieplugin',
            prog_id: 'WebfettiIE.SettingsPlugin',
            activeX_object: 'WebfettiIE.SettingsPlugin',
            classid: 'e231159c-31ac-4d3e-b2f1-96765ffe296b',
            html_id: 'WebfettiSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: 'yb',
            toolbandClassid: '94fc3fb2-3e5c-4b8f-aaee-17090ce800bc',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'facebook_webfetti_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-yb-webfettiieplugin',
            prog_id: 'WebfettiIE.HTMLMenu',
            activeX_object: 'WebfettiIE.HTMLMenu',
            classid: 'f63cc830-0f14-424b-a904-5d22ac8ee2b5',
            html_id: 'WebfettiHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_zwinky_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'facebook_zwinky_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-zwinky_42plugin',
            prog_id: 'Zwinky_42.SettingsPlugin',
            activeX_object: 'Zwinky_42.SettingsPlugin',
            classid: '151885bd-6ddd-47df-9266-da3f86e1f5fe',
            html_id: 'ZwinkySettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '42',
            toolbandClassid: '1df01b27-e0d6-40d5-a8ce-0d926d6f39f3',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'facebook_zwinky_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-zwinky_42plugin',
            prog_id: 'Zwinky_42.HTMLMenu',
            activeX_object: 'Zwinky_42.HTMLMenu',
            classid: '5f65a73d-9fdf-44c9-9f25-4cc36213c7bf',
            html_id: 'ZwinkyHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_zwinky_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'facebook_zwinky_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-zwinky_42plugin',
            prog_id: 'Zwinky_42.SettingsPlugin',
            activeX_object: 'Zwinky_42.SettingsPlugin',
            classid: '151885bd-6ddd-47df-9266-da3f86e1f5fe',
            html_id: 'ZwinkySettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '42',
            toolbandClassid: '1df01b27-e0d6-40d5-a8ce-0d926d6f39f3',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'facebook_zwinky_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-zwinky_42plugin',
            prog_id: 'Zwinky_42.HTMLMenu',
            activeX_object: 'Zwinky_42.HTMLMenu',
            classid: '5f65a73d-9fdf-44c9-9f25-4cc36213c7bf',
            html_id: 'ZwinkyHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    facebook_zwinky_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'facebook_zwinky_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-zwinkyie_43plugin',
            prog_id: 'ZwinkyIE_43.SettingsPlugin',
            activeX_object: 'ZwinkyIE_43.SettingsPlugin',
            classid: 'db397d85-a8d1-4e62-a079-655f610f051b',
            html_id: 'ZwinkySettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '43',
            toolbandClassid: '8fd0b26b-7f02-4871-b7c0-f70e35a216f9',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'facebook_zwinky_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-zwinkyie_43plugin',
            prog_id: 'ZwinkyIE_43.HTMLMenu',
            activeX_object: 'ZwinkyIE_43.HTMLMenu',
            classid: '1e478d21-0344-4c3a-8be3-1a2daad5bdc7',
            html_id: 'ZwinkyHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_cursormania_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'mws_cursormania_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-cursormania_40plugin',
            prog_id: 'CursorMania_40.SettingsPlugin',
            activeX_object: 'CursorMania_40.SettingsPlugin',
            classid: 'df4c2f09-037e-4d56-b84e-f0d7c507dd4a',
            html_id: 'CursorManiaSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '40',
            toolbandClassid: '84cc3549-af31-490f-ad05-92ae8bd87aeb',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'mws_cursormania_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-cursormania_40plugin',
            prog_id: 'CursorMania_40.HTMLMenu',
            activeX_object: 'CursorMania_40.HTMLMenu',
            classid: '7d575ea3-5b9f-44a4-abf1-050821f8029d',
            html_id: 'CursorManiaHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_cursormania_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'mws_cursormania_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-cursormania_40plugin',
            prog_id: 'CursorMania_40.SettingsPlugin',
            activeX_object: 'CursorMania_40.SettingsPlugin',
            classid: 'df4c2f09-037e-4d56-b84e-f0d7c507dd4a',
            html_id: 'CursorManiaSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '40',
            toolbandClassid: '84cc3549-af31-490f-ad05-92ae8bd87aeb',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'mws_cursormania_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-cursormania_40plugin',
            prog_id: 'CursorMania_40.HTMLMenu',
            activeX_object: 'CursorMania_40.HTMLMenu',
            classid: '7d575ea3-5b9f-44a4-abf1-050821f8029d',
            html_id: 'CursorManiaHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_cursormania_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'mws_cursormania_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-cursormaniaie_41plugin',
            prog_id: 'CursorManiaIE_41.SettingsPlugin',
            activeX_object: 'CursorManiaIE_41.SettingsPlugin',
            classid: 'e03e6fd2-132d-46be-9740-b94d461351a2',
            html_id: 'CursorManiaSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '41',
            toolbandClassid: 'b78e80eb-38b6-4349-b3f5-a879625bd95b',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'mws_cursormania_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-cursormaniaie_41plugin',
            prog_id: 'CursorManiaIE_41.HTMLMenu',
            activeX_object: 'CursorManiaIE_41.HTMLMenu',
            classid: '46bc2b63-bb33-49a8-a0cd-eedc6a2bec13',
            html_id: 'CursorManiaHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_iwon_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'mws_iwon_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-iwon_3pplugin',
            prog_id: 'iWon_3p.SettingsPlugin',
            activeX_object: 'iWon_3p.SettingsPlugin',
            classid: 'afea8331-f904-4f59-8559-72eb095f0d68',
            html_id: 'iWonSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '3p',
            toolbandClassid: '228d4a48-0340-4cf3-b116-53e6c5ed7d96',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'mws_iwon_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-iwon_3pplugin',
            prog_id: 'iWon_3p.HTMLMenu',
            activeX_object: 'iWon_3p.HTMLMenu',
            classid: '52355466-731e-490c-a62e-a6cb9889db52',
            html_id: 'iWonHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_iwon_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'mws_iwon_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-iwon_3pplugin',
            prog_id: 'iWon_3p.SettingsPlugin',
            activeX_object: 'iWon_3p.SettingsPlugin',
            classid: 'afea8331-f904-4f59-8559-72eb095f0d68',
            html_id: 'iWonSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '3p',
            toolbandClassid: '228d4a48-0340-4cf3-b116-53e6c5ed7d96',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'mws_iwon_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-iwon_3pplugin',
            prog_id: 'iWon_3p.HTMLMenu',
            activeX_object: 'iWon_3p.HTMLMenu',
            classid: '52355466-731e-490c-a62e-a6cb9889db52',
            html_id: 'iWonHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_iwon_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'mws_iwon_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-iwonie_3qplugin',
            prog_id: 'iWon_3q.SettingsPlugin',
            activeX_object: 'iWon_3q.SettingsPlugin',
            classid: 'e869c769-0611-4be5-ba23-1a23915e138e',
            html_id: 'iWonSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '3q',
            toolbandClassid: 'ec10cb1c-b9f6-460c-ae70-943eed99b5d0',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'mws_iwon_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-iwonie_3qplugin',
            prog_id: 'iWon_3q.HTMLMenu',
            activeX_object: 'iWon_3q.HTMLMenu',
            classid: 'e38b85d6-51e3-4b60-acce-ccbbf23fdf5c',
            html_id: 'iWonHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_iwonglobal_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'mws_iwonglobal_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-iwong_3rplugin',
            prog_id: 'iWonG_3r.SettingsPlugin',
            activeX_object: 'iWonG_3r.SettingsPlugin',
            classid: 'b26e7254-59fd-4b7a-9bb7-98baa91745d8',
            html_id: 'iWonGlobalSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '3r',
            toolbandClassid: '82f32b41-9289-44d1-90a1-4837c46a79a0',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'mws_iwonglobal_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-iwong_3rplugin',
            prog_id: 'iWonG_3r.HTMLMenu',
            activeX_object: 'iWonG_3r.HTMLMenu',
            classid: '0e80cafb-86da-4cd2-b416-3bfaa748c1fc',
            html_id: 'iWonGlobalHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_iwonglobal_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'mws_iwonglobal_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-iwong_3rplugin',
            prog_id: 'iWonG_3r.SettingsPlugin',
            activeX_object: 'iWonG_3r.SettingsPlugin',
            classid: 'b26e7254-59fd-4b7a-9bb7-98baa91745d8',
            html_id: 'iWonGlobalSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '3r',
            toolbandClassid: '82f32b41-9289-44d1-90a1-4837c46a79a0',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'mws_iwonglobal_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-iwong_3rplugin',
            prog_id: 'iWonG_3r.HTMLMenu',
            activeX_object: 'iWonG_3r.HTMLMenu',
            classid: '0e80cafb-86da-4cd2-b416-3bfaa748c1fc',
            html_id: 'iWonGlobalHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_iwonglobal_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'mws_iwonglobal_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-iwongie_3splugin',
            prog_id: 'iWonGIE_3s.SettingsPlugin',
            activeX_object: 'iWonGIE_3s.SettingsPlugin',
            classid: 'ccda4b1c-839f-4a54-bc1c-5563426baed9',
            html_id: 'iWonGlobalSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '3s',
            toolbandClassid: 'c1b10265-dc7a-4ec4-a1c4-32edcf4ac3c2',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'mws_iwonglobal_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-iwongie_3splugin',
            prog_id: 'iWonGIE_3s.HTMLMenu',
            activeX_object: 'iWonGIE_3s.HTMLMenu',
            classid: '8ad86215-7b77-452c-b054-99573d9661d4',
            html_id: 'iWonGlobalHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_mfc_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'mws_mfc_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-myfuncards_3vplugin',
            prog_id: 'MyFunCards_3v.SettingsPlugin',
            activeX_object: 'MyFunCards_3v.SettingsPlugin',
            classid: 'c0e76156-53c4-4a53-960e-4c01a2eb51c5',
            html_id: 'MFCSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '3v',
            toolbandClassid: '775fb81e-c515-4bcc-8842-d241fd015aaa',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'mws_mfc_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-myfuncards_3vplugin',
            prog_id: 'MyFunCards_3v.HTMLMenu',
            activeX_object: 'MyFunCards_3v.HTMLMenu',
            classid: '74aee6d9-ec2b-4738-a587-e54f5878a432',
            html_id: 'MFCHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_mfc_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'mws_mfc_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-myfuncards_3vplugin',
            prog_id: 'MyFunCards_3v.SettingsPlugin',
            activeX_object: 'MyFunCards_3v.SettingsPlugin',
            classid: 'c0e76156-53c4-4a53-960e-4c01a2eb51c5',
            html_id: 'MFCSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '3v',
            toolbandClassid: '775fb81e-c515-4bcc-8842-d241fd015aaa',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'mws_mfc_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-myfuncards_3vplugin',
            prog_id: 'MyFunCards_3v.HTMLMenu',
            activeX_object: 'MyFunCards_3v.HTMLMenu',
            classid: '74aee6d9-ec2b-4738-a587-e54f5878a432',
            html_id: 'MFCHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_mfc_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'mws_mfc_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-myfuncardsie_3wplugin',
            prog_id: 'MyFunCardsIE_3w.SettingsPlugin',
            activeX_object: 'MyFunCardsIE_3w.SettingsPlugin',
            classid: '9db3a388-c765-42bd-989f-4bffc7887d3e',
            html_id: 'MFCSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '3w',
            toolbandClassid: 'b63fb0a0-7ccc-4a83-a066-4a3363dad80c',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'mws_mfc_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-myfuncardsie_3wplugin',
            prog_id: 'MyFunCardsIE_3w.HTMLMenu',
            activeX_object: 'MyFunCardsIE_3w.HTMLMenu',
            classid: '8258001e-ba64-4cfa-99f1-9fde0897cdc1',
            html_id: 'MFCHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_mywebface_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'mws_mywebface_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-mywebface_3xplugin',
            prog_id: 'myWebFace_3x.SettingsPlugin',
            activeX_object: 'myWebFace_3x.SettingsPlugin',
            classid: 'b2f72f74-ae62-4789-bf62-518190157a4b',
            html_id: 'MyWebFaceSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '3x',
            toolbandClassid: 'c64c86b3-1993-4513-87f1-2aaac07ec83b',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'mws_mywebface_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-mywebface_3xplugin',
            prog_id: 'myWebFace_3x.HTMLMenu',
            activeX_object: 'myWebFace_3x.HTMLMenu',
            classid: '61678311-d9ea-41e5-b989-9de762d6bf84',
            html_id: 'MyWebFaceHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_mywebface_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'mws_mywebface_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-mywebface_3xplugin',
            prog_id: 'myWebFace_3x.SettingsPlugin',
            activeX_object: 'myWebFace_3x.SettingsPlugin',
            classid: 'b2f72f74-ae62-4789-bf62-518190157a4b',
            html_id: 'MyWebFaceSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '3x',
            toolbandClassid: 'c64c86b3-1993-4513-87f1-2aaac07ec83b',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'mws_mywebface_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-mywebface_3xplugin',
            prog_id: 'myWebFace_3x.HTMLMenu',
            activeX_object: 'myWebFace_3x.HTMLMenu',
            classid: '61678311-d9ea-41e5-b989-9de762d6bf84',
            html_id: 'MyWebFaceHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_mywebface_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'mws_mywebface_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-mywebfaceie_3yplugin',
            prog_id: 'myWebFaceIE_3y.SettingsPlugin',
            activeX_object: 'myWebFaceIE_3y.SettingsPlugin',
            classid: 'dd59e005-d78e-4037-8ec6-b7826486dd50',
            html_id: 'MyWebFaceSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '3y',
            toolbandClassid: '19059727-5613-495c-b51b-96a579a8e9e8',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'mws_mywebface_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-mywebfaceie_3yplugin',
            prog_id: 'myWebFaceIE_3y.HTMLMenu',
            activeX_object: 'myWebFaceIE_3y.HTMLMenu',
            classid: '28d270c6-6ffd-4e7b-874b-a5aac6409bc5',
            html_id: 'MyWebFaceHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_retrogamer_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'mws_retrogamer_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-retrogamer_2zplugin',
            prog_id: 'Retrogamer_2z.SettingsPlugin',
            activeX_object: 'Retrogamer_2z.SettingsPlugin',
            classid: '725eb385-a788-4f5c-b313-8c215e17e27e',
            html_id: 'RetrogamerSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '2z',
            toolbandClassid: '54ba686e-738f-42fe-badd-d8cb7cfbc07e',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'mws_retrogamer_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-retrogamer_2zplugin',
            prog_id: 'Retrogamer_2z.HTMLMenu',
            activeX_object: 'Retrogamer_2z.HTMLMenu',
            classid: '0592ce71-a3c3-4f0b-afa6-b67dffc65f70',
            html_id: 'RetrogamerHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_retrogamer_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'mws_retrogamer_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-retrogamer_2zplugin',
            prog_id: 'Retrogamer_2z.SettingsPlugin',
            activeX_object: 'Retrogamer_2z.SettingsPlugin',
            classid: '725eb385-a788-4f5c-b313-8c215e17e27e',
            html_id: 'RetrogamerSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '2z',
            toolbandClassid: '54ba686e-738f-42fe-badd-d8cb7cfbc07e',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'mws_retrogamer_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-retrogamer_2zplugin',
            prog_id: 'Retrogamer_2z.HTMLMenu',
            activeX_object: 'Retrogamer_2z.HTMLMenu',
            classid: '0592ce71-a3c3-4f0b-afa6-b67dffc65f70',
            html_id: 'RetrogamerHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_retrogamer_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'mws_retrogamer_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-retrogamerie_30plugin',
            prog_id: 'RetrogamerIE_30.SettingsPlugin',
            activeX_object: 'RetrogamerIE_30.SettingsPlugin',
            classid: 'c28a86d2-c24b-4478-9e20-9efe02535738',
            html_id: 'RetrogamerSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '30',
            toolbandClassid: '67c6b665-3add-4b60-8486-03335d231372',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'mws_retrogamer_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-retrogamerie_30plugin',
            prog_id: 'RetrogamerIE_30.HTMLMenu',
            activeX_object: 'RetrogamerIE_30.HTMLMenu',
            classid: '118782e4-8041-448d-9d00-7349c8b06df5',
            html_id: 'RetrogamerHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_webfetti_dual: {
        settingsCtl: {
            browser: 'dual',
            toolbar: 'mws_webfetti_dual',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-webfetti_3bplugin',
            prog_id: 'Webfetti_3b.SettingsPlugin',
            activeX_object: 'Webfetti_3b.SettingsPlugin',
            classid: '125757e1-bca0-48fb-92fd-0d5b00872f54',
            html_id: 'WebfettiSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '3b',
            toolbandClassid: '66857ad6-fec7-49c4-ad79-6bf96cc0a365',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'dual',
            toolbar: 'mws_webfetti_dual',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-webfetti_3bplugin',
            prog_id: 'Webfetti_3b.HTMLMenu',
            activeX_object: 'Webfetti_3b.HTMLMenu',
            classid: '32af29c6-c6b2-4a59-8602-7325f70d0b3e',
            html_id: 'WebfettiHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_webfetti_firefox: {
        settingsCtl: {
            browser: 'firefox',
            toolbar: 'mws_webfetti_firefox',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-webfetti_3bplugin',
            prog_id: 'Webfetti_3b.SettingsPlugin',
            activeX_object: 'Webfetti_3b.SettingsPlugin',
            classid: '125757e1-bca0-48fb-92fd-0d5b00872f54',
            html_id: 'WebfettiSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '3b',
            toolbandClassid: '66857ad6-fec7-49c4-ad79-6bf96cc0a365',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'firefox',
            toolbar: 'mws_webfetti_firefox',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-webfetti_3bplugin',
            prog_id: 'Webfetti_3b.HTMLMenu',
            activeX_object: 'Webfetti_3b.HTMLMenu',
            classid: '32af29c6-c6b2-4a59-8602-7325f70d0b3e',
            html_id: 'WebfettiHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },
    mws_webfetti_msie: {
        settingsCtl: {
            browser: 'msie',
            toolbar: 'mws_webfetti_msie',
            name: 'settingsCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-webfettiie_3cplugin',
            prog_id: 'WebfettiIE_3c.SettingsPlugin',
            activeX_object: 'WebfettiIE_3c.SettingsPlugin',
            classid: '77ff2bd5-3774-497a-93b8-f9380949c0df',
            html_id: 'WebfettiSettingsCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            fileNamePrefix: '3c',
            toolbandClassid: '49ca9be5-83c1-4441-a50c-e89ac95f96c9',
            params: {}
        },
        htmlMenuCtl: {
            browser: 'msie',
            toolbar: 'mws_webfetti_msie',
            name: 'htmlMenuCtl',
            exe: true,
            xpi: false,
            mimetype: 'application/x-webfettiie_3cplugin',
            prog_id: 'WebfettiIE_3c.HTMLMenu',
            activeX_object: 'WebfettiIE_3c.HTMLMenu',
            classid: '8adeeeab-4e00-4e35-9d6f-b6d28ceaeaf6',
            html_id: 'WebfettiHtmlMenuCtl',
            min_version: '',
            max_version: '2.3.68.10',
            required_version: '2.3.68.10',
            params: {}
        }
    },

	mws: {
        ctl: 'settingsCtl',

		settingsCtl: {
			name: "settingsCtl",
			toolbar: "mws",
			exe: true,
			xpi: false,
			mimetype: "application/x-mws-mywebsearchplugin",
			prog_id: "MyWebSearchToolBar.SettingsPlugin",
			activeX_object: "MyWebSearchToolBar.SettingsPlugin",
			classid:"07B18EAB-A523-4961-B6BB-170DE4475CCA",
			html_id: "ToolbarCtlMWS",
			min_version: "",
			max_version: "2.3.70.1",
			required_version: "2.0.4.16",
            toolbandClassid: '07B18EA9-A523-4961-B6BB-170DE4475CCA',
			params: {}
		},
		htmlMenuCtl: {
			name: "htmlMenuCtl",
			toolbar: "mws",
			exe: true,
			xpi: false,
			mimetype: "application/x-mws-mywebsearchplugin",
			prog_id: "FunWebProducts.HTMLMenu.2",
			activeX_object: "MyWebSearchToolBar.SettingsPlugin",
			classid:"3DC201FB-E9C9-499C-A11F-23C360D7C3F8",
			html_id: "HTMLMenuCtl",
			min_version: "",
			max_version: "2.3.70.1",
			required_version: "2.0.4.16",
			params: {}
		},
		screenSaverCtl: {
			name: "screenSaverCtl",
			toolbar: "mws",
			exe: true,
			xpi: false,
			mimetype: "application/x-mws-mywebsearchplugin",
			prog_id: "ScreenSaverControl.ScreenSaverInstaller",
			activeX_object: "ScreenSaverControl.ScreenSaverInstaller",
			classid:"9FF05104-B030-46FC-94B8-81276E4E27DF",
			html_id: "ScreenSaverInstaller",
			min_version: "",
			max_version: "2.3.70.1",
			required_version: "2.0.4.16",
			params: {
				PM: "efkfpetrqjgksgnteltlofgnoiiiiqkngkmimlfhsnfeogokhehfhghhhihjhkhlhmhnifigihiiijik",
				L: "psnllmmrkrgosmekokerjsohgneknhpehjfhpnlqsqgnokhohehfhghhhihjhkhlhmhnifigihiiijik"
			}
		},
        chatCtl: {
            name: "chatCtl",
            toolbar: "mws",
            exe: true,
            xpi: false,
            mimetype: "",
            prog_id: "",
            activeX_object: "",
            classid:"E79DFBCA-5697-4fbd-94E5-5B2A9C7C1612",
            html_id: "chatcontrol",
            min_version: "",
            max_version: "2.3.50.45",
            required_version: "2.0.4.16",
            params: {
                Category: "Chat",
                Capabilities: "0x14",
                SignOutDelay: "10"
            }
        },
		dataCtl: {
			name: "dataCtl",
			toolbar: "mws",
			exe: true,
			xpi: false,
			mimetype: "application/x-mws-mywebsearchplugin",
			prog_id: "FunWebProducts.DataControl",
			activeX_object: "FunWebProducts.DataControl",
			classid:"25560540-9571-4D7B-9389-0F166788785A",
			html_id: "DataControl",
			min_version: "",
			max_version: "2.3.70.1",
			required_version: "2.0.4.16",
			params: {}
		},
		xpi: {
			name: "xpi",
			toolbar: "mws",
			exe: false,
			xpi: true,
			min_version: "",
			max_version: "1.3",
			required_version: "1.0",
			element: "tsox_ver_el"
		}
	},
	vicinio: {
        ctl: 'settingsCtl',

		settingsCtl: {
			name: "settingsCtl",
			toolbar: "vicinio",
			exe: true,
			xpi: false,
			mimetype: "application/x-selfserviceplugin",
			prog_id: "SelfServiceToolBar.SettingsPlugin",
			activeX_object: "SelfServiceToolBar.SettingsPlugin",
			classid:"4971362f-8e35-11dd-88bb-000d562c920a",
			html_id: "SettingsCtl",
			min_version: "",
			max_version: "2.3.50.19",
			required_version: "2.3.50.19",
			params: {}
		},
		htmlMenuCtl: {
			name: "htmlMenuCtl",
			toolbar: "vicinio",
			exe: true,
			xpi: false,
			mimetype: "application/x-selfserviceplugin",
			prog_id: "SelfService.HTMLMenu",
			activeX_object: "SelfService.HTMLMenu",
			classid:"4971365c-8e35-11dd-88bb-000d562c920a",
			html_id: "HTMLMenuCtl",
			min_version: "",
			max_version: "2.3.50.19",
			required_version: "2.3.50.19",
			params: {}
		},
		screenSaverCtl: {
			name: "screenSaverCtl",
			toolbar: "vicinio",
			exe: true,
			xpi: false,
			mimetype: "application/x-selfserviceplugin",
			prog_id: "SelfService.ScreenSaverInstaller",
			activeX_object: "SelfService.ScreenSaverInstaller",
			classid:"49713669-8e35-11dd-88bb-000d562c920a",
			html_id: "screenSaverCtl",
			min_version: "",
			max_version: "2.3.50.19",
			required_version: "2.3.50.19",
			params: {
				PM: "efkfpetrqjgksgnteltlofgnoiiiiqkngkmimlfhsnfeogokhehfhghhhihjhkhlhmhnifigihiiijik",
				L: "psnllmmrkrgosmekokerjsohgneknhpehjfhpnlqsqgnokhohehfhghhhihjhkhlhmhnifigihiiijik"
			}
		},
        chatCtl: {
            name: "chatCtl",
            toolbar: "vicinio",
            exe: true,
            xpi: false,
            mimetype: "",
            prog_id: "",
            activeX_object: "",
            classid:"E79DFBCA-5697-4fbd-94E5-5B2A9C7C1612",
            html_id: "chatcontrol",
            min_version: "",
            max_version: "2.3.50.45",
            required_version: "2.0.4.16",
            params: {
                Category: "Chat",
                Capabilities: "0x14",
                SignOutDelay: "10"
            }
        },
		dataCtl: {
			name: "dataCtl",
			toolbar: "vicinio",
			exe: true,
			xpi: false,
			mimetype: "application/x-selfserviceplugin",
			prog_id: "SelfService.DataControl",
			activeX_object: "SelfService.DataControl",
			classid:"49713653-8e35-11dd-88bb-000d562c920a",
			html_id: "DataControl",
			min_version: "",
			max_version: "2.3.50.19",
			required_version: "2.3.50.19",
			params: {}
		}
	},
	mindspark: {
        ctl: 'settingsCtl',

		settingsCtl: {
			name: "settingsCtl",
			toolbar: "mindspark",
			exe: true,
			xpi: false,
			mimetype: "application/x-m5-mindsparkplugin",
			prog_id: "MindSpark.SettingsPlugin",
			activeX_object: "MindSpark.SettingsPlugin",
			classid:"21DBA35B-05C1-4339-9694-13D8D9133339",
			html_id: "SettingsCtl",
			min_version: "",
			max_version: "2.3.50.19",
			required_version: "2.3.50.19",
			params: {}
		},
		htmlMenuCtl: {
			name: "htmlMenuCtl",
			toolbar: "mindspark",
			exe: true,
			xpi: false,
			mimetype: "application/x-m5-mindsparkplugin",
			prog_id: "MindSpark.HTMLMenu",
			activeX_object: "MindSpark.HTMLMenu",
			classid:"288FEAAB-B810-40ad-9AAC-310230590855",
			html_id: "HTMLMenuCtl",
			min_version: "",
			max_version: "2.3.50.19",
			required_version: "2.3.50.19",
			params: {}
		},
		screenSaverCtl: {
			name: "screenSaverCtl",
			toolbar: "mindspark",
			exe: true,
			xpi: false,
			mimetype: "application/x-m5-mindsparkplugin",
			prog_id: "MindSpark.ScreenSaverSettings",
			activeX_object: "MindSpark.ScreenSaverSettings",
			classid:"C51F4A54-EBD1-4e21-AC05-1CCF7E8849E8",
			html_id: "screenSaverCtl",
			min_version: "",
			max_version: "2.3.50.19",
			required_version: "2.3.50.19",
			params: {
				PM: "efkfpetrqjgksgnteltlofgnoiiiiqkngkmimlfhsnfeogokhehfhghhhihjhkhlhmhnifigihiiijik",
				L: "psnllmmrkrgosmekokerjsohgneknhpehjfhpnlqsqgnokhohehfhghhhihjhkhlhmhnifigihiiijik"
			}
		},
		dataCtl: {
			name: "dataCtl",
			toolbar: "mindspark",
			exe: true,
			xpi: false,
			mimetype: "application/x-m5-mindsparkplugin",
			prog_id: "MindSpark.DataControl",
			activeX_object: "MindSpark.DataControl",
			classid:"0AB15BD0-37D5-4567-9238-9781EF77E890",
			html_id: "DataControl",
			min_version: "",
			max_version: "2.3.50.19",
			required_version: "2.3.50.19",
			params: {}
		}
	}
};

function GetXpiConfig( _tb_object )
{
	var tsox_el = document.getElementById('tsox_ver_el');
	// this.DEBUG("GetXpiConfig: tsox_el = " + tsox_el);
	if ( tsox_el ) {
		try {
			TBCkElem = document.createElement("TSOX_TBCk");
			document.getElementsByTagName('head')[0].appendChild(TBCkElem);
			TBCkEvt = document.createEvent('Events');
			TBCkEvt.initEvent('TSOX_TBChkHandlerEvent', true, false);
			TBCkElem.dispatchEvent(TBCkEvt);
			(
				function(){
					if ( document.getElementsByTagName("TSOX_TBCk")[0].getAttribute("tbid")==null ){
						setTimeout( arguments.callee,50 );
					} else {
						_tb_object.set_xpi_data( { event: TBCkEvt, element: TBCkElem } );
					}
				}
			)();
		} catch(ERR){
			// this.DEBUG("GetXpiConfig: ERR = " + ERR);
		}
	} else if( this.cookie.config.data != null ) {

	}
}

function hoverButton(btn,pos){
	btn.style.backgroundPosition = pos;
}

function enableToolbar( disableType, successURL ) {
	var url=document.location.href;
	if(typeof(successURL)!="undefined"&&successURL!="undefined"&&successURL!="") url=successURL;
	if(typeof(urchinTracker)=="function")urchinTracker('/toolbar/detect/'+disableType+'/clickenabled');
	if(document.location.href.indexOf("local") != -1 || document.location.href.indexOf("dev") != -1){
		window.location.replace("http://edits.dev.mywebsearch.com/toolbaredits/barenable.jhtml?successURL="+url);
	} else {
		window.location.replace("http://edits.mywebsearch.com/toolbaredits/barenable.jhtml?successURL="+url);
	}
}

function showModal( productCode, partnerId, disableType, successURL ) {
	var wbHtml = new Array();
	wbHtml.push("<div style='color:#009900;font-family:Trebuchet MS;font-weight:bold;font-size:36px;'>Welcome back!</div>");
	wbHtml.push("<div style='color:#333333;font-family:Trebuchet MS;font-weight:bold;font-size:15px;'>To restore access to this free feature, click the button below:</div>");
	wbHtml.push("<div style='margin-top:20px;background-image:url(http://ak.imgfarm.com/images/mindspark/toolbar/yellow_bar.png);width:522px;height:91px;'><div style='float:left;display:inline;margin: 17px 0px 0px 118px; background-image:url(http://ak.imgfarm.com/images/mindspark/toolbar/btn_enable.png);background-position:top;width:285px;height:57px;cursor:pointer;cursor:hand;' onclick='enableToolbar(\""+disableType+"\",\""+successURL+"\")' onmouseover='hoverButton(this,\"bottom\")' onmouseout='hoverButton(this,\"top\")'></div></div>");
	wbHtml.push("<div style='margin-top:25px;color:#333333;font-family:Trebuchet MS;font-weight:bold;font-size:14px;'>How did I lose access?</div>");
	wbHtml.push("<div style='width:500px;color:#333333;font-family:Trebuchet MS;font-size:14px;'>It appears your MyWebSearch toolbar has been disabled. By re-enabling the toolbar, your access to this feature will be instantly restored.</div>");

	var welcomeHtml = new Array();
	welcomeHtml.push("<div style='color:#009900;font-family:Trebuchet MS;font-weight:bold;font-size:36px;'>Welcome!</div>");
	welcomeHtml.push("<div style='color:#333333;font-family:Trebuchet MS;font-weight:bold;font-size:15px;'>To get unlimited access to this free feature, just click the button below:</div>");
	welcomeHtml.push("<div style='margin-top:20px;background-image:url(http://ak.imgfarm.com/images/mindspark/toolbar/yellow_bar.png);width:522px;height:91px;'><div style='float:left;display:inline;margin: 17px 0px 0px 118px; background-image:url(http://ak.imgfarm.com/images/mindspark/toolbar/btn_click_here.png);background-position:top;width:285px;height:57px;cursor:pointer;cursor:hand;' onclick='enableToolbar(\""+disableType+"\",\""+successURL+"\")' onmouseover='hoverButton(this,\"bottom\")' onmouseout='hoverButton(this,\"top\")'></div></div>");
	welcomeHtml.push("<div style='margin-top:25px;color:#333333;font-family:Trebuchet MS;font-weight:bold;font-size:14px;'>How do I access this feature in the future?</div>");
	welcomeHtml.push("<div style='width:500px;color:#333333;font-family:Trebuchet MS;font-size:14px;'>It's easy! By keeping your MyWebSearch toolbar enabled in your browser, you can access this feature directly from your toolbar - from anywhere on the web!</div>");

	var modalHtml = welcomeHtml.join("");
	if(partnerId.indexOf(productCode) != -1 ) {
		modalHtml = wbHtml.join("");
	}

	var oOverlay=document.createElement('div');
	var iDisplayHeight=0;
	iDisplayHeight=Math.max(iDisplayHeight,document.body.offsetHeight);
	iDisplayHeight=Math.max(iDisplayHeight,document.body.scrollHeight);
	iDisplayHeight=Math.max(iDisplayHeight,document.body.parentNode.offsetHeight);
	iDisplayHeight=Math.max(iDisplayHeight,document.body.parentNode.scrollHeight);
	oOverlay.style.height=(iDisplayHeight)+'px';
	var iDisplayWidth=0;
	iDisplayWidth=Math.max(iDisplayWidth,document.body.scrollWidth);
	iDisplayWidth=Math.max(iDisplayWidth,document.body.offsetWidth);
	oOverlay.className="TOOLBAR_enable_modal_bg";
	oOverlay.style.width=(iDisplayWidth)+'px';
	oOverlay.style.backgroundColor = "black";
	oOverlay.style.display = "block";
	oOverlay.style.position = "absolute";
	oOverlay.style.top = "0";
	oOverlay.style.left = "0";
    oOverlay.style.opacity = (75 / 100);
    oOverlay.style.filter = "alpha(opacity=75)";
	document.body.appendChild(oOverlay);

	var oDiv=document.createElement('div');
	oDiv.innerHTML=modalHtml;
	oDiv.className="TOOLBAR_enable_modal";
	oDiv.style.backgroundImage = "url(http://ak.imgfarm.com/images/mindspark/toolbar/back.png)";
	oDiv.style.backgroundRepeat = "no-repeat";
	oDiv.style.width = "614px";
	oDiv.style.height = "364px";
	oDiv.style.position = "absolute";
	var viewPortWidth = document.body.clientWidth;
	var viewPortHeight = document.body.clientHeight;
	if (self.innerHeight){ // all except Explorer
		viewPortWidth = self.innerWidth;
		viewPortHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight){// Explorer 6 Strict Mode
		viewPortWidth = document.documentElement.clientWidth;
		viewPortHeight = document.documentElement.clientHeight;
	}
	var scrollT = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
	var top = Math.floor(viewPortHeight/2) - 157;//placing in middle minus modal offsetX
	var left = Math.floor(viewPortWidth/2) - 307;//placing in middle minus modal offsetY
	top += scrollT;
	oDiv.style.top = top + "px";
	oDiv.style.left = left + "px";
	oDiv.style.padding = "50px";
	document.body.appendChild(oDiv);

	document.body.style.overflowX = "hidden";
	document.documentElement.style.overflowX = "hidden";
}

// Copied from PartnerId.js
// See com.mindspark.util.partnerid.PartnerId.java

INVALID_SUB_ID = 'XXXXXXXXXX';

function PartnerIdFactory() {
    // Parses a serialized partner ID in either old or new format.
    // @param s  serialized partner ID
    // @param subId  sub-ID (not part of the serialized string) -- can be null or omitted
    // @param defaultCobrand  cobrand to use if serialized cobrand is invalid
    // @return  partner ID object (will never be null).  If the serialized ID is
    // empty or invalid, and defaultCobrand is specified, this will return a
    // valid partner ID consisting of just the default cobrand, using the new
    // format if the serialized ID begins with a '^' or the default cobrand is
    // longer than 2 characters, or the old format otherwise.  If the serialized
    // ID is empty or invalid, and defaultCobrand is null or omitted, this will
    // return an empty (invalid) partner ID object.
    this.parse = function (s, subId, defaultCobrand) {
        if (typeof(s) == 'undefined')
            s = null;
        if (typeof(subId) == 'undefined')
            subId = null;
        if (typeof(defaultCobrand) == 'undefined')
            defaultCobrand = null;

        s = trim(s);
        if (isEmpty(s)) {
            if (defaultCobrand == null)
                return new PartnerId(null, null, null, null, null, null, "", false);

            return getDefaultPartnerId(defaultCobrand, subId, s, defaultCobrand.length == 2);
        }

        if (s.charAt(0) == DELIMITER)
            return parseNew(s, subId, defaultCobrand);

        return parseOld(s, null, subId, defaultCobrand);
    };

    // Creates a new partner ID from its components.  It will be serialized using the new format.
    // All the parameters except cobrand may be null or omitted (useOldFormat defaults to false) --
    // if the cobrand is invalid, returns a PartnerId object flagged invalid.
    // All the parameters will be validated.  If the sub-ID is invalid, it will be set to
    // INVALID_SUB_ID.  If any other parameters are invalid, they will be null in the resulting
    // PartnerId object.
    this.makePartnerId = function (cobrand, campaign, track, country, subId, parent, useOldFormat) {
        if (typeof(cobrand) == 'undefined')
            cobrand = null;
        if (typeof(campaign) == 'undefined')
            campaign = null;
        if (typeof(track) == 'undefined')
            track = null;
        if (typeof(country) == 'undefined')
            country = null;
        if (typeof(subId) == 'undefined')
            subId = null;
        if (typeof(parent) == 'undefined')
            parent = null;
        if (typeof(useOldFormat) == 'undefined')
            useOldFormat = false;

        return new PartnerId(cobrand, campaign, track, country, _validateSubId(subId), parent, null, useOldFormat);
    }

    this.validateField = _validateField;
    this.isFieldValid = _isFieldValid;
    this.validateCountry = _validateCountry;
    this.validateSubId = _validateSubId;
    this.urlEncodePartnerId = _urlEncodePartnerId;

    // Private "constants"
    var DELIMITER = '^';
    var PARENT_DELIMITER = '_';

    var NEW_PARTNER_PARAM = 'p2';
    var MAX_ID_LEN = 23;   // this is the size of Vlad's buffer

    var VALID_FIELD = /^[a-zA-Z0-9]{1,6}$/;
    var VALID_SUB_ID = /^[a-zA-Z0-9]{2,20}$/;
    var TRIM_LEFT = /^\s+/;
    var TRIM_RIGHT = /\s+$/;

    // Private constructor
    function PartnerId(_cobrand, _campaign, _track, _country, _subId, _parent, _serializedForm, useOldFormat) {
        var cobrand = toUpperCase(_validateField(_cobrand));
        var campaign = null;
        var track = null;
        var country = null;
        var parent = null;
        var subId = null;
        var serializedForm = "";

        if (cobrand != null) {
            // If no cobrand, partner ID is invalid -- all fields should be null
            // except serializedForm, which will be the empty string
            campaign = toLowerCase(_validateField(_campaign));
            track = toUpperCase(_validateField(_track));
            country = _validateCountry(_country);

            if (_parent != null && _parent.isValid())
                parent = _parent;

            // Don't validate subId here -- if we're synthesizing a new partner ID,
            // it will have been validated by the public makePartnerId method; if
            // we're processing an existing partner ID, leave it unvalidated since
            // reporting doesn't validate it.
            if (!isEmpty(_subId))
                subId = trim(_subId);

            serializedForm = trim(_serializedForm);
            if (serializedForm == null) {
                // Make sure to use the validated values!
                if (useOldFormat)
                    serializedForm = serializeOld(cobrand, campaign, track, country, parent);
                else
                    serializedForm = serializeNew(cobrand, campaign, track, country, parent);
            }
        }

        this.toString = function () {
            return serializedForm;
        }

        this.getCobrand = function () {
            return cobrand;
        };
        this.getCampaign = function () {
            return campaign;
        };
        this.getTrack = function () {
            return track;
        };
        this.getCountry = function () {
            return country;
        };
        this.getSubId = function () {
            return subId;
        };
        this.getParent = function () {
            return parent;
        };
        this.getChild = function () {
            if (parent == null)
                return this;

            return new PartnerId(cobrand, campaign, track, country, subId, null, null, useOldFormat);
        };
        this.hasCobrand = function () {
            return cobrand != null;
        }
        this.hasCampaign = function () {
            return campaign != null;
        }
        this.hasTrack = function () {
            return track != null;
        }
        this.hasCountry = function () {
            return country != null;
        }
        this.hasSubId = function () {
            return subId != null;
        }
        this.hasParent = function () {
            return parent != null;
        }

        this.addToUrl = function (baseUrl, oldParamName) {
            var s = '';
            if (baseUrl != null)
                s = trim(baseUrl);

            if (_isValid()) {
                var lastChar = '\0';
                if (s.length > 0)
                    lastChar = s.charAt(s.length - 1);
                if (lastChar != '?' && lastChar != '&') {
                    if (s.indexOf('?') >= 0 || s.indexOf('&') >= 0)
                        s += '&';
                    else
                        s += '?';
                }

                s += _appendQueryParameters(oldParamName);
            }

            return s;
        }

        this.isValid = _isValid;
        this.isNewFormat = _isNewFormat;
        this.isOldFormat = _isOldFormat;
        this.appendQueryParameters = _appendQueryParameters;

        function _isValid() {
            return cobrand != null;
        }

        function _isNewFormat() {
            return serializedForm.length > 0 && serializedForm.charAt(0) == DELIMITER;
        }

        function _isOldFormat() {
            return serializedForm.length > 0 && serializedForm.charAt(0) != DELIMITER;
        }

        function _appendQueryParameters(oldParamName) {
            var s = '';
            if (!_isValid())
                return s;

            if (_isNewFormat())
                s += 'p2=';
            else
                s += oldParamName + '=';
            s += _urlEncodePartnerId(serializedForm);

            if (subId != null) {
                s += '&si=' + urlEncode(subId);
            }

            return s;
        }
    }

    function parseNew(s, subId, defaultCobrand) {
        // First, apply reporting's validation
        if (s.charAt(0) != DELIMITER)
            return getDefaultPartnerId(defaultCobrand, subId, s, false);

        // 1. Extract and validate cobrand
        var leadingDelimiterStripped = s.substring(1);
        var st = new StringTokenizer(leadingDelimiterStripped);
        var cobrand = st.nextToken(DELIMITER);
        if (!_isFieldValid(cobrand))
            return getDefaultPartnerId(defaultCobrand, subId, s, false);

        // 2. If "track" contains any invalid characters (currently only pipes),
        // treat it as empty.
        if (st.hasMoreTokens() && st.remainder().indexOf('|') > 0)
            return getDefaultPartnerId(cobrand, subId, s, false);

        // As far as reporting is concerned, this is a valid partner ID, so we
        // can now break out the remaining fields.
        var campaign = st.nextToken(DELIMITER);
        var track = st.nextToken(DELIMITER);
        var country = st.nextToken(PARENT_DELIMITER);

        // In the future, we might add more fields.  If so, it may be useful
        // not to have to upgrade all the apps which use partner IDs immediately.
        // So we will ignore any extra fields.
        if (country != null) {
            var pos = country.indexOf(DELIMITER);
            if (pos >= 0)
                country = country.substring(0, pos);
        }

        // See if there's a parent partner ID
        var parent = null;
        if (st.hasMoreTokens())
        {
            // If the parent cobrand is invalid, ignore the parent partner ID
            parent = parseNew(DELIMITER + st.remainder(), null, null);
        }

        return new PartnerId(cobrand, campaign, track, country, subId, parent, s, false);
    }

    // Logic is copied from search, which is based on Vlad's parser
    function parseOld(partnerParam, idCookie, subId, defaultCobrand) {
        var origValue = null;
        var cobrand = partnerParam;
        var tid = null;
        var campaign = null;
        var track = null;
        var country = null;
        var parent = null;

        if (cobrand != null) {
            origValue = cobrand;
            cobrand = cobrand.toUpperCase();
            if (cobrand.length > 2) {
                tid = cobrand.substring(2);
                cobrand = cobrand.substring(0, 2);
            }
            if (idCookie != null && idCookie.length <= MAX_ID_LEN) {
                tid = idCookie;

                // The "original partner ID" is a somewhat hazy concept.
                // It is intended to be either the ptnrS parameter or the
                // ptnrS + id cookies concatenated, hence this logic.
                if (origValue.length() == 2)
                    origValue += idCookie;
            }

            // If cobrand is not valid, use default
            if (!_isFieldValid(cobrand) || cobrand.length != 2) {
                cobrand = defaultCobrand;
                tid = null;
            }
        }
        else {
            // No cobrand found -- use default
            cobrand = defaultCobrand;
        }

        if (cobrand == null)
            return new PartnerId(null, null, null, null, null, null, "");

        // If id contains a pipe, consider it invalid
        if (tid != null && tid.indexOf('|') >= 0)
            tid = null;

        if (tid != null) {
            // Break out parts of id
            var pos = tid.indexOf('_');
            if (pos >= 0) {
                // If the parent cobrand is invalid, ignore the parent partner ID
                parent = parseOld(tid.substring (pos + 1), null, null, null);
                tid = tid.substring(0, pos);
            }

            var len = tid.length;
            if (len <= 6)
                campaign = tid;
            else
                campaign = tid.substring(0, 6);

            if (len >= 8) {
                track = tid.substring(6, 8);
                if (len >= 10)
                    country = tid.substring(8, 10);
            }
        }

        return new PartnerId(cobrand, campaign, track, country, subId, parent, origValue, true);
    }

    function serializeNew(cobrand, campaign, track, country, parent) {
        var s = DELIMITER;
        if (cobrand != null)
            s += cobrand;

        s += DELIMITER;
        if (campaign != null)
            s += campaign;

        s += DELIMITER;
        if (track != null)
            s += track;

        s += DELIMITER;
        if (country != null)
            s += country;

        if (parent != null) {
            s += PARENT_DELIMITER;
            // Even if parent partner ID was in old format, when we serialize
            // the compound partner ID, we must use the new format.
            // Also, don't serialize the parent's parent (if any).
            s += serializeNew (parent.getCobrand(), parent.getCampaign(), parent.getTrack(),
                parent.getCountry(), null).substring(1);
        }

        return s;
    }

    function serializeOld(cobrand, campaign, track, country, parent) {
        if (cobrand == null)
            return "";

        if (cobrand.length != 2)
            return "";   // throw an exception?

        var s = cobrand;
        if (length(campaign) == 6) {
            s += campaign;
            if (length(track) == 2) {
                s += track;
                if (length(country) == 2)
                    s += country;
            }
        }

        if (parent != null) {
            // Even if parent partner ID was in new format, when we serialize
            // the compound partner ID, we must use the old format.
            // Also, don't serialize the parent's parent (if any).
            var serializedParent = serializeOld(parent.getCobrand(), parent.getCampaign(),
                    parent.getTrack(), parent.getCountry(), null);
            if (serializedParent.length > 0) {
                s += '_' + serializedParent;
            }
        }

        return s;
    }

    function length(s) {
        if (s == null)
            return 0;

        return s.length;
    }

    function _validateField(field) {
        field = trim(field);
        if (isEmpty(field)) {
            return null;
        }

        if (!VALID_FIELD.test(field)) {
            return null;
        }

        return field;
    }

    function _validateCountry(country) {
        country = _validateField(country);
        if (country == null)
            return null;

        if (country.length != 2)
            return null;

        return country.toLowerCase();
    }

    function _validateSubId(subId) {
        subId = trim(subId);
        if (isEmpty(subId)) {
            return null;
        }

        if (!VALID_SUB_ID.test(subId)) {
            return INVALID_SUB_ID;
        }

        return subId;
    }

    function _isFieldValid(field) {
        return _validateField(field) != null;
    }

    function getDefaultPartnerId(cobrand, subId, origValue, useOldFormat) {
        return new PartnerId(cobrand, null, null, null, subId, null, origValue, useOldFormat);
    }

    function isEmpty(s) {
        return s == null || s.length == 0;
    }

    function toUpperCase(s) {
        if (s == null)
            return null;

        return s.toUpperCase();
    }

    function toLowerCase(s) {
        if (s == null)
            return null;

        return s.toLowerCase();
    }

    // From jQuery, but returns null if arg is null
    trim = String.prototype.trim ?
        function (text) {
            return text == null ?
                null :
                String.prototype.trim.call(text);
        } :
        function (text) {
            return text == null ?
                null :
                text.toString().replace(TRIM_LEFT, "").replace(TRIM_RIGHT, "");
        };

    // encodeURI and encodeURIComponent, conforming to the RFC, encode the caret delimiter,
    // which will mess up reporting (they don't URL-decode) and may significantly increase
    // the length of the URL.
    function _urlEncodePartnerId(partnerId) {
        return encodeURIComponent(partnerId).replace(/%5[eE]/g, '^');
    }

    function urlEncode(s) {
        return encodeURIComponent(s);
    }
}

function StringTokenizer(text) {
    var s = text;
    var start = 0;
    var len = 0;
    if (text != null)
        len = text.length;

    this.hasMoreTokens = function() {
        return start < len;
    };

    this.nextToken = function (delim) {
        if (!this.hasMoreTokens())
            return null;

        var pos;
        for (pos = start; pos < len; pos++) {
            if (s.charAt(pos) == delim) {
                var result = s.substring(start, pos);
                start = pos + 1;
                return result;
            }
        }

        // No more delimiters found -- return the rest of the string
        var result = s.substring(start);
        start = len;
        return result;
    };

    this.remainder = function () {
        if (!this.hasMoreTokens())
            return null;

        return s.substring(start);
    };
}

