⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mootools-1.2-more.js.svn-base

📁 mooltools源码很不错的源码
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
	drag: function(event){		this.parent(event);		if (this.droppables.length) this.checkDroppables();	},	stop: function(event){		this.checkDroppables();		this.fireEvent('drop', [this.element, this.overed]);		this.overed = null;		return this.parent(event);	}});Element.implement({	makeDraggable: function(options){		return new Drag.Move(this, options);	}});/*
Script: Hash.Cookie.js
	Class for creating, reading, and deleting Cookies in JSON format.

License:
	MIT-style license.
*/

Hash.Cookie = new Class({

	Extends: Cookie,

	options: {
		autoSave: true
	},

	initialize: function(name, options){
		this.parent(name, options);
		this.load();
	},

	save: function(){
		var value = JSON.encode(this.hash);
		if (!value || value.length > 4096) return false; //cookie would be truncated!
		if (value == '{}') this.dispose();
		else this.write(value);
		return true;
	},

	load: function(){
		this.hash = new Hash(JSON.decode(this.read(), true));
		return this;
	}

});

Hash.Cookie.implement((function(){
	
	var methods = {};
	
	Hash.each(Hash.prototype, function(method, name){
		methods[name] = function(){
			var value = method.apply(this.hash, arguments);
			if (this.options.autoSave) this.save();
			return value;
		};
	});
	
	return methods;
	
})());/*Script: Color.js	Class for creating and manipulating colors in JavaScript. Supports HSB -> RGB Conversions and vice versa.License:	MIT-style license.*/var Color = new Native({  	initialize: function(color, type){		if (arguments.length >= 3){			type = "rgb"; color = Array.slice(arguments, 0, 3);		} else if (typeof color == 'string'){			if (color.match(/rgb/)) color = color.rgbToHex().hexToRgb(true);			else if (color.match(/hsb/)) color = color.hsbToRgb();			else color = color.hexToRgb(true);		}		type = type || 'rgb';		switch (type){			case 'hsb':				var old = color;				color = color.hsbToRgb();				color.hsb = old;			break;			case 'hex': color = color.hexToRgb(true); break;		}		color.rgb = color.slice(0, 3);		color.hsb = color.hsb || color.rgbToHsb();		color.hex = color.rgbToHex();		return $extend(color, this);	}});Color.implement({	mix: function(){		var colors = Array.slice(arguments);		var alpha = ($type(colors.getLast()) == 'number') ? colors.pop() : 50;		var rgb = this.slice();		colors.each(function(color){			color = new Color(color);			for (var i = 0; i < 3; i++) rgb[i] = Math.round((rgb[i] / 100 * (100 - alpha)) + (color[i] / 100 * alpha));		});		return new Color(rgb, 'rgb');	},	invert: function(){		return new Color(this.map(function(value){			return 255 - value;		}));	},	setHue: function(value){		return new Color([value, this.hsb[1], this.hsb[2]], 'hsb');	},	setSaturation: function(percent){		return new Color([this.hsb[0], percent, this.hsb[2]], 'hsb');	},	setBrightness: function(percent){		return new Color([this.hsb[0], this.hsb[1], percent], 'hsb');	}});function $RGB(r, g, b){	return new Color([r, g, b], 'rgb');};function $HSB(h, s, b){	return new Color([h, s, b], 'hsb');};function $HEX(hex){	return new Color(hex, 'hex');};Array.implement({	rgbToHsb: function(){		var red = this[0], green = this[1], blue = this[2];		var hue, saturation, brightness;		var max = Math.max(red, green, blue), min = Math.min(red, green, blue);		var delta = max - min;		brightness = max / 255;		saturation = (max != 0) ? delta / max : 0;		if (saturation == 0){			hue = 0;		} else {			var rr = (max - red) / delta;			var gr = (max - green) / delta;			var br = (max - blue) / delta;			if (red == max) hue = br - gr;			else if (green == max) hue = 2 + rr - br;			else hue = 4 + gr - rr;			hue /= 6;			if (hue < 0) hue++;		}		return [Math.round(hue * 360), Math.round(saturation * 100), Math.round(brightness * 100)];	},	hsbToRgb: function(){		var br = Math.round(this[2] / 100 * 255);		if (this[1] == 0){			return [br, br, br];		} else {			var hue = this[0] % 360;			var f = hue % 60;			var p = Math.round((this[2] * (100 - this[1])) / 10000 * 255);			var q = Math.round((this[2] * (6000 - this[1] * f)) / 600000 * 255);			var t = Math.round((this[2] * (6000 - this[1] * (60 - f))) / 600000 * 255);			switch (Math.floor(hue / 60)){				case 0: return [br, t, p];				case 1: return [q, br, p];				case 2: return [p, br, t];				case 3: return [p, q, br];				case 4: return [t, p, br];				case 5: return [br, p, q];			}		}		return false;	}});String.implement({	rgbToHsb: function(){		var rgb = this.match(/\d{1,3}/g);		return (rgb) ? hsb.rgbToHsb() : null;	},		hsbToRgb: function(){		var hsb = this.match(/\d{1,3}/g);		return (hsb) ? hsb.hsbToRgb() : null;	}});/*Script: Group.js	Class for monitoring collections of eventsLicense:	MIT-style license.*/var Group = new Class({	initialize: function(){		this.instances = Array.flatten(arguments);		this.events = {};		this.checker = {};	},	addEvent: function(type, fn){		this.checker[type] = this.checker[type] || {};		this.events[type] = this.events[type] || [];		if (this.events[type].contains(fn)) return false;		else this.events[type].push(fn);		this.instances.each(function(instance, i){			instance.addEvent(type, this.check.bind(this, [type, instance, i]));		}, this);		return this;	},	check: function(type, instance, i){		this.checker[type][i] = true;		var every = this.instances.every(function(current, j){			return this.checker[type][j] || false;		}, this);		if (!every) return;		this.checker[type] = {};		this.events[type].each(function(event){			event.call(this, this.instances, instance);		}, this);	}});/*Script: Assets.js	Provides methods to dynamically load JavaScript, CSS, and Image files into the document.License:	MIT-style license.*/var Asset = new Hash({	javascript: function(source, properties){		properties = $extend({			onload: $empty,			document: document,			check: $lambda(true)		}, properties);				var script = new Element('script', {'src': source, 'type': 'text/javascript'});				var load = properties.onload.bind(script), check = properties.check, doc = properties.document;		delete properties.onload; delete properties.check; delete properties.document;				script.addEvents({			load: load,			readystatechange: function(){				if (['loaded', 'complete'].contains(this.readyState)) load();			}		}).setProperties(properties);						if (Browser.Engine.webkit419) var checker = (function(){			if (!$try(check)) return;			$clear(checker);			load();		}).periodical(50);				return script.inject(doc.head);	},	css: function(source, properties){		return new Element('link', $merge({			'rel': 'stylesheet', 'media': 'screen', 'type': 'text/css', 'href': source		}, properties)).inject(document.head);	},	image: function(source, properties){		properties = $merge({			'onload': $empty,			'onabort': $empty,			'onerror': $empty		}, properties);		var image = new Image();		var element = $(image) || new Element('img');		['load', 'abort', 'error'].each(function(name){			var type = 'on' + name;			var event = properties[type];			delete properties[type];			image[type] = function(){				if (!image) return;				if (!element.parentNode){					element.width = image.width;					element.height = image.height;				}				image = image.onload = image.onabort = image.onerror = null;				event.delay(1, element, element);				element.fireEvent(name, element, 1);			};		});		image.src = element.src = source;		if (image && image.complete) image.onload.delay(1);		return element.setProperties(properties);	},	images: function(sources, options){		options = $merge({			onComplete: $empty,			onProgress: $empty		}, options);		if (!sources.push) sources = [sources];		var images = [];		var counter = 0;		sources.each(function(source){			var img = new Asset.image(source, {				'onload': function(){					options.onProgress.call(this, counter, sources.indexOf(source));					counter++;					if (counter == sources.length) options.onComplete();				}			});			images.push(img);		});		return new Elements(images);	}});/*Script: Sortables.js	Class for creating a drag and drop sorting interface for lists of items.License:	MIT-style license.*/var Sortables = new Class({	Implements: [Events, Options],	options: {/*		onSort: $empty,		onStart: $empty,		onComplete: $empty,*/		snap: 4,		opacity: 1,		clone: false,		revert: false,		handle: false,		constrain: false	},	initialize: function(lists, options){		this.setOptions(options);		this.elements = [];		this.lists = [];		this.idle = true;				this.addLists($$($(lists) || lists));		if (!this.options.clone) this.options.revert = false;		if (this.options.revert) this.effect = new Fx.Morph(null, $merge({duration: 250, link: 'cancel'}, this.options.revert));	},	attach: function(){		this.addLists(this.lists);		return this;	},	detach: function(){		this.lists = this.removeLists(this.lists);		return this;	},	addItems: function(){		Array.flatten(arguments).each(function(element){			this.elements.push(element);			var start = element.retrieve('sortables:start', this.start.bindWithEvent(this, element));			(this.options.handle ? element.getElement(this.options.handle) || element : element).addEvent('mousedown', start);		}, this);		return this;	},	addLists: function(){		Array.flatten(arguments).each(function(list){			this.lists.push(list);			this.addItems(list.getChildren());		}, this);		return this;	},	removeItems: function(){		var elements = [];		Array.flatten(arguments).each(function(element){			elements.push(element);			this.elements.erase(element);			var start = element.retrieve('sortables:start');			(this.options.handle ? element.getElement(this.options.handle) || element : element).removeEvent('mousedown', start);		}, this);		return $$(elements);	},	removeLists: function(){		var lists = [];		Array.flatten(arguments).each(function(list){			lists.push(list);			this.lists.erase(list);			this.removeItems(list.getChildren());		}, this);		return $$(lists);	},	getClone: function(event, element){		if (!this.options.clone) return new Element('div').inject(document.body);		if ($type(this.options.clone) == 'function') return this.options.clone.call(this, event, element, this.list);		return element.clone(true).setStyles({			'margin': '0px',			'position': 'absolute',			'visibility': 'hidden',			'width': element.getStyle('width')		}).inject(this.list).position(element.getPosition(element.getOffsetParent()));	},	getDroppables: function(){		var droppables = this.list.getChildren();		if (!this.options.constrain) droppables = this.lists.concat(droppables).erase(this.list);		return droppables.erase(this.clone).erase(this.element);	},	insert: function(dragging, element){		var where = 'inside';		if (this.lists.contains(element)){			this.list = element;			this.drag.droppables = this.getDroppables();		} else {			where = this.element.getAllPrevious().contains(element) ? 'before' : 'after';		}		this.element.inject(element, where);		this.fireEvent('sort', [this.element, this.clone]);	},	start: function(event, element){		if (!this.idle) return;		this.idle = false;		this.element = element;		this.opacity = element.get('opacity');		this.list = element.getParent();		this.clone = this.getClone(event, element);				this.drag = new Drag.Move(this.clone, {			snap: this.options.snap,			container: this.options.constrain && this.element.getParent(),			droppables: this.getDroppables(),			onSnap: function(){				event.stop();				this.clone.setStyle('visibility', 'visible');				this.element.set('opacity', this.options.opacity || 0);				this.fireEvent('start', [this.element, this.clone]);			}.bind(this),			onEnter: this.insert.bind(this),			onCancel: this.reset.bind(this),			onComplete: this.end.bind(this)		});				this.clone.inject(this.element, 'before');		this.drag.start(event);	},	end: function(){

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -