/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): */ var rootNode = null; var textArc = null; var RDF_observer = new Object; var settingsButton = null; var settingsButtonText = null; var bunremoveAttributedle = null; var pref = null; var mClickCount = null; // get the click count pref try { pref = Components.classes["component://netscape/preferences"].getService(); if( pref ) pref = pref.QueryInterface( Components.interfaces.nsIPref ); } catch(e) { } RDF_observer = { OnAssert : function(src, prop, target) { if ((src == rootNode) && (prop == textArc)) { rememberSearchText(target); } }, OnUnassert : function(src, prop, target) { }, OnChange : function(src, prop, old_target, new_target) { if ((src == rootNode) && (prop == textArc)) { rememberSearchText(new_target); } }, OnMove : function(old_src, new_src, prop, target) { } } function rememberSearchText(targetNode) { if (targetNode) targetNode = targetNode.QueryInterface(Components.interfaces.nsIRDFLiteral); if (targetNode) targetNode = targetNode.Value; if (targetNode && (targetNode != "")) { var textNode = document.getElementById("sidebar-search-text"); if (!textNode) return(false); textNode.value = unescape(targetNode); } } // Initialize the Search panel: // 1) init the category list // 2) load the search engines associated with this category // 3) initialise the checked state of said engines. function SearchPanelStartup() { settingsButton = document.getElementById("btn.Advanced"); settingsButtonText = settingsButton.getAttribute("value"); bundle = srGetStrBundle( "chrome://search/locale/search-panel.properties" ); var tree = document.getElementById("Tree"); if (tree) { var rdf = Components.classes["component://netscape/rdf/rdf-service"].getService(); if (rdf) rdf = rdf.QueryInterface(Components.interfaces.nsIRDFService); if (rdf) { rootNode = rdf.GetResource("NC:LastSearchRoot", true); textArc = rdf.GetResource("http://home.netscape.com/NC-rdf#LastText", true); tree.database.AddObserver(RDF_observer); } } var categoryList = document.getElementById("categoryList"); if (categoryList) { var internetSearch = Components.classes["component://netscape/rdf/datasource?name=internetsearch"].getService(); if (internetSearch) internetSearch = internetSearch.QueryInterface(Components.interfaces.nsIInternetSearchService); if (internetSearch) { var catDS = internetSearch.GetCategoryDataSource(); if (catDS) catDS = catDS.QueryInterface(Components.interfaces.nsIRDFDataSource); if (catDS) { categoryList.database.AddDataSource(catDS); var ref = categoryList.getAttribute("ref"); if (ref) categoryList.setAttribute("ref", ref); } } } try { var pref = Components.classes["component://netscape/preferences"].getService(); if( pref ) pref = pref.QueryInterface( Components.interfaces.nsIPref ); var lastCategoryName = pref.CopyCharPref( "browser.search.last_search_category" ); } catch( e ) { var lastCategoryName = ""; } dump("*** lastCategoryName = " + lastCategoryName + "\n"); var categoryList = document.getElementById( "categoryList" ); if( categoryList ) { //set to default value 'the web' //hack: hardcoded postion in here replace with a function that finds the entry 'the web' for( var i = 0; i < categoryList.options.length; i++ ) { if( ( lastCategoryName == "" && categoryList.options[i].value == "NC:SearchEngineRoot" ) || ( categoryList.options[i].getAttribute("id") == lastCategoryName ) ) { categoryList.selectedIndex = i; } } // set the category name on the advanced panel var categoryText = categoryList.options[ categoryList.selectedIndex ].text; var textElement = document.getElementById( "categoryNameText" ); textElement.setAttribute( "value", categoryText ); //set the category name on the settings button settingsButton.value = settingsButtonText + categoryText + "..."; if( lastCategoryName == "" ) lastCategoryName = "NC:SearchEngineRoot"; else lastCategoryName = "NC:SearchCategory?category=" + lastCategoryName; var treeNode = document.getElementById("searchengines"); treeNode.setAttribute( "ref", lastCategoryName ); } loadEngines( lastCategoryName ); } function getNumEngines() { var treeNode = document.getElementById("searchengines"); var numChildren = treeNode.childNodes.length; for (var x = 0; x