亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? subscribe.js

?? 現在很火的郵件客戶端軟件thunderbird的源碼
?? JS
字號:
var gSubscribeTree = null;var gSearchTree;var okCallback = null;var gChangeTable = {};var gServerURI = null;var gSubscribableServer = null;var gStatusBar = null;var gNameField = null;var gNameFieldLabel = null;var gFolderDelimiter = ".";var gStatusFeedback = new nsMsgStatusFeedback;var gTimelineEnabled = false;var gMessengerBundle = null;var gSubscribeDeck = null;var gSearchView = null;var gSearchTreeBoxObject = null;// the rdf servicevar RDF = Components.classes['@mozilla.org/rdf/rdf-service;1'].getService(Components.interfaces.nsIRDFService);var subscribeDS = RDF.GetDataSource("rdf:subscribe");// get the "subscribed" atomvar atomService = Components.classes["@mozilla.org/atom-service;1"].getService().QueryInterface(Components.interfaces.nsIAtomService);var gSubscribedAtom = atomService.getAtom("subscribed").QueryInterface(Components.interfaces.nsISupports);var gSubscribeBundle;function goDoCommand(){}function Stop(){    //dump("Stop()\n")    if (gSubscribableServer) {        gSubscribableServer.stopPopulating(msgWindow);    }}function SetServerTypeSpecificTextValues(){    if (!gServerURI) return;    var serverType = GetMsgFolderFromUri(gServerURI, true).server.type;    // set the server specific ui elements    var stringName = "foldersheaderfor-" + serverType;    var stringval = gSubscribeBundle.getString(stringName);    var element = document.getElementById("subscribeFolderLabel");    element.setAttribute('value',stringval);    //set the delimiter    try {        gFolderDelimiter = gSubscribableServer.delimiter;    }    catch (ex) {        //dump(ex + "\n");        gFolderDelimiter = ".";    }}function onServerClick(event){	var item = event.target;	gServerURI = item.id;	//dump("gServerURI="+gServerURI+"\n");	SetUpTree(false);	SetServerTypeSpecificTextValues();}function SetUpServerMenu(){	//dump("SetUpServerMenu()\n");    var serverMenu = document.getElementById("serverMenu");    var menuitems = serverMenu.getElementsByAttribute("id", gServerURI);	try {		//dump("gServerURI="+gServerURI+"\n");		//dump("menuitems="+menuitems+"\n");		//dump("menuitems[0]="+menuitems[0]+"\n");		//dump("serverMenu="+serverMenu+"\n");    	serverMenu.selectedItem = menuitems[0];	}	catch (ex) {		//dump("failed to set the selected server: " + ex + "\n");	}	SetServerTypeSpecificTextValues();}var MySubscribeListener = {    OnDonePopulating: function() {        gStatusFeedback._stopMeteors();        // only re-root the tree, if it is null.        // otherwise, we are in here because we are populating        // a part of the tree          var refValue = gSubscribeTree.getAttribute('ref');        if (!refValue) {            //dump("root subscribe tree at: "+ gServerURI +"\n");            gSubscribeTree.database.AddDataSource(subscribeDS);            gSubscribeTree.setAttribute('ref',gServerURI);        }	}};function SetUpTree(forceToServer){	//dump("SetUpTree()\n");		gStatusBar = document.getElementById('statusbar-icon');	if (!gServerURI) return;	var folder = GetMsgFolderFromUri(gServerURI, true);	var server = folder.server;	try {          CleanUpSearchView();          gSubscribableServer = server.QueryInterface(Components.interfaces.nsISubscribableServer);          gSubscribeTree.setAttribute('ref',null);          // enable (or disable) the search related UI          EnableSearchUI();          // clear out the text field when switching server          gNameField.value = "";          // since there is no text, switch to the non-search view...          SwitchToNormalView();          gSubscribeTree.database.RemoveDataSource(subscribeDS);          gSubscribableServer.subscribeListener = MySubscribeListener;          gStatusFeedback._startMeteors();          gStatusFeedback.showStatusString(gSubscribeBundle.getString("pleaseWaitString"));          gSubscribableServer.startPopulating(msgWindow, forceToServer);	}	catch (ex) {          //dump("failed to populate subscribe ds: " + ex + "\n");	}}function SubscribeOnUnload(){  try {    CleanUpSearchView();    gSubscribeTree.database.RemoveDataSource(subscribeDS);  }  catch (ex) {    dump("failed to remove the subscribe ds: " + ex + "\n");  }}function EnableSearchUI(){  if (gSubscribableServer.supportsSubscribeSearch) {    gNameField.removeAttribute('disabled');    gNameFieldLabel.removeAttribute('disabled');  }  else {    gNameField.setAttribute('disabled',true);    gNameFieldLabel.setAttribute('disabled',true);  }}function SubscribeOnLoad(){  //dump("SubscribeOnLoad()\n");  gSubscribeBundle = document.getElementById("bundle_subscribe");  gMessengerBundle = document.getElementById("bundle_messenger");	  gSubscribeTree = document.getElementById("subscribeTree");  gSearchTree = document.getElementById("searchTree");  gSearchTreeBoxObject = document.getElementById("searchTree").treeBoxObject;  gNameField = document.getElementById("namefield");  gNameFieldLabel = document.getElementById("namefieldlabel");  gSubscribeDeck = document.getElementById("subscribedeck");  msgWindow = Components.classes[msgWindowContractID].createInstance(Components.interfaces.nsIMsgWindow);  msgWindow.statusFeedback = gStatusFeedback;  msgWindow.SetDOMWindow(window);  msgWindow.rootDocShell.allowAuth = true;	// look in arguments[0] for parameters	if (window.arguments && window.arguments[0]) {		if ( window.arguments[0].okCallback ) {			top.okCallback = window.arguments[0].okCallback;		}	}		gServerURI = null;	if (window.arguments[0].preselectedURI) {		var uri = window.arguments[0].preselectedURI;		//dump("subscribe: got a uri," + uri + "\n");		var folder = GetMsgFolderFromUri(uri, true);		//dump("folder="+folder+"\n");		//dump("folder.server="+folder.server+"\n");		try {                        CleanUpSearchView();			gSubscribableServer = folder.server.QueryInterface(Components.interfaces.nsISubscribableServer);                        // enable (or disable) the search related UI                        EnableSearchUI();			gServerURI = folder.server.serverURI;		}		catch (ex) {			//dump("not a subscribable server\n");                        CleanUpSearchView();			gSubscribableServer = null;			gServerURI = null;		}	}	if (!gServerURI) {		//dump("subscribe: no uri\n");		//dump("xxx todo:  use the default news server.  right now, I'm just using the first server\n");		var serverMenu = document.getElementById("serverMenu");		var menuitems = serverMenu.getElementsByTagName("menuitem");				if (menuitems.length > 1) {			gServerURI = menuitems[1].id;		}		else {			//dump("xxx todo none of your servers are subscribable\n");			//dump("xxx todo fix this by disabling subscribe if no subscribable server or, add a CREATE SERVER button, like in 4.x\n");			return;		}	}	SetUpServerMenu();  SetUpTree(false);  gNameField.focus();}function subscribeOK(){	//dump("in subscribeOK()\n")	if (top.okCallback) {		top.okCallback(top.gChangeTable);	}	Stop();	if (gSubscribableServer) {		gSubscribableServer.subscribeCleanup();	}	return true;}function subscribeCancel(){  Stop();  if (gSubscribableServer) {    gSubscribableServer.subscribeCleanup();  }  return true;}function SetState(name,state){  var changed = gSubscribableServer.setState(name, state);  if (changed)    StateChanged(name,state);}function changeTableRecord(server, name, state) {  this.server = server;  this.name = name;  this.state = state;}function StateChanged(name,state){  if (gServerURI in gChangeTable) {    if (name in gChangeTable[gServerURI]) {      var oldValue = gChangeTable[gServerURI][name];      if (oldValue != state)        delete gChangeTable[gServerURI][name];    }    else {      gChangeTable[gServerURI][name] = state;    }  }  else {    gChangeTable[gServerURI] = {};    gChangeTable[gServerURI][name] = state;  }}function InSearchMode(){    // search is the second card in the deck    return (gSubscribeDeck.getAttribute("selectedIndex") == "1");}function SearchOnClick(event){  // we only care about button 0 (left click) events  if (event.button != 0 || event.originalTarget.localName != "treechildren") return;  var row = {}, col = {}, childElt = {};  gSearchTreeBoxObject.getCellAt(event.clientX, event.clientY, row, col, childElt);  if (row.value == -1 || row.value > gSearchView.rowCount-1)    return;  if (col.value.id == "subscribedColumn2") {    if (event.detail != 2) {      // single clicked on the check box       // (in the "subscribedColumn2" column) reverse state      // if double click, do nothing      ReverseStateFromRow(row.value);    }  } else if (event.detail == 2) {    // double clicked on a row, reverse state    ReverseStateFromRow(row.value);  }  // invalidate the row  InvalidateSearchTreeRow(row.value);}function ReverseStateFromRow(row){    // to determine if the row is subscribed or not,    // we get the properties for the "subscribedColumn2" cell in the row    // and look for the "subscribed" property    // if the "subscribed" atom is in the list of properties    // we are subscribed    var properties = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);    var col = gSearchTree.columns["subscribedColumn2"];    gSearchView.getCellProperties(row, col, properties);    var isSubscribed = (properties.GetIndexOf(gSubscribedAtom) != -1);    SetStateFromRow(row, !isSubscribed);}function SetStateFromRow(row, state){    var col = gSearchTree.columns["nameColumn2"];    var name = gSearchView.getCellText(row, col);    SetState(name, state);}function SetSubscribeState(state){  try {    // we need to iterate over the tree selection, and set the state for     // all rows in the selection    var inSearchMode = InSearchMode();    var view = inSearchMode ? gSearchView : gSubscribeTree.view;    var colId = inSearchMode ? "nameColumn2" : "nameColumn";        var sel = view.selection;    for (var i = 0; i < sel.getRangeCount(); ++i) {      var start = {}, end = {};      sel.getRangeAt(i, start, end);      for (var k = start.value; k <= end.value; ++k) {        if (inSearchMode)          SetStateFromRow(k, state);        else {          var rowRes = gSubscribeTree.builderView.getResourceAtIndex(k);          var name = GetRDFProperty(rowRes, "Name");          SetState(name, state);        }      }    }        if (inSearchMode) {      // force a repaint      InvalidateSearchTree();    }  }  catch (ex) {    dump("SetSubscribedState failed:  " + ex + "\n");  }}function ReverseStateFromNode(row){  var rowRes = gSubscribeTree.builderView.getResourceAtIndex(row);  var isSubscribed = GetRDFProperty(rowRes, "Subscribed");  var name = GetRDFProperty(rowRes, "Name");  SetState(name, isSubscribed != "true");}function GetRDFProperty(aRes, aProp){  var propRes = RDF.GetResource("http://home.netscape.com/NC-rdf#"+aProp);  var valueRes = gSubscribeTree.database.GetTarget(aRes, propRes, true);  return valueRes ? valueRes.QueryInterface(Components.interfaces.nsIRDFLiteral).Value : null;}function SubscribeOnClick(event){  // we only care about button 0 (left click) events  if (event.button != 0 || event.originalTarget.localName != "treechildren")   return;   var row = {}, col = {}, obj = {};  gSubscribeTree.treeBoxObject.getCellAt(event.clientX, event.clientY, row, col, obj);  if (row.value == -1 || row.value > (gSubscribeTree.view.rowCount - 1))    return;  if (event.detail == 2) {    // only toggle subscribed state when double clicking something    // that isn't a container    if (!gSubscribeTree.view.isContainer(row.value)) {      ReverseStateFromNode(row.value);      return;    }   }  else if (event.detail == 1)  {    if (obj.value == "twisty") {        if (gSubscribeTree.view.isContainerOpen(row.value)) {          var uri = gSubscribeTree.builderView.getResourceAtIndex(row.value).Value;          gStatusFeedback._startMeteors();          gStatusFeedback.showStatusString(gSubscribeBundle.getString("pleaseWaitString"));          gSubscribableServer.startPopulatingWithUri(msgWindow, true /* force to server */, uri);        }    }    else {      // if the user single clicks on the subscribe check box, we handle it here      if (col.value.id == "subscribedColumn")        ReverseStateFromNode(row.value);    }  }}function Refresh(){        // clear out the textfield's entry on call of Refresh()        gNameField.value = "";        // force it to talk to the server        SetUpTree(true);}function InvalidateSearchTreeRow(row){    gSearchTreeBoxObject.invalidateRow(row);}function InvalidateSearchTree(){    gSearchTreeBoxObject.invalidate();}function SwitchToNormalView(){  // the first card in the deck is the "normal" view  gSubscribeDeck.setAttribute("selectedIndex","0");}function SwitchToSearchView(){  // the second card in the deck is the "search" view  gSubscribeDeck.setAttribute("selectedIndex","1");}function Search(){  var searchValue = gNameField.value;  if (searchValue.length && gSubscribableServer.supportsSubscribeSearch) {    SwitchToSearchView();    gSubscribableServer.setSearchValue(searchValue);    if (!gSearchView && gSubscribableServer) {    gSearchView = gSubscribableServer.QueryInterface(Components.interfaces.nsITreeView);      gSearchView.selection = null;    gSearchTreeBoxObject.view = gSearchView;  }  }  else {    SwitchToNormalView();  }}function CleanUpSearchView(){  if (gSearchView) {    gSearchView.selection = null;    gSearchView = null;  }}function onSearchTreeKeyPress(event){  // for now, only do something on space key  if (event.charCode != KeyEvent.DOM_VK_SPACE)    return;  var treeSelection = gSearchView.selection;   for (var i=0;i<treeSelection.getRangeCount();i++) {    var start = {}, end = {};    treeSelection.getRangeAt(i,start,end);    for (var k=start.value;k<=end.value;k++)      ReverseStateFromRow(k);    // force a repaint    InvalidateSearchTree();  }}function onSubscribeTreeKeyPress(event){  // for now, only do something on space key  if (event.charCode != KeyEvent.DOM_VK_SPACE)    return;  var treeSelection = gSubscribeTree.view.selection;   for (var i=0;i<treeSelection.getRangeCount();i++) {    var start = {}, end = {};    treeSelection.getRangeAt(i,start,end);    for (var k=start.value;k<=end.value;k++)      ReverseStateFromNode(k);  }}function doHelpButton() {  openHelp("mail-subscribe");}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久户外露出| 色婷婷综合久久久久中文一区二区| 欧美一级爆毛片| 一本久久a久久免费精品不卡| 色88888久久久久久影院野外| 69堂国产成人免费视频| 久久久久久久精| 欧美岛国在线观看| 欧美精品成人一区二区三区四区| 久久影院午夜论| 亚洲精品一二三| 综合中文字幕亚洲| 久久综合综合久久综合| 日韩电影在线看| 99久久久久免费精品国产 | 国产精品久久久久一区二区三区| 一区二区视频在线| 黄色成人免费在线| 欧美日韩小视频| 中文字幕中文乱码欧美一区二区| 国产精品久久久久久久久晋中| 日本不卡的三区四区五区| 丝袜美腿一区二区三区| 日韩成人一级大片| 一本久道久久综合中文字幕| 欧美专区亚洲专区| 欧美日韩免费一区二区三区视频| 国产亚洲成av人在线观看导航| 亚洲一级电影视频| 国产成人鲁色资源国产91色综| 成人综合婷婷国产精品久久免费| 7799精品视频| 亚洲女人****多毛耸耸8| 国产美女主播视频一区| 99久久精品免费看国产免费软件| 99精品国产99久久久久久白柏| 色呦呦国产精品| 99久久国产免费看| 欧美极品另类videosde| 亚洲视频精选在线| 丝袜亚洲另类丝袜在线| 欧美日韩在线不卡| 亚洲最新视频在线观看| 91麻豆蜜桃一区二区三区| 欧美一区二区私人影院日本| 亚洲国产cao| 欧美日韩dvd在线观看| 亚洲愉拍自拍另类高清精品| 色综合天天综合网国产成人综合天| 国产成人av网站| 日本一区二区三区电影| 国产91精品露脸国语对白| 久久综合色综合88| 日韩高清一级片| 日韩一区二区三区电影| 日本亚洲一区二区| 99精品一区二区三区| 亚洲色图制服诱惑 | 久久www免费人成看片高清| 成人做爰69片免费看网站| 欧美性淫爽ww久久久久无| 久久久午夜精品理论片中文字幕| 韩国毛片一区二区三区| 26uuu另类欧美| 婷婷久久综合九色综合绿巨人| 欧美日韩色一区| 亚洲精品一区二区三区影院| 玉米视频成人免费看| 欧美一区二区视频在线观看2022 | 午夜电影一区二区三区| 成人福利视频在线看| 亚洲欧美国产三级| 韩国av一区二区三区在线观看| 日韩欧美高清在线| 国产麻豆精品theporn| 亚洲免费观看高清完整| 欧美丝袜自拍制服另类| 精品一区二区三区在线播放视频| 久久色在线观看| 欧日韩精品视频| 激情综合色综合久久| 在线不卡免费欧美| 精品亚洲国内自在自线福利| 欧美一区二区黄色| 成人免费视频免费观看| 午夜电影一区二区三区| 欧美性做爰猛烈叫床潮| 国产揄拍国内精品对白| 亚洲免费观看在线视频| 日韩精品中文字幕一区| 91亚洲精品一区二区乱码| 日韩精品电影在线| 亚洲欧洲日本在线| 精品福利一二区| 91久久人澡人人添人人爽欧美| 黑人巨大精品欧美黑白配亚洲| 亚洲专区一二三| 久久精品夜色噜噜亚洲aⅴ| 激情综合亚洲精品| 欧美喷水一区二区| 不卡欧美aaaaa| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲视频一区二区在线| 久久久精品天堂| 成人动漫av在线| 美女一区二区久久| 国产亚洲一本大道中文在线| 精品视频在线视频| 日韩和欧美一区二区三区| 这里只有精品视频在线观看| 91尤物视频在线观看| 亚洲一区二区三区四区五区黄| 日韩一区二区三区视频| 国产激情精品久久久第一区二区 | 精品卡一卡二卡三卡四在线| 欧洲精品一区二区三区在线观看| 亚洲综合激情另类小说区| 国产精品网站一区| 欧美做爰猛烈大尺度电影无法无天| 国产91精品一区二区麻豆亚洲| 午夜影视日本亚洲欧洲精品| 日韩欧美自拍偷拍| 欧美肥妇bbw| 91超碰这里只有精品国产| 久久成人av少妇免费| 日韩亚洲欧美一区| 成人丝袜视频网| 亚洲国产欧美一区二区三区丁香婷| 亚洲欧美一区二区视频| 91久久国产综合久久| 国产乱一区二区| 成人午夜伦理影院| 狠狠色2019综合网| 波多野结衣精品在线| 色999日韩国产欧美一区二区| 欧美色男人天堂| 97久久超碰国产精品电影| 日本精品视频一区二区| 欧美美女bb生活片| 国产午夜久久久久| 尤物av一区二区| 美女视频黄a大片欧美| 天天爽夜夜爽夜夜爽精品视频| 亚洲图片你懂的| 国产精品国产馆在线真实露脸 | 亚洲男帅同性gay1069| 午夜久久福利影院| 国产精品一区二区果冻传媒| 99久久精品情趣| 成人综合婷婷国产精品久久蜜臀| 色综合久久88色综合天天6| 成年人午夜久久久| 91精品国产乱码| 国产精品私人自拍| 日本成人在线网站| 97精品超碰一区二区三区| 日韩欧美一区二区免费| 国产午夜久久久久| 日产精品久久久久久久性色| 日韩**一区毛片| 一本色道久久综合亚洲精品按摩| 菠萝蜜视频在线观看一区| 日韩三级视频中文字幕| 亚洲欧美激情小说另类| 国产在线不卡视频| 欧美久久久久中文字幕| |精品福利一区二区三区| 久久丁香综合五月国产三级网站| 日本韩国精品一区二区在线观看| 91豆麻精品91久久久久久| 欧美日韩三级一区| 欧美日韩视频在线一区二区| 中文字幕不卡的av| 国内一区二区在线| 91麻豆精品国产91久久久更新时间| 7777精品伊人久久久大香线蕉完整版| 国产欧美日韩在线视频| 免费在线一区观看| 欧美男生操女生| 一区二区在线观看免费| kk眼镜猥琐国模调教系列一区二区| 成人教育av在线| 色婷婷综合五月| 亚洲欧洲一区二区在线播放| 亚洲亚洲人成综合网络| 久久国产精品色| 91精品国产综合久久久久 | 国产精品久久久久久一区二区三区 | 国产美女主播视频一区| 不卡电影一区二区三区| 国产欧美一区二区在线| 亚洲日本青草视频在线怡红院| 亚洲高清视频的网址| 秋霞影院一区二区| 欧美精品丝袜中出| 一区二区三区免费观看| 久久不见久久见免费视频7| k8久久久一区二区三区| 日韩一区和二区| 麻豆精品久久久|