PKl+59Qcontent/global/about.xhtml %brandDTD; %licenseDTD; %globalDTD; ]> About:
&brandShortName;

&about.version; 2.0.0.3

PK$Z$6}ڣcontent/global/alerts/alert.js/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla 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/MPL/ * * 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 the Initial Developer are Copyright (C) 1998 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Scott MacGregor * Jens Bannmann * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ // Copied from nsILookAndFeel.h, see comments on eMetric_AlertNotificationOrigin const NS_ALERT_HORIZONTAL = 1; const NS_ALERT_LEFT = 2; const NS_ALERT_TOP = 4; var gFinalSize; var gCurrentSize = 1; var gSlideIncrement = 1; var gSlideTime = 10; var gOpenTime = 3000; // total time the alert should stay up once we are done animating. var gOrigin = 0; // Default value: alert from bottom right, sliding in vertically. var gAlertListener = null; var gAlertTextClickable = false; var gAlertCookie = ""; function prefillAlertInfo() { // unwrap all the args.... // arguments[0] --> the image src url // arguments[1] --> the alert title // arguments[2] --> the alert text // arguments[3] --> is the text clickable? // arguments[4] --> the alert cookie to be passed back to the listener // arguments[5] --> the alert origin reported by the look and feel // arguments[6] --> an optional callback listener (nsIObserver) switch (window.arguments.length) { default: case 7: gAlertListener = window.arguments[6]; case 6: gOrigin = window.arguments[5]; case 5: gAlertCookie = window.arguments[4]; case 4: gAlertTextClickable = window.arguments[3]; if (gAlertTextClickable) document.getElementById('alertTextLabel').setAttribute('clickable', true); case 3: document.getElementById('alertTextLabel').setAttribute('value', window.arguments[2]); case 2: document.getElementById('alertTitleLabel').setAttribute('value', window.arguments[1]); case 1: document.getElementById('alertImage').setAttribute('src', window.arguments[0]); case 0: break; } } function onAlertLoad() { // Read out our initial settings from prefs. try { var prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(); prefService = prefService.QueryInterface(Components.interfaces.nsIPrefService); var prefBranch = prefService.getBranch(null); gSlideIncrement = prefBranch.getIntPref("alerts.slideIncrement"); gSlideTime = prefBranch.getIntPref("alerts.slideIncrementTime"); gOpenTime = prefBranch.getIntPref("alerts.totalOpenTime"); } catch (ex) { } // Make sure that the contents are fixed at the window edge facing the // screen's center so that the window looks like "sliding in" and not // like "unfolding". The default packing of "start" only works for // vertical-bottom and horizontal-right positions, so we change it here. if (gOrigin & NS_ALERT_HORIZONTAL) { if (gOrigin & NS_ALERT_LEFT) document.documentElement.pack = "end"; // Additionally, change the orientation so the packing works as intended document.documentElement.orient = "horizontal"; } else { if (gOrigin & NS_ALERT_TOP) document.documentElement.pack = "end"; } var alertBox = document.getElementById("alertBox"); alertBox.orient = (gOrigin & NS_ALERT_HORIZONTAL) ? "vertical" : "horizontal"; // The above doesn't cause the labels in alertTextBox to reflow, // see bug 311557. As the theme's -moz-box-align css rule gets ignored, // we work around the bug by setting the align property. if (gOrigin & NS_ALERT_HORIZONTAL) { document.getElementById("alertTextBox").align = "center"; } sizeToContent(); // Work around a bug where sizeToContent() leaves a border outside of the content var contentDim = document.getElementById("alertBox").boxObject; if (window.innerWidth == contentDim.width + 1) --window.innerWidth; // Start with a 1px width/height, because 0 causes trouble with gtk1/2 gCurrentSize = 1; // Determine final size if (gOrigin & NS_ALERT_HORIZONTAL) { gFinalSize = window.outerWidth; window.outerWidth = gCurrentSize; } else { gFinalSize = window.outerHeight; window.outerHeight = gCurrentSize; } // Determine position var x = gOrigin & NS_ALERT_LEFT ? screen.availLeft : screen.availLeft + screen.availWidth - window.outerWidth; var y = gOrigin & NS_ALERT_TOP ? screen.availTop : screen.availTop + screen.availHeight - window.outerHeight; // Offset the alert by 10 pixels from the edge of the screen if (gOrigin & NS_ALERT_HORIZONTAL) y += gOrigin & NS_ALERT_TOP ? 10 : -10; else x += gOrigin & NS_ALERT_LEFT ? 10 : -10; window.moveTo(x, y); setTimeout(animateAlert, gSlideTime); } function animate(step) { gCurrentSize += step; if (gOrigin & NS_ALERT_HORIZONTAL) { if (!(gOrigin & NS_ALERT_LEFT)) window.screenX -= step; window.outerWidth = gCurrentSize; } else { if (!(gOrigin & NS_ALERT_TOP)) window.screenY -= step; window.outerHeight = gCurrentSize; } } function animateAlert() { if (gCurrentSize < gFinalSize) { animate(gSlideIncrement); setTimeout(animateAlert, gSlideTime); } else setTimeout(closeAlert, gOpenTime); } function closeAlert() { if (gCurrentSize > 1) { animate(-gSlideIncrement); setTimeout(closeAlert, gSlideTime); } else { if (gAlertListener) gAlertListener.observe(null, "alertfinished", gAlertCookie); window.close(); } } function onAlertClick() { if (gAlertListener && gAlertTextClickable) gAlertListener.observe(null, "alertclickcallback", gAlertCookie); } PK$Z$63v! content/global/alerts/alert.xul PKR*5,(content/global/bindings/autocomplete.xml null null false null false document.getAnonymousElementByAttribute(this, "anonid", "input"); 14 null false false 0) this.tree.treeBoxObject.ensureRowIsVisible(val < 0 ? 0 : val); // Fire select event on xul:tree so that accessibility API // support layer can fire appropriate accessibility events. var event = document.createEvent('Events'); event.initEvent("select", true, true); this.tree.dispatchEvent(event); return val; ]]> document.getAnonymousElementByAttribute(this, "anonid", "tree"); document.getAnonymousElementByAttribute(this, "anonid", "treecols"); 6 -1 aMaxRow && aIndex != aMaxRow) newIdx = aMaxRow; else if (!aReverse && aIndex == -1 || newIdx < 0 && aIndex != 0) newIdx = 0; if (newIdx < 0 && aIndex == 0 || newIdx > aMaxRow && aIndex == aMaxRow) aIndex = -1; else aIndex = newIdx; return aIndex; ]]> setTimeout(this.clearOpenProperty, 0, this); // Reset the maxRows property to the cached "normal" value, and reset // _normalMaxRows so that we can detect whether it was set by the input // when the popupshowing handler runs. this.mInput.maxRows = this._normalMaxRows; this._normalMaxRows = -1; new Date() = 0) return {row: row.value, column: col.value.id}; else return null; ]]> 30) { var rc = this.getHoverCell(event); if (rc && rc.row != this.parentNode.currentIndex) this.parentNode.view.selection.select(rc.row); this.mLastMoveTime = new Date(); } ]]> PK.|X``*content/global/bindings/autoscroll_all.pngPNG  IHDRr ߔgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbd 8Ԭuuu]eddTDEEyyyYA_|իoO>{7o<0b#Ǫcgg o^`ccǏ,>}xׅrwܙBm{{D^ww{%q޽{7owܩ<_{ E7 XZ:q7NNNyxx~!KجZ޽{gΜa _5dnвٳgߓeK.uo߾-n)|̻Ǐ[\t $t&@AjLeG EDDح\[ ?iӦ,7f[[[sMrf!;L8tK333ǐi#@DڵkLMM倖farHHիdӧS&R/&c?;!99c޼y/~Y 4lʭ[.? ˗/? @N汧@xegg sWW!..}  @Ss ̈́@fΜ FR-f@^ HI__I&h  I,j@Xꘀa⮮<@ Ez>jz+׭[g?nݺ2::4 Hf)0_?`fxL ڵ] ouY ̧l _KP#48Hq X>^|._çvϟ?Ae2+@XI.^Rl< X}vtt|(luǎ t4\-pb$"q[@ bM}W?#`{0A>0#oIENDB`PK.7(content/global/bindings/autoscroll_h.pngPNG  IHDRr ߔgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbd 8Ԭuuu]eddTDEEyyyYA_|իoO>{7o<0b#Ǫcgg o^`ccǏ,>}xׅrwܙBm{{D^ww{ 7opܹSy : -8q''<<<\\\^` -Z3{{RRR߁!.] ]rFّ#G/oߘmmmUΝ;7=  @0СC/ ]Thy 1_mhii1EDD2A|yʭ[.? ˗/? @>汧@x32]ׯ_!.. @=@,4za y湱'B`)gܹV^=.. %Yr#$,Q:`GAA`/q{= >?R$wuuI>Y,8@rҥP]tu>| :ޭ[ZFGG;c& H %0Xm,X/ve.̷lذSW`[@xF2 ߿ NX pך5kǧ"5|zEI`'Lf p˼ +VY /^??'`E50Dٳg gpdYw-[X%϶mv;;(Y.}W{nvP@ /^Z&qƽ|l0ǟ֋AY,Y".@`2v틊(ڀ͐byr`eZv| @ꉃc:zzJQzb*_~!@'A4-55UXR2`vc^@f,r'`?X-''GR[`ަuʕo67~|%Dz{b w%@akݾz`؃9Pؖ~z6~ ݌-|lq_`R^^jC_fPCÇbZ 8vfcj1 "pbW`ls} ,[MB3 N,vIENDB`PK. _0(content/global/bindings/autoscroll_v.pngPNG  IHDRr ߔgAMA7tEXtSoftwareAdobe ImageReadyqe<?IDATxbd 8Ԭuuu]eddTDEEyyyYA_|իoO>{7o<0b#Ǫcgg o^`ccǏ,>}xׅrwܙBm{{D^ww{%]~ʹm۶]o޼޹sݻ(t`bbWhhhĉ899,cf{/d]T&[OO%б^~ ?@kB1gϾ'%% % ˖.] -TuֿGCǏ-.] 5&#G_t/^-d?&sssM-Z L(XXX2331HƍϞ=%ձZz8? @0&h^+6>}:fFSSӏ䓓9͛ @w 4/_(++ke@1<h/8}  @FEE=L D HI__:&`p,&"`"q{= 1z]]]Ay @q8Ϸ\&`r\v `ޟ?P K6b\k.#t1`%F/0ہ @$0c/#"d0n~"5bd+@X$Fh3~~OﳣY` d!3@Rس 6pkjjL d'b@@|xXIaɒ%@@,<Bd߿V!O< d _)Hee,. /Z(| @0EL9СCO%>FnܸQX#002 %z9^PX|5D__77&`9%%fʕ|px…+n`vcdSNMr4@!71o%f^CK#[rMsʕ+߀ (-""߽{/˖-;cDJKKuyt1Y n_z 0콀l9P/ꏁz3Lkkk+@+ف-` ,^˿wPC2A [bF0DZc64 W  )x-g v6M}W?#`{0A>0/cIENDB`PKx968d{{#content/global/bindings/browser.xml %findBarDTD; ]> null null Components.classes['@mozilla.org/preferences-service;1'] .getService(Components.interfaces.nsIPrefService) .getBranch(null); Components.classes['@mozilla.org/atom-service;1'] .getService(Components.interfaces.nsIAtomService); null // see bug 63370 for details var localeService = Components.classes["@mozilla.org/intl/nslocaleservice;1"] .getService(Components.interfaces.nsILocaleService); var stringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"] .getService(Components.interfaces.nsIStringBundleService); var bundleURL = "chrome://global/locale/tabbrowser.properties"; this._mStrBundle = stringBundleService.createBundle(bundleURL, localeService.getApplicationLocale()); } return this._mStrBundle; ]]> null null 1 null false null null false null false 0) this.sessionHistory.PurgeHistory(purge); ]]> 3 10 null false null false null null null null 0) scrollType--; if (this._clientFrameDoc.defaultView.scrollMaxX > 0) scrollType++; var imageWidth = 28; var imageHeight = 28; // marker var el = this._clientFrameDoc.createElementNS("http://www.w3.org/1999/xhtml", "img"); el.src = scrollImages[scrollType]; el.style.position = "fixed"; el.style.left = left - imageWidth / 2 + "px"; el.style.top = top - imageHeight / 2 + "px"; el.style.width = imageWidth + "px"; el.style.height = imageHeight + "px"; el.style.cursor = scrollCursor[scrollType]; el.style.zIndex = 2147483647; //Max Int el.style.borderStyle = "none"; el.style.padding = "0"; el.style.margin = "0"; this._clientFrameDoc.documentElement.appendChild(el); this._autoScrollMarkerImage = el; ]]> this._AUTOSCROLL_SNAP || x < -this._AUTOSCROLL_SNAP) || (y > this._AUTOSCROLL_SNAP || y < -this._AUTOSCROLL_SNAP)) this._snapOn = false; } ]]> null PKD+5 %1%1"content/global/bindings/button.xml this.init(); binding must contain an element with anonid=\"button\""; btn._menubuttonParent = this; btn.addEventListener("mouseover", function() { if (!this.disabled) this._menubuttonParent.buttonover = true; }, true); btn.addEventListener("mouseout", function() { this._menubuttonParent.buttonover = false; }, true); btn.addEventListener("mousedown", function() { if (!this.disabled) { this._menubuttonParent.buttondown = true; this._menubuttonParent._captureMouseUp(); } }, true); ]]> false PKD+5O O $content/global/bindings/checkbox.xml PKHn4BXBX'content/global/bindings/colorpicker.xml 36 && event.keyCode < 41)) && !this.mOpen) this.showPopup(); ]]> PK84/,<,<"content/global/bindings/dialog.xml null (function(event) { if (!document.documentElement.cancelDialog()) event.preventDefault(); }) (screen.availLeft + screen.availWidth)) newX = (screen.availLeft + screen.availWidth) - window.outerWidth - 20; if (newY < screen.availTop) newY = screen.availTop + 20; if ((newY + window.outerHeight) > (screen.availTop + screen.availHeight)) newY = (screen.availTop + screen.availHeight) - window.outerHeight - 60; window.moveTo( newX, newY ); ]]> 0 ? xOffset : 0; yOffset = yOffset > 0 ? yOffset : 0; window.moveTo(xOffset, yOffset); ]]> // see bug 63370 for details var localeService = Components.classes["@mozilla.org/intl/nslocaleservice;1"] .getService(Components.interfaces.nsILocaleService); var stringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"] .getService(Components.interfaces.nsIStringBundleService); var bundleURL = "chrome://global/locale/dialog.properties"; this._mStrBundle = stringBundleService.createBundle(bundleURL, localeService.getApplicationLocale()); } return this._mStrBundle; ]]> if (!event.getPreventDefault()) this.cancelDialog(); var btn = this.getButton(this.defaultButton); if (btn) btn.setAttribute("default", event.originalTarget == btn || !(event.originalTarget instanceof Components.interfaces.nsIDOMXULButtonElement)); PKB1##"content/global/bindings/editor.xml PKHn4St $content/global/bindings/expander.xml return this.getAttribute("open"); PKD+5Կ::#content/global/bindings/general.xml 0 false this._observers[aTopic].push({ callback: aObserver, params: aParams }); false PKés/|4II$content/global/bindings/groupbox.xml PKyk4%dvdv#content/global/bindings/listbox.xml false null null null 0 "" 0 ? this.getIndexOfItem(this.selectedItems[0]) : -1; ]]> = 0) this.selectItem(this.getItemAtIndex(val)); else this.clearSelection(); ]]> [] 0 ? this.selectedItems[0] : null; ]]> 0) return this.selectedItem.value; else return null; ]]> = 0) this.currentItem = this.getItemAtIndex(val); else this.currentItem = null; ]]> = 0; --i) this.selectedItems[i].selected = false; this.selectedItems.splice(0, this.selectedItems.length); } this._selectionStart = null; this._fireOnSelect(); ]]> return this.listBoxObject.getIndexOfItem(item); return this.listBoxObject.getItemAtIndex(index); return this.listBoxObject.ensureIndexIsVisible(index); return this.ensureIndexIsVisible(this.listBoxObject.getIndexOfItem(element)); return this.listBoxObject.scrollToIndex(index); return this.listBoxObject.getNumberOfVisibleRows(); return this.listBoxObject.getIndexOfFirstVisibleRow(); return this.listBoxObject.getRowCount(); numItems - 1) newIndex = numItems - 1; var newItem = this.getItemAtIndex(newIndex); if (newItem) { this.ensureIndexIsVisible(newIndex); if (isSelectingRange) { this.selectItemRange(null, newItem); } else if (isSelecting) { this.selectItem(newItem); } this.currentItem = newItem; } ]]> = maxTop && maxTop > this.currentIndex) { newTop = maxTop; } } else if (newTop < 0) newTop = 0; this.scrollToIndex(newTop); return pageOffset; ]]> 0) { this.currentIndex = this.getIndexOfFirstVisibleRow(); } ]]> 0 && !event.altKey && !event.ctrlKey && !event.metaKey) { var key = String.fromCharCode(event.charCode); key = key.toLowerCase(); if (event.timeStamp - this._lastKeyTime > 1000) this._incrementalString = key; else this._incrementalString += key; this._lastKeyTime = event.timeStamp; var length = this._incrementalString.length; var incrementalString = this._incrementalString; var charIndex = 1; while (charIndex < length && incrementalString[charIndex] == incrementalString[charIndex - 1]) charIndex++; // If all letters in incremental string are same, just try to match the first one if (charIndex == length) { length = 1; incrementalString = incrementalString.substring(0, length); } var l = this.selectedItems.length; var c = -1; if (l > 0) c = this.getIndexOfItem(this.selectedItems[l-1]); var rowCount = this.getRowCount(); var start = 1; if (length > 1) { start = 0; if (c < 0) c = 0; } for (var i = 0; i < rowCount; i++) { var k = (i + start + c) % rowCount; var item = this.getItemAtIndex(k); //listitem var cellText = item.getAttribute("label"); cellText = cellText.substring(0, length).toLowerCase(); if (cellText == incrementalString) { this.ensureIndexIsVisible(k); this.timedSelect(item, this._selectDelay); break; } } } ]]> PKD+5; content/global/bindings/menu.xml %globalDTD; ]> PKD+5CACA$content/global/bindings/menulist.xml this.setInitialSelection() this.boxObject.QueryInterface(Components.interfaces.nsIMenuBoxObject) null null this.inputField.select(); PK}M-56ء+content/global/bindings/nativescrollbar.xml PK--526k11(content/global/bindings/notification.xml 1 2 3 4 5 6 7 8 9 10 null 4 null null null if (val) this.setAttribute('notificationshidden', true); else this.removeAttribute('notificationshidden'); = 0; n--) { if (aValue == notifications[n].value) return notifications[n]; } return null; ]]> this.PRIORITY_CRITICAL_BLOCK) throw "Invalid notification priority " + aPriority; // check for where the notification should be inserted according to // priority. If two are equal, the existing one appears on top. var notifications = this.allNotifications; var insertPos = null; for (var n = notifications.length - 1; n >= 0; n--) { if (notifications[n].priority < aPriority) break; insertPos = notifications[n]; } const XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; var newitem = document.createElementNS(XULNS, "notification"); newitem.setAttribute("label", aLabel); newitem.setAttribute("value", aValue); newitem.setAttribute("image", aImage); if (!insertPos) { newitem.style.position = "fixed"; newitem.style.top = "100%"; } this.insertBefore(newitem, insertPos); if (aButtons) { for (var b = 0; b < aButtons.length; b++) { var button = aButtons[b]; var buttonElem = document.createElementNS(XULNS, "button"); buttonElem.setAttribute("label", button.label); buttonElem.setAttribute("accesskey", button.accessKey); newitem.appendChild(buttonElem); buttonElem.buttonInfo = button; } } newitem.priority = aPriority; if (aPriority >= this.PRIORITY_CRITICAL_LOW) newitem.type = "critical"; else if (aPriority <= this.PRIORITY_INFO_HIGH) newitem.type = "info"; else newitem.type = "warning"; if (!insertPos) this._showNotification(newitem, true); // Fire event for accessibility APIs var event = document.createEvent("Events"); event.initEvent("AlertActive", true, true); newitem.dispatchEvent(event); return newitem; ]]> = 0; n--) { if (aImmediate) this.removeChild(notifications[n]); else this.removeNotification(notifications[n]); } this.currentNotification = null; ]]> height) height = this.currentNotification.boxObject.height; this.currentNotification = aNotification; this._closedNotification = null; aNotification.style.removeProperty("position"); aNotification.style.removeProperty("top"); aNotification.style.marginTop = -height + "px"; aNotification.style.opacity = 0; } else { change = -change; this._closedNotification = aNotification; var notifications = this.allNotifications; var idx = notifications.length - 2; if (idx >= 0) this.currentNotification = notifications[idx]; else this.currentNotification = null; } var opacitychange = change / height; var self = this; var slide = function slideInFn() { var done = false; var style = window.getComputedStyle(aNotification, null); var margin = style.getPropertyCSSValue("margin-top"). getFloatValue(CSSPrimitiveValue.CSS_PX); if (change > 0 && margin + change >= 0) { aNotification.style.marginTop = "0px"; aNotification.style.opacity = 1; done = true; } else if (change < 0 && margin + change <= -height) { aNotification.style.marginTop = -height + "px"; done = true; } else { aNotification.style.marginTop = (margin + change) + "px"; if (opacitychange) aNotification.style.opacity = Number(aNotification.style.opacity) + opacitychange; } if (done) { clearInterval(self._timer); self._timer = null; if (self._closedNotification) self._closedNotification.parentNode. removeChild(self._closedNotification); } } this._timer = setInterval(slide, 50); ]]> PKD+5;XX!content/global/bindings/popup.xml return this.boxObject.QueryInterface(Components.interfaces.nsIPopupBoxObject); width) width = accel.boxObject.width; } } } for (var i = 0; i < array.length; i++) array[i].width = width; ]]> 0 false 1) this.hidePopup(); return; } // find out if the node we are entering is one of our anonymous children while (rel) { if (rel == this) break; rel = rel.parentNode; } // if the entered node is not a descendant of ours, hide the tooltip if (rel != this && this._isMouseOver) { this.hidePopup(); } ]]> 0 0 0 0 1 2 3 4 0 0 0 PKix5[ F'content/global/bindings/preferences.xml Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefService); Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefBranch); this.service.getDefaultBranch(""); Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefBranchInternal); this.preferences.rootBranchInternal .removeObserver(this.name, this.preferences); return this.getAttribute("instantApply") == "true" || document.documentElement.instantApply; if (val == this.name) return val; this.preferences.rootBranchInternal .removeObserver(this.name, this.preferences); this.setAttribute('name', val); this.preferences.rootBranchInternal .addObserver(val, this.preferences, false); return val; null return this.preferences.rootBranch.prefIsLocked(this.name); return this.getAttribute("disabled") == "true"; return parseInt(this.getAttribute("tabindex")); return this.preferences.rootBranch.prefHasUserValue(this.name); this.preferences.rootBranch.clearUserPref(this.name); false return this._useDefault ? this.preferences.defaultBranch : this.preferences.rootBranch; false this.updateElements(); false this.setAttribute("lastSelected", val); document.persist(this.id, "lastSelected"); return val; null false oldHeight ? 1 : -1; var sizeDelta = Math.abs(oldHeight - aNewPane.contentHeight); this._animateRemainder = sizeDelta % this._animateIncrement; this._setUpAnimationTimer(oldHeight); ]]> 0 && this._currentHeight >= lastSelectedPane.contentHeight) || (this._multiplier < 0 && this._currentHeight <= lastSelectedPane.contentHeight)) return 0; if ((this._multiplier > 0 && newHeight > lastSelectedPane.contentHeight) || (this._multiplier < 0 && newHeight < lastSelectedPane.contentHeight)) increment = this._animateRemainder * this._multiplier; return increment; ]]> null null 15 40 5 0.40 0 0 0 return openDialog(aURL, "", "modal,centerscreen,resizable=no" + (aFeatures != "" ? ("," + aFeatures) : ""), aParams); // copied from contextHelp.js // Locate existing help window for this helpFileURI. // copied from contextHelp.js // Opens up the Help Viewer with the specified topic and helpFileURI. // currentPane is set in _selectPane for prefwindows which aren't childs. // So if there's no currentPane, just use the first pane. var pane = this.currentPane ? this.currentPane : this.preferencePanes[0]; this.openHelp(pane.helpTopic, pane.getAttribute("helpURI")); if (event.originalTarget.hasAttribute("pane")) { var pane = document.getElementById(event.originalTarget.getAttribute("pane")); event.originalTarget.parentNode.parentNode.showPane(pane); } if (this.instantApply) window.close(); false return document.getElementById(aElement.getAttribute("preference")); var targetHeight = parseInt(window.getComputedStyle(this._content, "").height); targetHeight += parseInt(window.getComputedStyle(this._content, "").marginTop); targetHeight += parseInt(window.getComputedStyle(this._content, "").marginBottom); return targetHeight; document.getAnonymousElementByAttribute(this, "class", "content-box"); // This "command" event handler tracks changes made to preferences by // the user in this window. this.userChangedValue(event.target); // This "select" event handler tracks changes made to colorpicker // preferences by the user in this window. if (event.target.localName == "colorpicker") this.userChangedValue(event.target); // This "change" event handler tracks changes made to preferences by // the user in this window. this.userChangedValue(event.target); // This "input" event handler tracks changes made to preferences by // the user in this window. this.userChangedValue(event.target); PKt%6 )content/global/bindings/progressmeter.xml 3 || p == 0 || p == 100) { this.setAttribute("value", p); // Fire DOM event so that accessible value change events occur var event = document.createEvent('Events'); event.initEvent('ValueChange', true, true); this.dispatchEvent(event); } } return p; ]]> > 2; spacer.height = stack.boxObject.height; spacer.width = width; spacer.left = width * position; position += 15 / (width + 150); if (position >= 4) position = -1; } else { clearInterval(interval); } }, 20); ]]> this.init(); PKba499!content/global/bindings/radio.xml null if (this.disabled) event.preventDefault(); this.selectedItem = this.focusedItem; this.selectedItem.doCommand(); this.checkAdjacentElement(false); event.stopPropagation(); // left arrow goes back when we are ltr, forward when we are rtl this.checkAdjacentElement(document.defaultView.getComputedStyle( this, "").direction == "rtl"); event.stopPropagation(); this.checkAdjacentElement(true); event.stopPropagation(); // right arrow goes forward when we are ltr, back when we are rtl this.checkAdjacentElement(document.defaultView.getComputedStyle( this, "").direction == "ltr"); event.stopPropagation(); this.removeAttribute("focused"); this.focusedItem = null; PKHn4kFNFN'content/global/bindings/richlistbox.xml null = this.getRowCount()) this.selectedIndex = this.getRowCount() - 1; else this.selectedIndex = selectedIndex; // XXX: downloadmanager needs the following line, else we scroll to // the middle on inital load. this.ensureSelectedElementIsVisible(); } ]]> 0 = 0) { // only set if we get an item returned var item = this.getItemAtIndex(val); if (item) this.selectedItem = item; } ]]> null return this._selectedItem; y.value) && (aItem.boxObject.y < y.value + this.scrollBoxObject.height); ]]> = 0 && index < children.length) { var border2 = children[index].boxObject.y; if (aDirection == -1) border2 += children[index].boxObject.height; if ((border2 - border) * aDirection > height) break; index += aDirection; } index -= aDirection; if (this.selectedItem != children[index]) { this.selectedItem = children[index]; return true; } // Move by at least one item if the view port is too small if (aDirection == -1) return this.goUp(); return this.goDown(); ]]> 0) document.commandDispatcher.updateCommands("richlistbox-select"); } ]]> PK 4O%content/global/bindings/scrollbar.xml if (navigator.platform.indexOf("Mac") != -1) this.initScrollbar(); PKjs-5++%content/global/bindings/scrollbox.xml %globalDTD; ]> document.getAnonymousElementByAttribute(this, "anonid", "scrollbox"); document.getAnonymousElementByAttribute(this, "anonid", "scrollbutton-up"); document.getAnonymousElementByAttribute(this, "anonid", "scrollbutton-down"); 20 null window.getComputedStyle(this._scrollbox, "").direction == "ltr"; 0) this.ensureElementIsVisible(childNodes[0]); } } catch(e) { this._scrollButtonUp.collapsed = false; this._scrollButtonDown.collapsed = false; } ]]> null 0 150 PKHR11 Q Q 'content/global/bindings/spinbuttons.xml PK}M-c$content/global/bindings/splitter.xml PKY2K K (content/global/bindings/stringbundle.xml null PKG!5|WW"content/global/bindings/tabbox.xml %globalDTD; ]> false this switch (this.getAttribute("eventnode")) { case "parent": this._eventNode = this.parentNode; break; case "window": this._eventNode = window; break; case "document": this._eventNode = document; break; } this._eventNode.addEventListener("keypress", this._keyEventHandler, false); this._eventNode.removeEventListener("keypress", this._keyEventHandler, false); 0 ? selectedIndex : 0; var o = this.getAttribute("orient"); if (!o) this.setAttribute("orient", "horizontal"); ]]> null return this.getAttribute("label"); this.setAttribute("label", val); return val; return this.getAttribute("selected") == "true" ? true : false; false PKms75_&content/global/bindings/tabbrowser.xml %tabBrowserDTD; %globalDTD; ]> Components.classes['@mozilla.org/preferences-service;1'] .getService(Components.interfaces.nsIPrefService) .getBranch(null); Components.classes["@mozilla.org/docshell/urifixup;1"] .getService(Components.interfaces.nsIURIFixup); document.getAnonymousElementByAttribute(this, "anonid", "tabbox"); this.mTabBox.childNodes[0] document.getAnonymousElementByAttribute(this, "anonid", "strip"); document.getAnonymousElementByAttribute(this, "anonid", "tabcontainer"); document.getAnonymousElementByAttribute(this, "anonid", "panelcontainer"); this.mTabContainer.childNodes document.getAnonymousElementByAttribute(this, "anonid", "tbstringbundle"); null null [] new Array() new Array() false false null null false false false null false 0 && aStatus == NS_ERROR_UNKNOWN_HOST) { // to prevent bug 235825: wait for the request handled // by the automatic keyword resolver return; } // since we (try to) only handle STATE_STOP of the last request, // the count of open requests should now be 0 this.mRequestCount = 0; } if (aStateFlags & nsIWebProgressListener.STATE_START && aStateFlags & nsIWebProgressListener.STATE_IS_NETWORK) { // It's okay to clear what the user typed when we start // loading a document. If the user types, this counter gets // set to zero, if the document load ends without an // onLocationChange, this counter gets decremented // (so we keep it while switching tabs after failed loads) if (aWebProgress.DOMWindow == this.mBrowser.contentWindow) this.mBrowser.userTypedClear++; if (!this.mBlank) { this.mTab.setAttribute("busy", "true"); this.mTabBrowser.updateIcon(this.mTab); this.mTabBrowser.setTabTitleLoading(this.mTab); if (this.mTabBrowser.mCurrentTab == this.mTab) this.mTabBrowser.mIsBusy = true; } } else if (aStateFlags & nsIWebProgressListener.STATE_STOP && aStateFlags & nsIWebProgressListener.STATE_IS_NETWORK) { if (aWebProgress.DOMWindow == this.mBrowser.contentWindow) { // The document is done loading, we no longer want the // value cleared. if (this.mBrowser.userTypedClear > 0) this.mBrowser.userTypedClear--; if (!this.mBrowser.mIconURL) this.mTabBrowser.useDefaultIcon(this.mTab); } if (this.mBlank) this.mBlank = false; this.mTab.removeAttribute("busy"); this.mTabBrowser.updateIcon(this.mTab); var location = aRequest.QueryInterface(nsIChannel).URI; // For keyword URIs clear the user typed value since they will be changed into real URIs if (location.scheme == "keyword") this.mBrowser.userTypedValue = null; if (this.mTab.label == this.mTabBrowser.mStringBundle.getString("tabs.loading")) this.mTabBrowser.setTabTitle(this.mTab); if (this.mTabBrowser.mCurrentTab == this.mTab) this.mTabBrowser.mIsBusy = false; } if (this.mTabBrowser.mCurrentTab == this.mTab) { for (var i = 0; i < this.mTabBrowser.mProgressListeners.length; i++) { var p = this.mTabBrowser.mProgressListeners[i]; if (p && !oldBlank) p.onStateChange(aWebProgress, aRequest, aStateFlags, aStatus); // make sure that the visible status of new blank tabs is correctly set else if (p && "onUpdateCurrentBrowser" in p) p.onUpdateCurrentBrowser(aStateFlags, aStatus, "", 0); } } if (aStateFlags & (nsIWebProgressListener.STATE_START | nsIWebProgressListener.STATE_STOP)) { // reset cached temporary values at beginning and end this.mMessage = ""; this.mTotalProgress = 0; } this.mStateFlags = aStateFlags; this.mStatus = aStatus; }, onLocationChange : function(aWebProgress, aRequest, aLocation) { // The document loaded correctly, clear the value if we should if (this.mBrowser.userTypedClear > 0 && aRequest) this.mBrowser.userTypedValue = null; if (aWebProgress.DOMWindow == this.mBrowser.contentWindow && aWebProgress.isLoadingDocument) this.mTabBrowser.setIcon(this.mTab, null); // changing location, clear out the missing plugins list this.mTab.missingPlugins = null; if (!this.mBlank && this.mTabBrowser.mCurrentTab == this.mTab) { for (var i = 0; i < this.mTabBrowser.mProgressListeners.length; i++) { var p = this.mTabBrowser.mProgressListeners[i]; if (p) p.onLocationChange(aWebProgress, aRequest, aLocation); } } }, onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage) { if (this.mBlank) return; if (this.mTabBrowser.mCurrentTab == this.mTab) { for (var i = 0; i < this.mTabBrowser.mProgressListeners.length; i++) { var p = this.mTabBrowser.mProgressListeners[i]; if (p) p.onStatusChange(aWebProgress, aRequest, aStatus, aMessage); } } this.mMessage = aMessage; }, onSecurityChange : function(aWebProgress, aRequest, aState) { if (this.mTabBrowser.mCurrentTab == this.mTab) { for (var i = 0; i < this.mTabBrowser.mProgressListeners.length; i++) { var p = this.mTabBrowser.mProgressListeners[i]; if (p) p.onSecurityChange(aWebProgress, aRequest, aState); } } }, QueryInterface : function(aIID) { if (aIID.equals(Components.interfaces.nsIWebProgressListener) || aIID.equals(Components.interfaces.nsISupportsWeakReference) || aIID.equals(Components.interfaces.nsISupports)) return this; throw Components.results.NS_NOINTERFACE; } }); ]]> sz || req.image.height > sz) return; this.setIcon(aTab, browser.currentURI.spec); } catch (e) { } } } else if (this.shouldLoadFavIcon(browser.currentURI)) { var url = browser.currentURI.prePath + "/favicon.ico"; if (!this.isIconKnownMissing(url)) this.setIcon(aTab, url); } ]]> return !this.mStrip.collapsed; 0) { // Use the filter hooked up in our addProgressListener filter = this.mTabFilters[0]; } else { // create a filter and hook it up to our first browser filter = Components.classes["@mozilla.org/appshell/component/browser-status-filter;1"] .createInstance(Components.interfaces.nsIWebProgress); this.mTabFilters[0] = filter; this.mCurrentBrowser.webProgress.addProgressListener(filter, Components.interfaces.nsIWebProgress.NOTIFY_ALL); } // Remove all our progress listeners from the active browser's filter. for (var i = 0; i < this.mProgressListeners.length; i++) { var p = this.mProgressListeners[i]; if (p) filter.removeProgressListener(p); } // Wire up a progress listener to our filter. const listener = this.mTabProgressListener(this.mCurrentTab, this.mCurrentBrowser, false); filter.addProgressListener(listener, Components.interfaces.nsIWebProgress.NOTIFY_ALL); this.mTabListeners[0] = listener; ]]> 1 false/true NO var owner = (aURIs.length > 1) || aLoadInBackground ? null : gBrowser.selectedTab; var firstTabAdded = null; if (aReplace) this.loadURI(aURIs[0], null, null); else firstTabAdded = gBrowser.addTab(aURIs[0], null, null, null, owner, false); var tabNum = this.mTabContainer.selectedIndex; for (var i = 1; i < aURIs.length; ++i) { var tab = gBrowser.addTab(aURIs[i]); if (aReplace) this.moveTabTo(tab, ++tabNum); } if (!aLoadInBackground) { if (firstTabAdded) { // .selectedTab setter focuses the content area this.selectedTab = firstTabAdded; } else window.content.focus(); } ]]> = 0; --i) { if (childNodes[i] != aTab) this.removeTab(childNodes[i]); } } ]]> = scrolledSize.value) { tabStrip.scrollByPixels(-1 * this.mTabContainer.firstChild .boxObject.width); } } catch (ex) { } // Find the tab to select var newIndex = -1; if (currentIndex > index) newIndex = currentIndex-1; else if (currentIndex < index) newIndex = currentIndex; else { if ("owner" in oldTab && oldTab.owner && this.mPrefs.getBoolPref("browser.tabs.selectOwnerOnClose")) { for (i = 0; i < this.mTabContainer.childNodes.length; ++i) { tab = this.mTabContainer.childNodes[i]; if (tab == oldTab.owner) { newIndex = i; break; } } } if (newIndex == -1) newIndex = (index == l - 1) ? index - 1 : index; } // Select the new tab this.selectedTab = this.mTabContainer.childNodes[newIndex]; for (i = oldTab._tPos; i < this.mTabContainer.childNodes.length; i++) { this.mTabContainer.childNodes[i]._tPos = i; } this.mTabBox.selectedPanel = this.getBrowserForTab(this.mCurrentTab).parentNode; this.mCurrentTab.selected = true; this.updateCurrentBrowser(); // see comment above destroy above oldBrowser.focusedWindow = null; oldBrowser.focusedElement = null; ]]> return this.mTabContainer; return this.mTabBox.selectedTab; ' + aEvent.target.label + ''); } else { aXferData.data.addDataForFlavour("text/unicode", "about:blank"); } } ]]> = aDragSession.sourceNode.boxObject.screenX && aEvent.screenX <= (aDragSession.sourceNode.boxObject.screenX + aDragSession.sourceNode.boxObject.width))) return false; return true; ]]> 0) newMarginLeft = maxMarginLeft; else if (pixelsToScroll < 0) newMarginLeft = minMarginLeft; else { if (newIndex == this.mTabs.length) { newMarginLeft = this.mTabs[newIndex-1].boxObject.screenX + this.mTabs[newIndex-1].boxObject.width - this.boxObject.screenX - halfIndWidth; } else { newMarginLeft = this.mTabs[newIndex].boxObject.screenX - this.boxObject.screenX - halfIndWidth; } // ensure we never place the drop indicator beyond // our limits if (newMarginLeft < minMarginLeft) newMarginLeft = minMarginLeft; else if (newMarginLeft > maxMarginLeft) newMarginLeft = maxMarginLeft; } ind.style.marginLeft = newMarginLeft + 'px'; } else { var newMarginRight; var minMarginRight = tabStripBoxObject.x - halfIndWidth - ib.boxObject.x; // make sure we don't place the tab drop indicator past the // edge, or the containing box will flex and stretch // the tab drop indicator bar, which will flex the url bar. // XXX todo // just use first value if you can figure out how to get // the tab drop indicator to crop instead of flex and stretch // the tab drop indicator bar. var maxMarginRight = Math.min( (minMarginRight + tabStripBoxObject.width), (ib.boxObject.x + ib.boxObject.width - ind.boxObject.width)); // if we are scrolling, put the drop indicator at the edge // so that it doesn't jump while scrolling if (pixelsToScroll > 0) newMarginRight = maxMarginRight; else if (pixelsToScroll < 0) newMarginRight = minMarginRight; else { if (newIndex == this.mTabs.length) { newMarginRight = this.boxObject.width + this.boxObject.screenX - this.mTabs[newIndex-1].boxObject.screenX - halfIndWidth; } else { newMarginRight = this.boxObject.width + this.boxObject.screenX - this.mTabs[newIndex].boxObject.screenX - this.mTabs[newIndex].boxObject.width - halfIndWidth; } // ensure we never place the drop indicator beyond // our limits if (newMarginRight < minMarginRight) newMarginRight = minMarginRight; else if (newMarginRight > maxMarginRight) newMarginRight = maxMarginRight; } ind.style.marginRight = newMarginRight + 'px'; } } ]]> oldIndex) newIndex--; if (newIndex != oldIndex) this.moveTabTo(this.mTabs[oldIndex], newIndex); } else { var url = transferUtils.retrieveURLFromData(aXferData.data, aXferData.flavour.contentType); // valid urls don't contain spaces ' '; if we have a space it isn't a valid url. // Also disallow dropping javascript: or data: urls--bail out if (!url || !url.length || url.indexOf(" ", 0) != -1 || /^\s*(javascript|data):/.test(url)) return; this.dragDropSecurityCheck(aEvent, aDragSession, url); var bgLoad = true; try { bgLoad = this.mPrefs.getBoolPref("browser.tabs.loadInBackground"); } catch (e) { } if (aEvent.shiftKey) bgLoad = !bgLoad; if (document.getBindingParent(aEvent.originalTarget).localName != "tab") { // We're adding a new tab. this.loadOneTab(getShortcutOrURI(url), null, null, null, bgLoad, false); } else { // Load in an existing tab. var tab = aEvent.target; try { this.getBrowserForTab(tab).loadURI(getShortcutOrURI(url)); if (this.mCurrentTab != tab && !bgLoad) this.selectedTab = tab; } catch(ex) { // Just ignore invalid urls } } } ]]> this.mTabs[i].boxObject.screenX + this.mTabs[i].boxObject.width / 2) return i; } return this.mTabs.length; ]]> 0) { this.moveTabTo(this.mCurrentTab, tabPos - 1); this.mCurrentTab.focus(); } else if (this.arrowKeysShouldWrap) this.moveTabToEnd(); ]]> 0) { this.moveTabTo(this.mCurrentTab, 0); this.mCurrentTab.focus(); } ]]> null document.getAnonymousElementByAttribute(this, "anonid", "down-box"); document.getAnonymousElementByAttribute(this, "anonid", "down-box-animate"); 0 document.getAnonymousElementByAttribute(this, "anonid", "arrowscrollbox"); document.getAnonymousElementByAttribute(this, "anonid", "tabstrip-closebutton"); ({ tabbox: this, observe: function(subject, topic, data) { if (topic == "nsPref:changed") { switch (data) { case "browser.tabs.closeButtons": var pb2 = Components.classes['@mozilla.org/preferences-service;1']. getService(Components.interfaces.nsIPrefBranch2); this.tabbox.mCloseButtons = pb2.getIntPref("browser.tabs.closeButtons"); this.tabbox.adjustTabstrip(); break; } } }, QueryInterface : function(aIID) { if (aIID.equals(Components.interfaces.nsIObserver) || aIID.equals(Components.interfaces.nsISupportsWeakReference) || aIID.equals(Components.interfaces.nsISupports)) return this; throw Components.results.NS_NOINTERFACE; } }); 100 140 1 this.mTabClipWidth || width == 0) this.setAttribute("closebuttons", "alltabs"); else this.setAttribute("closebuttons", "activetab"); } catch (e) { // XXXzeniko what error are we catching here? } break; case 2: case 3: this.setAttribute("closebuttons", "noclose"); break; } this.mTabstripClosebutton.collapsed = this.mCloseButtons != 3; ]]> null document.getAnonymousElementByAttribute(this, "anonid", "alltabs-popup"); document.getAnonymousElementByAttribute(this, "anonid", "alltabs-box-animate"); this.mTabstrip._scrollButtonDownBoxAnimate; document.getAnonymousElementByAttribute(this, "anonid", "alltabs-button"); null -1 25 [1.00, 0.85, 0.80, 0.75, 0.71, 0.68, 0.65, 0.62, 0.59, 0.57, 0.54, 0.52, 0.50, 0.47, 0.45, 0.44, 0.42, 0.40, 0.38, 0.37, 0.35, 0.34, 0.32, 0.31, 0.30, 0.29, 0.28, 0.27, 0.26, 0.25, 0.24, 0.23, 0.23, 0.22, 0.22, 0.21, 0.21, 0.21, 0.20, 0.20, 0.20, 0.20, 0.20, 0.20, 0.20, 0.20, 0.19, 0.19, 0.19, 0.18, 0.18, 0.17, 0.17, 0.16, 0.15, 0.14, 0.13, 0.11, 0.09, 0.06] ctboStart || ctboEnd > tsboEnd) { this._animateStep = 0; if (!this._animateTimer) this._animateTimer = Components.classes["@mozilla.org/timer;1"] .createInstance(Components.interfaces.nsITimer); else this._animateTimer.cancel(); this._animateTimer.initWithCallback(this, this._animateDelay, Components.interfaces.nsITimer.TYPE_REPEATING_SLACK); } ]]> // for the one-close-button case event.stopPropagation(); false null var anonid = event.originalTarget.getAttribute("anonid"); if (anonid == "close-button") this.mOverCloseButton = true; var anonid = event.originalTarget.getAttribute("anonid"); if (anonid == "close-button") this.mOverCloseButton = false; PKD+5$!n66 content/global/bindings/text.xml an anon child } } if (control) { control.labelElement = this; } var afterLabel = document.getAnonymousElementByAttribute(this, "anonid", "accessKeyParens"); afterLabel.textContent = ""; // This does not clear real nodes! var oldAccessKey = this.getElementsByAttribute('class', 'accesskey').item(0); if (oldAccessKey) { // Clear old accesskey this.mergeElement(oldAccessKey); } var oldHiddenSpan = this.getElementsByAttribute('class', 'hiddenColon').item(0); if (oldHiddenSpan) { this.mergeElement(oldHiddenSpan); } var accessKey = this.accessKey; var labelText = this.textContent; if (!accessKey || !labelText || !control) { return; } var accessKeyIndex = -1; if (!this.mAlwaysAppendAccessKey) { accessKeyIndex = labelText.indexOf(accessKey); if (accessKeyIndex < 0) { // Try again in upper case accessKeyIndex = labelText.toUpperCase().indexOf(accessKey.toUpperCase()); } } const HTML_NS = "http://www.w3.org/1999/xhtml"; var span = document.createElementNS(HTML_NS, "span"); span.className = "accesskey"; // Note that if you change the following code, see the comment of // nsTextBoxFrame::UpdateAccessTitle. // If accesskey is not in string, append in parentheses if (accessKeyIndex < 0) { // If end is colon, we should insert before colon. // i.e., "label:" -> "label(X):" var colonHidden = false; if (/:$/.test(labelText)) { labelText = labelText.slice(0, -1); var hiddenSpan = document.createElementNS(HTML_NS, "span"); hiddenSpan.className = "hiddenColon"; hiddenSpan.style.display = "none"; // Hide the last colon by using span element. // I.e., label: this.wrapChar(hiddenSpan, labelText.length); colonHidden = true; } // If end is space(U+20), // we should not add space before parentheses. var endIsSpace = false; if (/ $/.test(labelText)) { endIsSpace = true; } if (this.mInsertSeparator && !endIsSpace) afterLabel.textContent = " ("; else afterLabel.textContent = "("; span.textContent = accessKey.toUpperCase(); afterLabel.appendChild(span); if (!colonHidden) afterLabel.appendChild(document.createTextNode(")")); else afterLabel.appendChild(document.createTextNode("):")); return; } this.wrapChar(span, accessKeyIndex); ]]> = node.length) { index -= node.length; node = treeWalker.nextNode(); } if (index) { node = node.splitText(index); } node.parentNode.insertBefore(element, node); if (node.length > 1) { node.splitText(1); } element.appendChild(node); ]]> !/Mac/.test(navigator.platform) true false PKY=6FsEE#content/global/bindings/textbox.xml %textcontextDTD; ]> null false false this.inputField.select(); this.inputField.setSelectionRange( aSelectionStart, aSelectionEnd ); null return this.inputField.value;