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

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

?? selection.js

?? 圖書管理系統包括圖書的增加、刪除、修改等功能
?? JS
字號:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.selection.Selection");dojo.require("dojo.lang.array");dojo.require("dojo.lang.func");dojo.require("dojo.math");dojo.selection.Selection = function(items, isCollection) {	this.items = [];	this.selection = [];	this._pivotItems = [];	this.clearItems();	if(items) {		if(isCollection) {			this.setItemsCollection(items);		} else {			this.setItems(items);		}	}}dojo.lang.extend(dojo.selection.Selection, {	items: null, // items to select from, order matters for growable selections	selection: null, // items selected, aren't stored in order (see sorted())	lastSelected: null, // last item selected	allowImplicit: true, // if true, grow selection will start from 0th item when nothing is selected	length: 0, // number of *selected* items	// if true, the selection is treated as an in-order and can grow by ranges, not just by single item	isGrowable: true,	_pivotItems: null, // stack of pivot items	_pivotItem: null, // item we grow selections from, top of stack	// event handlers	onSelect: function(item) {},	onDeselect: function(item) {},	onSelectChange: function(item, selected) {},	_find: function(item, inSelection) {		if(inSelection) {			return dojo.lang.find(item, this.selection);		} else {			return dojo.lang.find(item, this.items);		}	},	isSelectable: function(item) {		// user-customizable, will filter items through this		return true;	},	setItems: function(/* ... */) {		this.clearItems();		this.addItems.call(this, arguments);	},	// this is in case you have an active collection array-like object	// (i.e. getElementsByTagName collection) that manages its own order	// and item list	setItemsCollection: function(collection) {		this.items = collection;	},	addItems: function(/* ... */) {		var args = dojo.lang.unnest(arguments);		for(var i = 0; i < args.length; i++) {			this.items.push(args[i]);		}	},	addItemsAt: function(item, before /* ... */) {		if(this.items.length == 0) { // work for empy case			return this.addItems(dojo.lang.toArray(arguments, 2));		}		if(!this.isItem(item)) {			item = this.items[item];		}		if(!item) { throw new Error("addItemsAt: item doesn't exist"); }		var idx = this._find(item);		if(idx > 0 && before) { idx--; }		for(var i = 2; i < arguments.length; i++) {			if(!this.isItem(arguments[i])) {				this.items.splice(idx++, 0, arguments[i]);			}		}	},	removeItem: function(item) {		// remove item		var idx = this._find(item);		if(idx > -1) {			this.items.splice(idx, 1);		}		// remove from selection		// FIXME: do we call deselect? I don't think so because this isn't how		// you usually want to deselect an item. For example, if you deleted an		// item, you don't really want to deselect it -- you want it gone. -DS		idx = this._find(item, true);		if(idx > -1) {			this.selection.splice(idx, 1);		}	},	clearItems: function() {		this.items = [];		this.deselectAll();	},	isItem: function(item) {		return this._find(item) > -1;	},	isSelected: function(item) {		return this._find(item, true) > -1;	},	/**	 * allows you to filter item in or out of the selection	 * depending on the current selection and action to be taken	**/	selectFilter: function(item, selection, add, grow) {		return true;	},	/**	 * update -- manages selections, most selecting should be done here	 *  item => item which may be added/grown to/only selected/deselected	 *  add => behaves like ctrl in windows selection world	 *  grow => behaves like shift	 *  noToggle => if true, don't toggle selection on item	**/	update: function(item, add, grow, noToggle) {		if(!this.isItem(item)) { return false; }		if(this.isGrowable && grow) {			if(!this.isSelected(item)				&& this.selectFilter(item, this.selection, false, true)) {				this.grow(item);				this.lastSelected = item;			}		} else if(add) {			if(this.selectFilter(item, this.selection, true, false)) {				if(noToggle) {					if(this.select(item)) {						this.lastSelected = item;					}				} else if(this.toggleSelected(item)) {					this.lastSelected = item;				}			}		} else {			this.deselectAll();			this.select(item);		}		this.length = this.selection.length;	},	/**	 * Grow a selection.	 *  toItem => which item to grow selection to	 *  fromItem => which item to start the growth from (it won't be selected)	 *	 * Any items in (fromItem, lastSelected] that aren't part of	 * (fromItem, toItem] will be deselected	**/	grow: function(toItem, fromItem) {		if(!this.isGrowable) { return; }		if(arguments.length == 1) {			fromItem = this._pivotItem;			if(!fromItem && this.allowImplicit) {				fromItem = this.items[0];			}		}		if(!toItem || !fromItem) { return false; }		var fromIdx = this._find(fromItem);		// get items to deselect (fromItem, lastSelected]		var toDeselect = {};		var lastIdx = -1;		if(this.lastSelected) {			lastIdx = this._find(this.lastSelected);			var step = fromIdx < lastIdx ? -1 : 1;			var range = dojo.math.range(lastIdx, fromIdx, step);			for(var i = 0; i < range.length; i++) {				toDeselect[range[i]] = true;			}		}		// add selection (fromItem, toItem]		var toIdx = this._find(toItem);		var step = fromIdx < toIdx ? -1 : 1;		var shrink = lastIdx >= 0 && step == 1 ? lastIdx < toIdx : lastIdx > toIdx;		var range = dojo.math.range(toIdx, fromIdx, step);		if(range.length) {			for(var i = range.length-1; i >= 0; i--) {				var item = this.items[range[i]];				if(this.selectFilter(item, this.selection, false, true)) {					if(this.select(item, true) || shrink) {						this.lastSelected = item;					}					if(range[i] in toDeselect) {						delete toDeselect[range[i]];					}				}			}		} else {			this.lastSelected = fromItem;		}		// now deselect...		for(var i in toDeselect) {			if(this.items[i] == this.lastSelected) {				//dojo.debug("oops!");			}			this.deselect(this.items[i]);		}		// make sure everything is all kosher after selections+deselections		this._updatePivot();	},	/**	 * Grow selection upwards one item from lastSelected	**/	growUp: function() {		if(!this.isGrowable) { return; }		var idx = this._find(this.lastSelected) - 1;		while(idx >= 0) {			if(this.selectFilter(this.items[idx], this.selection, false, true)) {				this.grow(this.items[idx]);				break;			}			idx--;		}	},	/**	 * Grow selection downwards one item from lastSelected	**/	growDown: function() {		if(!this.isGrowable) { return; }		var idx = this._find(this.lastSelected);		if(idx < 0 && this.allowImplicit) {			this.select(this.items[0]);			idx = 0;		}		idx++;		while(idx > 0 && idx < this.items.length) {			if(this.selectFilter(this.items[idx], this.selection, false, true)) {				this.grow(this.items[idx]);				break;			}			idx++;		}	},	toggleSelected: function(item, noPivot) {		if(this.isItem(item)) {			if(this.select(item, noPivot)) { return 1; }			if(this.deselect(item)) { return -1; }		}		return 0;	},	select: function(item, noPivot) {		if(this.isItem(item) && !this.isSelected(item)			&& this.isSelectable(item)) {			this.selection.push(item);			this.lastSelected = item;			this.onSelect(item);			this.onSelectChange(item, true);			if(!noPivot) {				this._addPivot(item);			}			return true;		}		return false;	},	deselect: function(item) {		var idx = this._find(item, true);		if(idx > -1) {			this.selection.splice(idx, 1);			this.onDeselect(item);			this.onSelectChange(item, false);			if(item == this.lastSelected) {				this.lastSelected = null;			}			this._removePivot(item);			return true;		}		return false;	},	selectAll: function() {		for(var i = 0; i < this.items.length; i++) {			this.select(this.items[i]);		}	},	deselectAll: function() {		while(this.selection && this.selection.length) {			this.deselect(this.selection[0]);		}	},	selectNext: function() {		var idx = this._find(this.lastSelected);		while(idx > -1 && ++idx < this.items.length) {			if(this.isSelectable(this.items[idx])) {				this.deselectAll();				this.select(this.items[idx]);				return true;			}		}		return false;	},	selectPrevious: function() {		//debugger;		var idx = this._find(this.lastSelected);		while(idx-- > 0) {			if(this.isSelectable(this.items[idx])) {				this.deselectAll();				this.select(this.items[idx]);				return true;			}		}		return false;	},	// select first selectable item	selectFirst: function() {		this.deselectAll();		var idx = 0;		while(this.items[idx] && !this.select(this.items[idx])) {			idx++;		}		return this.items[idx] ? true : false;	},	// select last selectable item	selectLast: function() {		this.deselectAll();		var idx = this.items.length-1;		while(this.items[idx] && !this.select(this.items[idx])) {			idx--;		}		return this.items[idx] ? true : false;	},	_addPivot: function(item, andClear) {		this._pivotItem = item;		if(andClear) {			this._pivotItems = [item];		} else {			this._pivotItems.push(item);		}	},	_removePivot: function(item) {		var i = dojo.lang.find(item, this._pivotItems);		if(i > -1) {			this._pivotItems.splice(i, 1);			this._pivotItem = this._pivotItems[this._pivotItems.length-1];		}		this._updatePivot();	},	_updatePivot: function() {		if(this._pivotItems.length == 0) {			if(this.lastSelected) {				this._addPivot(this.lastSelected);			}		}	},	sorted: function() {		return dojo.lang.toArray(this.selection).sort(			dojo.lang.hitch(this, function(a, b) {				var A = this._find(a), B = this._find(b);				if(A > B) {					return 1;				} else if(A < B) {					return -1;				} else {					return 0;				}			})		);	},	// remove any items from the selection that are no longer in this.items	updateSelected: function() {		for(var i = 0; i < this.selection.length; i++) {			if(this._find(this.selection[i]) < 0) {				var removed = this.selection.splice(i, 1);				this._removePivot(removed[0]);			}		}		this.length = this.selection.length;	}});

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品av麻豆的观看方式| 欧美日韩专区在线| 日本精品免费观看高清观看| 7777精品伊人久久久大香线蕉完整版| 久久先锋影音av鲁色资源网| 亚洲免费毛片网站| 懂色一区二区三区免费观看| 51精品久久久久久久蜜臀| 一色屋精品亚洲香蕉网站| 国产真实乱偷精品视频免| 欧美日韩国产综合久久| 日韩伦理电影网| 成人午夜在线免费| 久久久久久一级片| 韩国精品久久久| 日韩欧美精品在线| 男人的天堂亚洲一区| 欧美日韩电影在线播放| 亚洲卡通欧美制服中文| 91免费视频网址| 国产精品欧美一区二区三区| 国产成人av电影在线观看| 精品国产3级a| 久久99精品国产.久久久久久| 欧美午夜视频网站| 一区二区三区四区五区视频在线观看| 风流少妇一区二区| 欧美国产亚洲另类动漫| 国产成人综合网| 国产情人综合久久777777| 国产乱一区二区| 久久精品亚洲麻豆av一区二区| 精品一区二区三区香蕉蜜桃| 日韩视频免费观看高清完整版在线观看 | 国产欧美一区二区精品仙草咪| 另类的小说在线视频另类成人小视频在线| 久久久影视传媒| 精品一区二区成人精品| 久久欧美一区二区| 丰满白嫩尤物一区二区| 国产精品蜜臀av| 色综合天天狠狠| 午夜视频在线观看一区二区三区 | 国产成人免费网站| 久久丝袜美腿综合| 不卡的av电影在线观看| 亚洲精品伦理在线| 91精品国模一区二区三区| 日韩av中文字幕一区二区| 日韩欧美国产麻豆| 国产 欧美在线| 亚洲男人的天堂一区二区| 欧美裸体一区二区三区| 国产曰批免费观看久久久| 日本一区二区免费在线观看视频 | 7777精品伊人久久久大香线蕉 | 2017欧美狠狠色| 成人午夜私人影院| 亚洲一区二区在线视频| 欧美一区二区三区在线观看视频 | 精品一区二区日韩| 亚洲天堂av一区| 91精品国产综合久久精品性色| 精品写真视频在线观看| 中文字幕在线不卡一区| 欧美高清视频不卡网| 国产一区二区女| 亚洲一区日韩精品中文字幕| 91精品国产综合久久精品图片| 国产美女精品在线| 亚洲国产精品综合小说图片区| 精品理论电影在线观看| 91蝌蚪porny| 国产一区二三区| 亚洲.国产.中文慕字在线| 中文字幕欧美日韩一区| 日韩一区二区三区高清免费看看| 成人午夜在线视频| 久久aⅴ国产欧美74aaa| 亚洲自拍都市欧美小说| 国产免费成人在线视频| 91精品国产综合久久久久久久久久 | 成人免费高清视频| 亚洲一二三四区不卡| 6080日韩午夜伦伦午夜伦| 国产一区激情在线| 午夜视频一区在线观看| 国产精品久久一卡二卡| 精品福利av导航| 91麻豆精品国产| 在线视频国内自拍亚洲视频| 粉嫩一区二区三区在线看| 美腿丝袜亚洲三区| 亚洲aⅴ怡春院| 一区二区三区资源| 一区在线中文字幕| 久久精品人人做人人爽人人| 日韩一区二区高清| 欧美日韩国产大片| 欧美优质美女网站| 91麻豆精品秘密| 91在线一区二区三区| 国产传媒日韩欧美成人| 狠狠色丁香九九婷婷综合五月| 日本中文字幕一区二区视频 | av电影在线观看一区| 国产一区美女在线| 久久国产成人午夜av影院| 三级久久三级久久久| 亚洲午夜视频在线| 亚洲一区二区在线免费观看视频| 亚洲人成网站影音先锋播放| 亚洲品质自拍视频| 亚洲色图欧美激情| 一个色综合网站| 亚洲精选一二三| 一级日本不卡的影视| 亚洲激情在线激情| 亚洲成人av一区二区三区| 一区二区三区在线观看欧美| 亚洲精品欧美在线| 依依成人综合视频| 婷婷激情综合网| 美腿丝袜亚洲色图| 国产成人啪免费观看软件| 成人黄动漫网站免费app| 91在线小视频| 在线电影国产精品| 国产精品不卡在线观看| 中文字幕一区二区三区蜜月| 亚洲图片另类小说| 亚洲成人久久影院| 九一九一国产精品| 成人小视频免费在线观看| 色婷婷精品大在线视频| 欧美日韩高清一区二区不卡| 日韩欧美国产一区二区三区| 久久天堂av综合合色蜜桃网| 中文字幕一区在线观看视频| 亚洲国产三级在线| 蜜臀a∨国产成人精品| 国产精品主播直播| 日本韩国欧美一区| 欧美不卡视频一区| 国产精品理论在线观看| 亚洲一区免费观看| 黄网站免费久久| 91在线云播放| 精品国产三级电影在线观看| 国产精品久久夜| 日本视频免费一区| 91啪九色porn原创视频在线观看| 欧美日韩一区二区三区在线| 亚洲国产精品久久久久婷婷884| 免费精品99久久国产综合精品| 高清免费成人av| 欧美挠脚心视频网站| 欧美激情一区二区三区不卡| 亚洲国产另类精品专区| 福利一区在线观看| 91精品国产高清一区二区三区蜜臀 | 精品久久久久久最新网址| 最新中文字幕一区二区三区 | 色8久久人人97超碰香蕉987| 精品入口麻豆88视频| 最新国产の精品合集bt伙计| 美女性感视频久久| 欧美视频日韩视频| 亚洲图片欧美激情| 国产大陆亚洲精品国产| 91精品国产综合久久久久| 一区二区三区国产精品| 国产成人av电影在线观看| 日韩一级在线观看| 亚洲一二三四在线| 91成人国产精品| 亚洲男人的天堂av| www.日韩在线| 国产亲近乱来精品视频| 久久99深爱久久99精品| 欧美福利视频导航| 一区二区三区四区激情 | 中文字幕一区av| 国产乱人伦偷精品视频不卡 | 欧美肥妇bbw| 亚洲国产精品影院| 欧美怡红院视频| 亚洲一区二区三区不卡国产欧美| 97久久精品人人做人人爽50路| 2019国产精品| 国产精品夜夜嗨| 久久久欧美精品sm网站| 狠狠久久亚洲欧美| 久久一区二区视频| 国产麻豆一精品一av一免费| 精品国产免费人成在线观看| 精品一区二区在线看| 亚洲精品在线电影| 国产大陆精品国产| 国产精品美女久久久久久2018|