home *** CD-ROM | disk | FTP | other *** search
Wrap
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; var VideoSurfEnhancerOptions = { getParentWindow: function() { var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator); var enumerator = wm.getEnumerator("navigator:browser"); while(enumerator.hasMoreElements()) { var win = enumerator.getNext(); if(win.VideoSurfEnhancer) { return win; } } //return (opener) ? opener : (opener.opener) ? opener.opener : (window) ? window : parent; }, handleEnabledCheckChange: function(e) { var parent_window = VideoSurfEnhancerOptions.getParentWindow(); var vse = parent_window.VideoSurfEnhancer; var cbox = e.target; var slug = cbox.id.split("|")[1]; if(cbox.checked) { document.getElementById("search_sites_summaries_enabled|" + slug).setAttribute("disabled", !vse.checkListPresence(vse.getPref("sites_summaries_supported"), slug)); document.getElementById("search_sites_related_enabled|" + slug).setAttribute("disabled", !vse.checkListPresence(vse.getPref("sites_related_supported"), slug)); } else { document.getElementById("search_sites_summaries_enabled|" + slug).setAttribute("disabled", true); document.getElementById("search_sites_related_enabled|" + slug).setAttribute("disabled", true); } }, createOptionRow: function(slug, name, enabled, summaries_enabled, related_enabled) { var parent_window = VideoSurfEnhancerOptions.getParentWindow(); var vse = parent_window.VideoSurfEnhancer; var hbox = document.createElementNS(XUL_NS, "hbox"); // create a new XUL menuitem hbox.setAttribute("class", 'pref-option-row'); var label = document.createElementNS(XUL_NS, "label"); label.setAttribute("value", name); hbox.appendChild(label); var cbox = document.createElementNS(XUL_NS, "checkbox"); cbox.addEventListener("CheckboxStateChange", VideoSurfEnhancerOptions.handleEnabledCheckChange, false); cbox.setAttribute("id", "enabled_sites|"+slug); cbox.setAttribute("class", "overall"); cbox.setAttribute("checked", enabled ? "true" : "false"); hbox.appendChild(cbox); var cbox = document.createElementNS(XUL_NS, "checkbox"); cbox.setAttribute("id", "search_sites_summaries_enabled|"+slug); cbox.setAttribute("class", "summaries"); var summary_supported = vse.checkListPresence(vse.getPref("sites_summaries_supported"), slug); cbox.setAttribute("checked", (summary_supported && summaries_enabled) ? "true" : "false"); if(!summary_supported) { cbox.setAttribute("disabled", "true"); cbox.setAttribute("tooltiptext", "This feature is not yet available for this site"); } if(!enabled) { cbox.setAttribute("disabled", "true"); } hbox.appendChild(cbox); var cbox = document.createElementNS(XUL_NS, "checkbox"); cbox.setAttribute("id", "search_sites_related_enabled|"+slug); cbox.setAttribute("class", "related"); var related_supported = vse.checkListPresence(vse.getPref("sites_related_supported"), slug); cbox.setAttribute("checked", (related_enabled && related_supported) ? "true" : "false"); if(!related_supported) { cbox.setAttribute("disabled", "true"); cbox.setAttribute("tooltiptext", "This feature is not yet available for this site"); } if(!enabled) { cbox.setAttribute("disabled", "true"); } hbox.appendChild(cbox); return hbox; }, initPreferenceWindow: function() { var parent_window = VideoSurfEnhancerOptions.getParentWindow(); var vse = parent_window.VideoSurfEnhancer; var mainGroup = document.getElementById("videosurf_enhanced-main-options"); var enabled_sites = vse.getPref("enabled_sites"); var sites_summaries_enabled = vse.getPref("search_sites_summaries_enabled"); var sites_related_enabled = vse.getPref("search_sites_related_enabled"); var sites = vse.getPref("sites_info").split(","); sites = sites.sort(function(a, b) { return a.split("||")[1] > b.split("||")[1]; }) var Il = vse.checkListPresence; //shorthand for the fn for(i = 0 ; i < sites.length ; i++) { var site = sites[i].split("||"); var slug = site[0]; var name = site[1]; var row = VideoSurfEnhancerOptions.createOptionRow(slug, name, Il(enabled_sites, slug), Il(sites_summaries_enabled, slug), Il(sites_related_enabled, slug)); mainGroup.appendChild(row); } document.getElementById("videosurf_enhanced_pref_safe_search_enabled").setAttribute("checked", vse.getPref("safe_search_enabled") ? "true" : "false"); document.getElementById("videosurf_enhanced_pref_links_on_youtube_stay_there").setAttribute("checked", vse.getPref("links_on_youtube_stay_there") ? "true" : "false"); document.getElementById("videosurf_enhanced_pref_exclude_youtube_results_on_youtube_search").setAttribute("checked", vse.getPref("exclude_youtube_results_on_youtube_search") ? "true" : "false"); document.getElementById("videosurf_enhanced_pref_expose_longer_twitter_urls").setAttribute("checked", vse.getPref("expose_longer_twitter_urls") ? "true" : "false"); document.getElementById("videosurf_enhanced_pref_external_site_related_videos").setAttribute("checked", vse.getPref("external_site_related_videos") ? "true" : "false"); var sel = document.getElementById("videosurf_enhanced_pref_related_search_num_results"); var options = document.getElementsByTagName("menuitem", sel); var currVal = vse.getPref("related_search_num_results"); sel.setAttribute("value", currVal); sel.setAttribute("label", currVal); for(i = 0 ; i < options.length ; i++) { var option = options[i]; option.setAttribute("selected", (option.value == currVal) ? "true" : "false"); } }, doCancel: function(event) { return true; }, doOK: function(event) { var parent_window = VideoSurfEnhancerOptions.getParentWindow(); var vse = parent_window.VideoSurfEnhancer; var checkboxes = document.getElementsByTagName('checkbox'); for(var i = 0; i < checkboxes.length ; i++) { var cbox = checkboxes[i]; if(cbox.id.indexOf("|") != -1) { var type = cbox.id.split("|")[0]; var slug = cbox.id.split("|")[1]; var curr_list = vse.getPref(type); if(cbox.checked !== vse.checkListPresence(curr_list, slug)) { //If the current choice is different than the stored preference, toggle the stored preference vse.setPref(type, vse.toggleListPresence(curr_list, slug)); } } } vse.setPref("safe_search_enabled", document.getElementById("videosurf_enhanced_pref_safe_search_enabled").checked); vse.setPref("links_on_youtube_stay_there", document.getElementById("videosurf_enhanced_pref_links_on_youtube_stay_there").checked); vse.setPref("related_search_num_results", parseInt(document.getElementById("videosurf_enhanced_pref_related_search_num_results").getAttribute("value"))); vse.setPref("exclude_youtube_results_on_youtube_search", document.getElementById("videosurf_enhanced_pref_exclude_youtube_results_on_youtube_search").checked); vse.setPref("expose_longer_twitter_urls", document.getElementById("videosurf_enhanced_pref_expose_longer_twitter_urls").checked); vse.setPref("external_site_related_videos", document.getElementById("videosurf_enhanced_pref_external_site_related_videos").checked); vse.setIconDisplay(); return true; } } //VideoSurfEnhancerOptions