<search function="configureDQSD">
  <name>Configure DQSD</name>
  <description>
    Configure DQSD<br/>
  </description>
  <link></link>
  <category nomenu="true">Configure</category>
  <contributor>Brent Beardsley</contributor>

  <script><![CDATA[
    var CONFIGURE_LOCAL_ALIASES_NAME = 
    {
      en: "Local Aliases..."
    };

    var CONFIGURE_LOCAL_ALIASES_DESCRIPTION = 
    {
      en: "Edit local aliases"
    };
    
    var CONFIGURE_LOCAL_PREFERENCES_NAME = 
    {
      en: "Local Preferences..."
    };

    var CONFIGURE_LOCAL_PREFERENCES_DESCRIPTION = 
    {
      en: "Edit local preferences"
    }

    var CONFIGURE_LOCAL_STYLESHEET_NAME = 
    {
      en: "Local Stylesheet..."
    }

    var CONFIGURE_LOCAL_STYLESHEET_DESCRIPTION = 
    {
      en: "Edit local stylesheet"
    }

    var CONFIGURE_SYSTEM_ALIASES_NAME = 
    {
      en: "System Aliases..."
    };

    var CONFIGURE_SYSTEM_ALIASES_DESCRIPTION = 
    {
      en: "Edit system aliases"
    };
    
    var CONFIGURE_SYSTEM_PREFERENCES_NAME = 
    {
      en: "System Preferences..."
    };

    var CONFIGURE_SYSTEM_PREFERENCES_DESCRIPTION = 
    {
      en: "Edit system preferences"
    }

    var CONFIGURE_RELOAD_DQSD_NAME = 
    {
      en: "Reload..."
    };

    var CONFIGURE_RELOAD_DQSD_DESCRIPTION =
    {
      en: "Reload Quick Search Deskbar"
    };

    var CONFIGURE_RELOAD_DQSD_PROMPT =
    {
      en: "Are you sure you want to reload the Quick Search Deskbar?"
    };

    var CONFIGURE_INSTALLED_ADDONS_NAME = 
    {
      en: "Installed Addons"
    };
    
    var CONFIGURE_COLOR_SCHEME_DESCRIPTION = 
    {
      en: "Load Color Scheme"
    };

    var CONFIGURE_BLUE_SCHEME_DESCRIPTION = 
    {
      en: "Load the blue color scheme"
    };
    
    var CONFIGURE_OLIVE_SCHEME_DESCRIPTION = 
    {
      en: "Load the olive color scheme"
    };
    
    var CONFIGURE_SILVER_SCHEME_DESCRIPTION = 
    {
      en: "Load the silver color scheme"
    };
    
    var CONFIGURE_ENERGYBLUE_SCHEME_DESCRIPTION = 
    {
      en: "Load the Energy Blue color scheme"
    };
    
    var CONFIGURE_ROYALE_ZUNE_SCHEME_DESCRIPTION = 
    {
      en: "Load the Royale Zune color scheme"
    };
    
    var CONFIGURE_ROYALE_NOIR_SCHEME_DESCRIPTION = 
    {
      en: "Load the Royale Noir color scheme"
    };
    
    var CONFIGURE_ROYALE_SCHEME_DESCRIPTION = 
    {
      en: "Load the Royale color scheme"
    };
    
    var CONFIGURE_CLASSIC_SCHEME_DESCRIPTION = 
    {
      en: "Load the Classic color scheme"
    };
    
    var CONFIGURE_NO_SCHEME_DESCRIPTION = 
    {
      en: "Revert to no color scheme"
    };
    
    var CONFIGURE_BLUE_SCHEME_NAME = 
    {
      en: "Blue"
    };
    
    var CONFIGURE_ROYALE_ZUNE_SCHEME_NAME = 
    {
      en: "Royale Zune"
    };
    
    var CONFIGURE_ROYALE_NOIR_SCHEME_NAME = 
    {
      en: "Royale Noir"
    };
    
    var CONFIGURE_ROYALE_SCHEME_NAME = 
    {
      en: "Royale"
    };
    
    var CONFIGURE_OLIVE_SCHEME_NAME = 
    {
      en: "Olive"
    };
    
    var CONFIGURE_SILVER_SCHEME_NAME = 
    {
      en: "Silver"
    };
    
    var CONFIGURE_ENERGYBLUE_SCHEME_NAME = 
    {
      en: "Energy Blue"
    };
    
    var CONFIGURE_CLASSIC_SCHEME_NAME = 
    {
      en: "Classic"
    };
    
    var CONFIGURE_NO_SCHEME_NAME = 
    {
      en: "No Theme"
    };

    function editSearchFile(strFilename)
    {

	  var myEditor = (typeof searchEditorExe != "undefined") ? searchEditorExe : "notepad";
      var install_dir = ".";
      if (ensureLauncher())
      {
        install_dir = DQSDLauncher.InstallationDirectory;
      }
	  var searchFile = install_dir+"\\searches\\"+strFilename;
      if ( searchFile.substr( searchFile.length - 4 ) != ".xml" )
        searchFile += ".xml"
	  try
	  {
        readFile( searchFile );
        var cmd = "\""+myEditor+"\" \""+searchFile + "\"";
        openDocument(cmd);
	  }
	  catch (e)
	  {
        alert( 'Unable to open ' + strFilename );
	  }
      return "";
    }

    function editCSSFile(strFilename)
    {
      var myEditor = (typeof cssEditorExe != "undefined") ? cssEditorExe : "notepad";
      var install_dir = ".";
      if (ensureLauncher())
      {
        install_dir = DQSDLauncher.InstallationDirectory;
      }
      var cmd = "\""+myEditor+"\" \""+install_dir+"\\"+strFilename + "\"";
      openDocument(cmd);
      return "";
    }

    function editConfigFile(strFilename)
    {
      var myEditor = (typeof configureEditorExe != "undefined") ? configureEditorExe : "notepad";
      var install_dir = ".";
      if (ensureLauncher())
      {
        install_dir = DQSDLauncher.InstallationDirectory;
      }
      var cmd = "\""+myEditor+"\" \""+install_dir+"\\"+strFilename + "\"";
      openDocument(cmd);
      return "";
    }

	function enableSearch(strSearchName)
	{
	  if (strSearchName == null || strSearchName.length < 1)
	  {
	    alert("No search name specified");
	    return "";
	  }
      var install_dir = ".";
      if (ensureLauncher())
      {
        install_dir = DQSDLauncher.InstallationDirectory;
      }
	  var disabledSearchFile = install_dir+"\\searches\\"+strSearchName + ".disabled";
	  var searchFile = install_dir+"\\searches\\"+strSearchName + ".xml";
      if(fileExists(searchFile)) {
		alert(strSearchName + " is already enabled");  
	  } else if (fileExists(disabledSearchFile)) {
        if (renameFile(disabledSearchFile, searchFile)) {
		  if (confirm(strSearchName + " has been enabled.  Would you like to restart DQSD to activate your changes?"))
		    reload();
		} else {
		  alert("Failed to enable " + strSearchName);
		}
	  } else {
	    alert("Disabled " + strSearchName + " not found");
	  }
	  return "";
	}

	function disableSearch(strSearchName)
	{
	  if (strSearchName == null || strSearchName.length < 1)
	  {
	    alert("No search name specified");
	    return "";
	  }

      var install_dir = ".";
      if (ensureLauncher())
      {
        install_dir = DQSDLauncher.InstallationDirectory;
      }
	  var disabledSearchFile = install_dir+"\\searches\\"+strSearchName + ".disabled";
	  var searchFile = install_dir+"\\searches\\"+strSearchName + ".xml";
      if(fileExists(disabledSearchFile)) {
		alert(strSearchName + " is already disabled");  
	  } else if (fileExists(searchFile)) {
        if (renameFile(searchFile, disabledSearchFile)) {
		  if (confirm(strSearchName + " has been disabled.  Would you like to restart DQSD to activate your changes?"))
		    reload();
		} else {
		  alert("Failed to disable " + strSearchName);
		}
	  } else {
	    alert("Enabled " + strSearchName + " not found");
	  }
	  return "";
	}


    function buildConfigureMenu(mb, hmenu)
    {
      mb.AppendMenuItem( local(CONFIGURE_LOCAL_ALIASES_NAME), "editConfigFile(\"localaliases.txt\")", local(CONFIGURE_LOCAL_ALIASES_DESCRIPTION), hmenu);
      mb.AppendMenuItem( local(CONFIGURE_LOCAL_PREFERENCES_NAME), "editConfigFile(\"localprefs.js\")", local(CONFIGURE_LOCAL_PREFERENCES_DESCRIPTION), hmenu);
      mb.AppendMenuItem( local(CONFIGURE_LOCAL_STYLESHEET_NAME), "editCSSFile(\"localsearch.css\")", local(CONFIGURE_LOCAL_STYLESHEET_DESCRIPTION), hmenu);

      var confthememenu = mb.AppendSubMenu( local(CONFIGURE_COLOR_SCHEME_DESCRIPTION), hmenu);
      mb.AppendMenuItem( local(CONFIGURE_BLUE_SCHEME_NAME), "loadcssfile(\"theme_blue.css\")", local(CONFIGURE_BLUE_SCHEME_DESCRIPTION), confthememenu);
      mb.AppendMenuItem( local(CONFIGURE_OLIVE_SCHEME_NAME), "loadcssfile(\"theme_olive.css\")", local(CONFIGURE_OLIVE_SCHEME_DESCRIPTION), confthememenu);
      mb.AppendMenuItem( local(CONFIGURE_SILVER_SCHEME_NAME), "loadcssfile(\"theme_silver.css\")", local(CONFIGURE_SILVER_SCHEME_DESCRIPTION), confthememenu);
      mb.AppendMenuItem( local(CONFIGURE_ENERGYBLUE_SCHEME_NAME), "loadcssfile(\"theme_energy_blue.css\")", local(CONFIGURE_ENERGYBLUE_SCHEME_DESCRIPTION), confthememenu);
      mb.AppendMenuItem( local(CONFIGURE_ROYALE_SCHEME_NAME), "loadcssfile(\"theme_royale.css\")", local(CONFIGURE_ROYALE_SCHEME_DESCRIPTION), confthememenu);
      mb.AppendMenuItem( local(CONFIGURE_ROYALE_NOIR_SCHEME_NAME), "loadcssfile(\"theme_royale_noir.css\")", local(CONFIGURE_ROYALE_NOIR_SCHEME_DESCRIPTION), confthememenu);
      mb.AppendMenuItem( local(CONFIGURE_ROYALE_ZUNE_SCHEME_NAME), "loadcssfile(\"theme_royale_zune.css\")", local(CONFIGURE_ROYALE_ZUNE_SCHEME_DESCRIPTION), confthememenu);
      mb.AppendMenuItem( local(CONFIGURE_CLASSIC_SCHEME_NAME), "loadcssfile(\"theme_classic.css\")", local(CONFIGURE_CLASSIC_SCHEME_DESCRIPTION), confthememenu);
      mb.AppendMenuItem( local(CONFIGURE_NO_SCHEME_NAME), "loadcssfile(\"none\")", local(CONFIGURE_NO_SCHEME_DESCRIPTION), confthememenu);
//      mb.AppendMenuItem( "No theme", "loadcssfile(\"classic\")", local(CONFIGURE_NO_SCHEME_DESCRIPTION), confthememenu);

      mb.AppendSeparator(hmenu);
      mb.AppendMenuItem( local(CONFIGURE_SYSTEM_ALIASES_NAME), "editConfigFile(\"aliases.txt\")", local(CONFIGURE_SYSTEM_ALIASES_DESCRIPTION), hmenu);
      mb.AppendMenuItem( local(CONFIGURE_SYSTEM_PREFERENCES_NAME), "editConfigFile(\"preferences.js\")", local(CONFIGURE_SYSTEM_PREFERENCES_DESCRIPTION), hmenu); 
      mb.AppendSeparator(hmenu);
      mb.AppendMenuItem( local(CONFIGURE_RELOAD_DQSD_NAME), "if (confirm('"+local(CONFIGURE_RELOAD_DQSD_PROMPT)+"')) reload();", local(CONFIGURE_RELOAD_DQSD_DESCRIPTION), hmenu);

      ensureLauncher();
      var addonFolders = getFolders(DQSDLauncher.InstallationDirectory+"\\addons\\");
      var installedAddons = null;
      if (addonFolders != "") {
        installedAddons = addonFolders.split('\n');
        if (installedAddons.length > 0 && installedAddons[0] == ".") {
          installedAddons = installedAddons.slice(1);
        }
      } else {
        installedAddons = new Array();
      }

      if (installedAddons.length > 0) {
              mb.AppendSeparator(hmenu);
        var haddons = mb.AppendSubMenu(local(CONFIGURE_INSTALLED_ADDONS_NAME)+" ("+installedAddons.length+")", hmenu);
        for (var i=0; i < installedAddons.length; i++) {
          mb.AppendMenuItem(installedAddons[i], "", installedAddons[i], haddons);
          mb.DisableMenuItem(i, haddons);
        }
      }

    }

    function loadcssfile (cssfilename)
    {
       var install_dir = DQSDLauncher.InstallationDirectory;
       if (cssfilename == "none") {
          writeFile(install_dir+'\\theme.css', "");
          reload();
          return;
       }
        var cssContent=readFile(install_dir+'\\'+cssfilename);
        writeFile(install_dir+'\\theme.css', cssContent);
       reload();
    }
  
    function configureDQSD(q)
    {
      // build the menu
      var mb = new ActiveXObject("DQSDTools.MenuBuilder");
      if (mb != null) {
        // Align the menu with the button
        mb.HorizontalAlignment = ( buttonalign == 'left' ? 1 : 2 ); // 1 = left, 2 = right (default)

        var hmenu = 0;
        buildConfigureMenu(mb, hmenu);
        var fn = mb.Display(document);
        if (fn) {
          eval(fn);
        }
        mb = null;
      }
    }

  function configureMenuHook(mb)
  {
    var confhmenu = mb.InsertSubMenu("Configure", 2);
    buildConfigureMenu(mb, confhmenu);
  }
  
  registerMenuHook(configureMenuHook);
    ]]>
  </script>
</search>
