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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? treedraganddrop.js

?? 圖書管理系統(tǒng)包括圖書的增加、刪除、修改等功能
?? JS
字號(hào):
/*	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*//** * TreeDrag* specialized on managing subtree drags * It selects nodes and visualises what's going on, * but delegates real actions upon tree to the controller * * This code is considered a part of controller*/dojo.provide("dojo.dnd.TreeDragAndDrop");dojo.provide("dojo.dnd.TreeDragSource");dojo.provide("dojo.dnd.TreeDropTarget");dojo.provide("dojo.dnd.TreeDNDController");dojo.require("dojo.dnd.HtmlDragAndDrop");dojo.require("dojo.lang.func");dojo.require("dojo.lang.array");dojo.require("dojo.lang.extras");dojo.dnd.TreeDragSource = function(node, syncController, type, treeNode){	this.controller = syncController;	this.treeNode = treeNode;	dojo.dnd.HtmlDragSource.call(this, node, type);}dojo.inherits(dojo.dnd.TreeDragSource, dojo.dnd.HtmlDragSource);dojo.lang.extend(dojo.dnd.TreeDragSource, {	onDragStart: function(){		/* extend adds functions to prototype */		var dragObject = dojo.dnd.HtmlDragSource.prototype.onDragStart.call(this);		//dojo.debugShallow(dragObject)		dragObject.treeNode = this.treeNode;		dragObject.onDragStart = dojo.lang.hitch(dragObject, function(e) {			/* save selection */			this.savedSelectedNode = this.treeNode.tree.selector.selectedNode;			if (this.savedSelectedNode) {				this.savedSelectedNode.unMarkSelected();			}			var result = dojo.dnd.HtmlDragObject.prototype.onDragStart.apply(this, arguments);			/* remove background grid from cloned object */			var cloneGrid = this.dragClone.getElementsByTagName('img');			for(var i=0; i<cloneGrid.length; i++) {				cloneGrid.item(i).style.backgroundImage='url()';			}			return result;		});		dragObject.onDragEnd = function(e) {			/* restore selection */			if (this.savedSelectedNode) {				this.savedSelectedNode.markSelected();			}			//dojo.debug(e.dragStatus);			return dojo.dnd.HtmlDragObject.prototype.onDragEnd.apply(this, arguments);		}		//dojo.debug(dragObject.domNode.outerHTML)		return dragObject;	},	onDragEnd: function(e){		 var res = dojo.dnd.HtmlDragSource.prototype.onDragEnd.call(this, e);		 return res;	}});// .......................................dojo.dnd.TreeDropTarget = function(domNode, controller, type, treeNode, DNDMode){	this.treeNode = treeNode;	this.controller = controller; // I will sync-ly process drops	this.DNDMode = DNDMode;	dojo.dnd.HtmlDropTarget.apply(this, [domNode, type]);}dojo.inherits(dojo.dnd.TreeDropTarget, dojo.dnd.HtmlDropTarget);dojo.lang.extend(dojo.dnd.TreeDropTarget, {	autoExpandDelay: 1500,	autoExpandTimer: null,	position: null,	indicatorStyle: "2px black solid",	showIndicator: function(position) {		// do not change style too often, cause of blinking possible		if (this.position == position) {			return;		}		//dojo.debug(position)		this.hideIndicator();		this.position = position;		if (position == "before") {			this.treeNode.labelNode.style.borderTop = this.indicatorStyle;		} else if (position == "after") {			this.treeNode.labelNode.style.borderBottom = this.indicatorStyle;		} else if (position == "onto") {			this.treeNode.markSelected();		}	},	hideIndicator: function() {		this.treeNode.labelNode.style.borderBottom="";		this.treeNode.labelNode.style.borderTop="";		this.treeNode.unMarkSelected();		this.position = null;	},	// is the target possibly ok ?	// This function is run on dragOver, but drop possibility is also determined by position over node	// that's why acceptsWithPosition is called	// doesnt take index into account ( can change while moving mouse w/o changing target )	/**	 * Coarse (tree-level) access check.	 * We can't determine real accepts status w/o position	*/	onDragOver: function(e){//dojo.debug("onDragOver for "+e);		var accepts = dojo.dnd.HtmlDropTarget.prototype.onDragOver.apply(this, arguments);		//dojo.debug("TreeDropTarget.onDragOver accepts:"+accepts)		if (accepts && this.treeNode.isFolder && !this.treeNode.isExpanded) {			this.setAutoExpandTimer();		}		return accepts;	},	/* Parent.onDragOver calls this function to get accepts status */	accepts: function(dragObjects) {		var accepts = dojo.dnd.HtmlDropTarget.prototype.accepts.apply(this, arguments);		if (!accepts) return false;		var sourceTreeNode = dragObjects[0].treeNode;		if (dojo.lang.isUndefined(sourceTreeNode) || !sourceTreeNode || !sourceTreeNode.isTreeNode) {			dojo.raise("Source is not TreeNode or not found");		}		if (sourceTreeNode === this.treeNode) return false;		return true;	},	setAutoExpandTimer: function() {		// set up autoexpand timer		var _this = this;		var autoExpand = function () {			if (dojo.dnd.dragManager.currentDropTarget === _this) {				_this.controller.expand(_this.treeNode);			}		}		this.autoExpandTimer = dojo.lang.setTimeout(autoExpand, _this.autoExpandDelay);	},	getAcceptPosition: function(e, sourceTreeNode) {		var DNDMode = this.DNDMode;		if (DNDMode & dojo.widget.Tree.prototype.DNDModes.ONTO &&			// check if ONTO is allowed localy			!(			  !this.treeNode.actionIsDisabled(dojo.widget.TreeNode.prototype.actions.ADDCHILD) // check dynamically cause may change w/o regeneration of dropTarget			  && sourceTreeNode.parent !== this.treeNode			  && this.controller.canMove(sourceTreeNode, this.treeNode)			 )		) {			// disable ONTO if can't move			DNDMode &= ~dojo.widget.Tree.prototype.DNDModes.ONTO;		}		var position = this.getPosition(e, DNDMode);		//dojo.debug(DNDMode & +" : "+position);		// if onto is here => it was allowed before, no accept check is needed		if (position=="onto" ||			(!this.isAdjacentNode(sourceTreeNode, position)			 && this.controller.canMove(sourceTreeNode, this.treeNode.parent)			)		) {			return position;		} else {			return false;		}	},	onDragOut: function(e) {		this.clearAutoExpandTimer();		this.hideIndicator();	},	clearAutoExpandTimer: function() {		if (this.autoExpandTimer) {			clearTimeout(this.autoExpandTimer);			this.autoExpandTimer = null;		}	},	onDragMove: function(e, dragObjects){		var sourceTreeNode = dragObjects[0].treeNode;		var position = this.getAcceptPosition(e, sourceTreeNode);		if (position) {			this.showIndicator(position);		}	},	isAdjacentNode: function(sourceNode, position) {		if (sourceNode === this.treeNode) return true;		if (sourceNode.getNextSibling() === this.treeNode && position=="before") return true;		if (sourceNode.getPreviousSibling() === this.treeNode && position=="after") return true;		return false;	},	/* get DNDMode and see which position e fits */	getPosition: function(e, DNDMode) {		node = dojo.byId(this.treeNode.labelNode);		var mousey = e.pageY || e.clientY + document.body.scrollTop;		var nodey = dojo.html.getAbsoluteY(node);		var height = dojo.html.getInnerHeight(node);		var relY = mousey - nodey;		var p = relY / height;		var position = ""; // "" <=> forbidden		if (DNDMode & dojo.widget.Tree.prototype.DNDModes.ONTO		  && DNDMode & dojo.widget.Tree.prototype.DNDModes.BETWEEN) {			if (p<=0.3) {				position = "before";			} else if (p<=0.7) {				position = "onto";			} else {				position = "after";			}		} else if (DNDMode & dojo.widget.Tree.prototype.DNDModes.BETWEEN) {			if (p<=0.5) {				position = "before";			} else {				position = "after";			}		}		else if (DNDMode & dojo.widget.Tree.prototype.DNDModes.ONTO) {			position = "onto";		}		return position;	},	getTargetParentIndex: function(sourceTreeNode, position) {		var index = position == "before" ? this.treeNode.getParentIndex() : this.treeNode.getParentIndex()+1;		if (this.treeNode.parent === sourceTreeNode.parent		  && this.treeNode.getParentIndex() > sourceTreeNode.getParentIndex()) {		  	index--;  // dragging a node is different for simple move bacause of before-after issues		}		return index;	},	onDrop: function(e){		// onDragOut will clean position		var position = this.position;//dojo.debug(position);		this.onDragOut(e);		var sourceTreeNode = e.dragObject.treeNode;		if (!dojo.lang.isObject(sourceTreeNode)) {			dojo.raise("TreeNode not found in dragObject")		}		if (position == "onto") {			return this.controller.move(sourceTreeNode, this.treeNode, 0);		} else {			var index = this.getTargetParentIndex(sourceTreeNode, position);			return this.controller.move(sourceTreeNode, this.treeNode.parent, index);		}		//dojo.debug('drop2');	}});dojo.dnd.TreeDNDController = function(treeController) {	// I use this controller to perform actions	this.treeController = treeController;	this.dragSources = {};	this.dropTargets = {};}dojo.lang.extend(dojo.dnd.TreeDNDController, {	listenTree: function(tree) {		//dojo.debug("Listen tree "+tree);		dojo.event.topic.subscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");		dojo.event.topic.subscribe(tree.eventNames.moveFrom, this, "onMoveFrom");		dojo.event.topic.subscribe(tree.eventNames.moveTo, this, "onMoveTo");		dojo.event.topic.subscribe(tree.eventNames.addChild, this, "onAddChild");		dojo.event.topic.subscribe(tree.eventNames.removeNode, this, "onRemoveNode");		dojo.event.topic.subscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");	},	unlistenTree: function(tree) {		//dojo.debug("Listen tree "+tree);		dojo.event.topic.unsubscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");		dojo.event.topic.unsubscribe(tree.eventNames.moveFrom, this, "onMoveFrom");		dojo.event.topic.unsubscribe(tree.eventNames.moveTo, this, "onMoveTo");		dojo.event.topic.unsubscribe(tree.eventNames.addChild, this, "onAddChild");		dojo.event.topic.unsubscribe(tree.eventNames.removeNode, this, "onRemoveNode");		dojo.event.topic.unsubscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");	},	onTreeDestroy: function(message) {		this.unlistenTree(message.source);		// I'm not widget so don't use destroy() call and dieWithTree	},	onCreateDOMNode: function(message) {		this.registerDNDNode(message.source);	},	onAddChild: function(message) {		this.registerDNDNode(message.child);	},	onMoveFrom: function(message) {		var _this = this;		dojo.lang.forEach(			message.child.getDescendants(),			function(node) { _this.unregisterDNDNode(node); }		);	},	onMoveTo: function(message) {		var _this = this;		dojo.lang.forEach(			message.child.getDescendants(),			function(node) { _this.registerDNDNode(node); }		);	},	/**	 * Controller(node model) creates DNDNodes because it passes itself to node for synchroneous drops processing	 * I can't process DnD with events cause an event can't return result success/false	*/	registerDNDNode: function(node) {		if (!node.tree.DNDMode) return;//dojo.debug("registerDNDNode "+node);		/* I drag label, not domNode, because large domNodes are very slow to copy and large to drag */		var source = null;		var target = null;		if (!node.actionIsDisabled(node.actions.MOVE)) {			//dojo.debug("reg source")			var source = new dojo.dnd.TreeDragSource(node.labelNode, this, node.tree.widgetId, node);			this.dragSources[node.widgetId] = source;		}		var target = new dojo.dnd.TreeDropTarget(node.labelNode, this.treeController, node.tree.DNDAcceptTypes, node, node.tree.DNDMode);		this.dropTargets[node.widgetId] = target;	},	unregisterDNDNode: function(node) {		if (this.dragSources[node.widgetId]) {			dojo.dnd.dragManager.unregisterDragSource(this.dragSources[node.widgetId]);			delete this.dragSources[node.widgetId];		}		if (this.dropTargets[node.widgetId]) {			dojo.dnd.dragManager.unregisterDropTarget(this.dropTargets[node.widgetId]);			delete this.dropTargets[node.widgetId];		}	}});

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久午夜精品| 久久精品一区八戒影视| 欧美高清在线视频| 国产一区二区在线看| 欧美疯狂做受xxxx富婆| 1024成人网| www.爱久久.com| 国产三级一区二区三区| 欧美日韩在线精品一区二区三区激情 | 国产乱子伦视频一区二区三区| 欧美成人综合网站| 麻豆国产精品视频| 日韩女优电影在线观看| 黄一区二区三区| 久久免费美女视频| 91精品国产全国免费观看| 久久国产生活片100| ww久久中文字幕| 91在线观看下载| 中文字幕不卡一区| 精品福利在线导航| 成人av资源站| 一区二区三区在线观看动漫| 在线免费观看日本欧美| 午夜电影网亚洲视频| 日韩欧美电影一二三| 欧美裸体一区二区三区| 91精品福利视频| 蜜臀久久久久久久| 日本一区二区三区在线观看| 在线免费观看视频一区| 91网上在线视频| 99re视频精品| 99久久亚洲一区二区三区青草| 国产精品18久久久久久久久| 国产色产综合色产在线视频| 精品国产一区二区在线观看| 日韩一二三四区| 99久久er热在这里只有精品15 | 在线观看免费成人| 色综合天天综合狠狠| 日韩不卡手机在线v区| 亚洲欧洲av一区二区三区久久| 久久精品这里都是精品| 中文字幕乱码一区二区免费| 中文一区二区在线观看| ●精品国产综合乱码久久久久| 18欧美乱大交hd1984| 亚洲男人天堂一区| 久久丝袜美腿综合| 久久久久久夜精品精品免费| 久久精品一区二区三区四区| 26uuu色噜噜精品一区| 国产日韩欧美激情| ●精品国产综合乱码久久久久| 亚洲欧美电影一区二区| 亚洲成人av电影在线| 国产精品成人免费精品自在线观看| 欧美一级精品在线| 久久久综合激的五月天| 欧美激情自拍偷拍| 亚洲综合一区在线| 1024成人网色www| 亚洲午夜久久久久久久久电影院 | 中文字幕中文字幕在线一区 | 夜夜精品视频一区二区 | 久久精工是国产品牌吗| 国产一区二区视频在线| 99精品视频一区| 欧美精品乱码久久久久久| 精品福利一区二区三区免费视频| 亚洲国产高清aⅴ视频| 亚洲综合色视频| 捆绑变态av一区二区三区| 国产成人精品亚洲午夜麻豆| 91成人网在线| 久久影院视频免费| 亚洲欧美日韩国产手机在线 | 亚洲三级在线免费| 综合av第一页| 男女男精品视频网| 99久久精品国产导航| 欧美一区二区三区四区五区 | 久久99深爱久久99精品| 99久久国产综合精品色伊| 欧美一区二区精品在线| 中文字幕在线观看一区| 七七婷婷婷婷精品国产| 99久久精品免费看| 欧美tk丨vk视频| 亚洲精品免费电影| 亚洲一区在线视频| 国产一区二区精品久久| 欧美性猛交一区二区三区精品| 欧美在线观看一区| 久久久久97国产精华液好用吗| 亚洲香蕉伊在人在线观| 成人午夜看片网址| 色就色 综合激情| 久久久精品影视| 图片区小说区区亚洲影院| 成熟亚洲日本毛茸茸凸凹| 日韩一二在线观看| 亚洲国产另类精品专区| 成人高清视频在线| 日韩精品一区二区三区视频在线观看| 亚洲欧美在线观看| 国产成人在线看| 日韩一二三区不卡| 亚洲成人av中文| 色哟哟亚洲精品| 7777精品伊人久久久大香线蕉完整版 | 精品国一区二区三区| 亚洲福利视频一区| 91视频一区二区三区| 欧美国产激情一区二区三区蜜月| 久久精品国产免费| 日韩欧美一区二区视频| 五月天视频一区| 色94色欧美sute亚洲线路二| 国产精品丝袜黑色高跟| 亚洲国产一区在线观看| 91视视频在线直接观看在线看网页在线看 | 亚洲综合偷拍欧美一区色| 不卡视频在线看| 国产精品美女久久久久av爽李琼| 激情都市一区二区| 久久综合成人精品亚洲另类欧美| 奇米色777欧美一区二区| 91精品在线观看入口| 三级精品在线观看| 福利电影一区二区| 7878成人国产在线观看| 香蕉加勒比综合久久| 在线观看不卡视频| 一区二区三区毛片| 欧美日韩情趣电影| 天天色天天操综合| 欧美一区二区在线看| 麻豆91精品91久久久的内涵| 91精品国产91久久久久久一区二区 | 欧美色欧美亚洲另类二区| 亚洲电影一区二区| 欧美美女黄视频| 男女视频一区二区| 久久久久久麻豆| 成人h动漫精品一区二区| 国产精品久久久久久久久免费相片| 99riav久久精品riav| 亚洲一区二区视频在线观看| 欧美日韩不卡一区| 中文字幕字幕中文在线中不卡视频| 成人一区在线观看| 亚洲日本丝袜连裤袜办公室| 欧美午夜精品免费| 丝袜美腿高跟呻吟高潮一区| 欧美一区二区三区免费| 精彩视频一区二区| 555www色欧美视频| 久久99精品一区二区三区| 久久精品欧美日韩精品| 99riav一区二区三区| 亚洲国产aⅴ天堂久久| 日韩免费性生活视频播放| 国产酒店精品激情| 亚洲色图欧美在线| 在线成人av影院| 国产成人aaa| 亚洲高清不卡在线观看| 久久综合久久综合亚洲| 91精品福利在线| 国产一区在线精品| 自拍偷拍亚洲综合| 欧美va在线播放| 99re6这里只有精品视频在线观看| 亚洲亚洲人成综合网络| 久久综合色8888| 欧美午夜精品久久久久久孕妇| 韩国理伦片一区二区三区在线播放 | 欧美片在线播放| 成人精品电影在线观看| 日韩精品欧美成人高清一区二区| 久久久久久一二三区| 欧美日韩精品免费| 成人久久18免费网站麻豆 | 91在线观看污| 卡一卡二国产精品| 亚洲欧美国产毛片在线| 精品久久一区二区三区| 日本韩国精品在线| 国产精品一区在线观看乱码 | 麻豆精品久久精品色综合| 亚洲色图在线看| 久久丝袜美腿综合| 4438成人网| 91久久免费观看| 成人性视频免费网站| 另类小说综合欧美亚洲| 亚洲永久精品国产| 中文字幕一区二区三区在线不卡 |