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

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

?? fancyupload.js

?? jsp CMS全站 無可奈何花落去 士大夫
?? JS
字號:
/**
 * FancyUpload - Flash meets Ajax for beauty uploads
 * 
 * Based on Swiff.Base and Swiff.Uploader.
 * 
 * Its intended that you edit this class to add your
 * own queue layout/text/effects. This is NO include
 * and forget class. If you want custom effects or
 * more output, use Swiff.Uploader as interface
 * for your new class or change this class.
 * 
 * USAGE:
 *  var inputElement = $E('input[type="file"]');
 * 	new FancyUpload(inputElement, {
 * 		swf: '../swf/Swiff.Uploader.swf'
 * 		// more options
 * 	})
 * 
 * 	The target element has to be in an form, the upload starts onsubmit
 * 	by default.
 * 
 * OPTIONS:
 * 
 * 	url: Upload target URL, default is form-action if given, otherwise current page
 *  swf: Path & filename of the swf file, default: Swiff.Uploader.swf
 *  multiple: Multiple files selection, default: true
 *  queued: Queued upload, default: true
 *  types: Object with (description: extension) pairs, default: Images (*.jpg; *.jpeg; *.gif; *.png)
 *  limitSize: Maximum size for one added file, bigger files are ignored, default: false
 *  limitFiles: Maximum files in the queue, default: false
 *  createReplacement: Function that creates the replacement for the input-file, default: false, so a button with "Browse Files" is created
 *  instantStart: Upload starts instantly after selecting a file, default: false
 *  allowDuplicates: Allow duplicate filenames in the queue, default: true
 *  container: Container element for the swf, default: document.body, used only for the first FancyUpload instance, see QUIRKS
 *  optionFxDuration: Fx duration for highlight, default: 250
 *  queueList: The Element or ID for the queue list
 *  onComplete: Event fired when one file is completed
 *  onAllComplete: Event fired when all files uploaded
 * 
 * NOTE:
 * 
 * 	Flash FileReference is stupid, the request will have no cookies
 * 	or additional post data. Only the file is send in $_FILES['Filedata'],
 * 	with a wrong content-type (application/octet-stream).
 * 	When u have sessions, append them as get-data to the the url.
 * 
 * 
 * @version		1.0rc1
 * 
 * @license		MIT License
 * 
 * @author		Harald Kirschner <mail [at] digitarald [dot] de>
 * @copyright	Authors
 */
var FancyUpload = new Class({

	options: {
		url: false,
		swf: 'Swiff.Uploader.swf',
		multiple: true,
		queued: true,
		//types: {'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'},
		types: {'All (*.*)': '*.*'},
		limitSize: false,
		limitFiles: false,
		createReplacement: null,
		instantStart: false,
		allowDuplicates: false,
		optionFxDuration: 250,
		container: null,
		queueList: 'photoupload-queue',
		onComplete: Class.empty,
		onError: Class.empty,
		onCancel: Class.empty,
		onAllComplete: Class.empty
	},

	initialize: function(el, options){
		this.element = $(el);
		this.setOptions(options);
		this.options.url = this.options.url || this.element.form.action || location.href;
		this.fileList = [];

		this.uploader = new Swiff.Uploader({
			onOpen: this.onOpen.bind(this),
			onProgress: this.onProgress.bind(this),
			onComplete: this.onComplete.bind(this),
			onError: this.onError.bind(this),
			onSelect: this.onSelect.bind(this)
		}, this.initializeFlash.bind(this), {
			swf: this.options.swf,
			types: this.options.types,
			multiple: this.options.multiple,
			queued: this.options.queued,
			container: this.options.container
		});
	},

	initializeFlash: function() {
		this.queue = $(this.options.queueList);
		$(this.element.form).addEvent('submit', this.upload.bindWithEvent(this));
		if (this.options.createReplacement) this.options.createReplacement(this.element);
		else {
			new Element('input', {
				type: 'button',
				value: '選擇文件',
				events: {
					click: this.browse.bind(this)
				}
			}).injectBefore(this.element);
			this.element.remove();
		}

	},

	browse: function() {
		this.uploader.browse();
	},

	upload: function(e) {
		if (e) e.stop();
		this.uploader.send(this.options.url);
	},

	onSelect: function(name, size) {
		if (this.uploadTimer) this.uploadTimer = $clear(this.uploadTimer);
		if ((this.options.limitSize && (size > this.options.limitSize))
			|| (this.options.limitFiles && (this.fileList.length >= this.options.limitFiles))
			|| (!this.options.allowDuplicates && this.findFile(name, size) != -1)) return false;
		this.addFile(name, size);
		if (this.options.instantStart) this.uploadTimer = this.upload.delay(250, this);
		return true;
	},


	//上傳
	onOpen: function(name, size) {
		//查找文件是否已經存在,并獲得其索引
		var index = this.findFile(name, size);
		
		this.fileList[index].status = 1;
		
		//如果已經存在文件,則直接返回
		if (this.fileList[index].fx) return;
		
		//否則添加一個文件對象
		var stateObj = $('state_' + name);
		stateObj.innerHTML = '上傳中..';
		
		
		
		//缺少下面的.effect,就無法調用OnComplete
		this.fileList[index].fx = stateObj.effect('width', {});
		
		/**
		this.fileList[index].fx = new Element('div', {'class': 'queue-subloader'}).injectInside(
				new Element('div', {'class': 'queue-loader'}).setHTML('Uploading').injectInside(this.fileList[index].element)
			).effect('width', {
				duration: 200,
				wait: false,
				unit: '%',
				transition: Fx.Transitions.linear
			}).set(0);
		**/
		
		
	},

	onProgress: function(name, bytes, total, percentage) {
		this.uploadStatus(name, total, percentage);
	},

	onComplete: function(name, size) {
		var index = this.uploadStatus(name, size, 100);
		this.fileList[index].fx.element.setHTML('完成');
		this.fileList[index].status = 2;
		this.highlight(index, 'e1ff80');
		this.checkComplete(name, size, 'onComplete');
		
		//以下代碼動態改變某對象的ID與name
		/**
		var titleObj = $('TITLE');
		if(titleObj != null){
			titleObj.id = 'title_' + name;
			titleObj.name = 'title_' + name;
		}
		**/
	},

	/**
	 * Error codes are just examples, customize them according to your server-errorhandling
	 * 
	 */
	onError: function(name, size, error) {
		var msg = "Upload failed (" + error + ")";
		switch(error.toInt()) {
			case 500: msg = "Internal server error, please contact Administrator!"; break;
			case 400: msg = "Upload failed, please check your filesize!"; break;
			case 409: msg = "Could not process image, please choose another!"; break;
			case 415: msg = "Unsupported media type, please upload GIF, PNG, TIFF or JPEG!"; break;
			case 412: msg = "Invalid target, please reload page and try again!"; break;
			case 417: msg = "Photo too small, please keep our photo manifest in mind!"; break;
			case 404: msg = "404 找不到上傳處理文件!"; break;
		}
		var index = this.uploadStatus(name, size, 100);
		
		var stateObj = $('state_' + name);
		stateObj.innerHTML = msg;
		
		//this.fileList[index].fx.element.setStyle('background-color', '#ffd780').setHTML(msg);
		
		
		this.fileList[index].status = 2;
		
		this.highlight(index, 'ffd780');
		
		this.checkComplete(name, size, 'onError');
	},

	checkComplete: function(name, size, fire) {
		this.fireEvent(fire, [name, size]);
		if (this.nextFile() == -1) this.fireEvent('onAllComplete');
	},


	//添加文件
	addFile: function(name, size) {
		if (!this.options.multiple && this.fileList.length) this.remove(this.fileList[0].name, this.fileList[0].size);
		this.fileList.push({
			name: name,
			size: size,
			status: 0,
			percentage: 0,
			//element: new Element('li').setHTML('<span class="queue-file">'+ name +'</span><span class="queue-size" title="'+ size +' byte">~'+ Math.ceil(size / 1000) +' kb</span>').injectInside(this.queue)
			element: new Element('span').injectInside(this.queue)	//添加一個空的span
			
		});
		
		var title = name;
		title = title.substr(0,title.lastIndexOf("."));
		
		var templet = $('photoupload-queue-templet').innerHTML;	
		templet = templet.replaceAll("@NAME",name);
		templet = templet.replaceAll("@SIZE",Math.ceil(size / 1000) + " KB");
		templet = templet.replaceAll("@TITLE",title);
		
		//將上面的HTML代碼,插入到之前添加的空span中
		this.fileList.getLast().element.innerHTML = templet;
		
		
		
		var oper_remove = $('oper_' + name);
		
		new Element('img', {
			'styles': {'cursor':'pointer'},
			src:'../../images/upload/delete.png',
			title: '移除此文件',
			events: {
				click: this.cancelFile.bindWithEvent(this, [name, size])
			}
		}).injectInside(oper_remove);
		
		
		//alert(this.fileList.getLast().element.innerHTML);
		
		/**
		new Element('a', {
			href: 'javascript:void(0)',
			'class': 'input-delete',
			title: 'Remove from queue',
			events: {
				click: this.cancelFile.bindWithEvent(this, [name, size])
			}
		}).injectBefore(this.fileList.getLast().element.getFirst());
		**/
		
		this.highlight(this.fileList.length - 1, 'e1ff80');
		
		
		//總共多少個文件
		$('fileCount').innerHTML = this.fileList.length;
		
	},

	//上傳狀態
	uploadStatus: function(name, size, percentage) {
		var index = this.findFile(name, size);
		
		var stateObj = $('state_' + name);
		stateObj.innerHTML = percentage + ' %';

		//this.fileList[index].fx.start(percentage).element.setHTML(percentage +'%');
		//this.fileList[index].percentage = percentage;

		return index;
	},

	uploadOverview: function() {
		var l = this.fileList.length, i = -1, percentage = 0;
		while (++i < l) percentage += this.fileList[i].percentage;
		return Math.ceil(percentage / l);
	},

	highlight: function(index, color) {
		return this.fileList[index].element.effect('background-color', {duration: this.options.optionFxDuration}).start(color, 'fff');
	},

	cancelFile: function(e, name, size) {
		e.stop();
		this.remove(name, size);
	},

	remove: function(name, size, index) {
		if (name) index = this.findFile(name, size);
		if (index == -1) return;
		if (this.fileList[index].status < 2) {
			this.uploader.remove(name, size);
			this.checkComplete(name, size, 'onCancel');
		}
		this.fileList[index].element.effect('opacity', {duration: this.options.optionFxDuration}).start(1, 0).chain(Element.remove.pass([this.fileList[index].element], Element));
		this.fileList.splice(index, 1);
		return;
	},

	findFile: function(name, size) {
		var l = this.fileList.length, i = -1;
		while (++i < l) if (this.fileList[i].name == name && this.fileList[i].size == size) return i;
		return -1;
	},

	nextFile: function() {
		var l = this.fileList.length, i = -1;
		while (++i < l) if (this.fileList[i].status != 2) return i;
		return -1;
	},

	clearList: function(complete) {
		var i = -1;
		while (++i < this.fileList.length) if (complete || this.fileList[i].status == 2) this.remove(0, 0, 0, i--);
	}
});

FancyUpload.implement(new Events, new Options);


String.prototype.replaceAll = stringReplaceAll;
function stringReplaceAll(AFindText,ARepText){
	var raRegExp = new RegExp(AFindText,"g")
	return this.replace(raRegExp,ARepText)
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美图片一区二区三区| 尤物视频一区二区| 有坂深雪av一区二区精品| 日本欧美韩国一区三区| 成人动漫在线一区| 欧美大片一区二区三区| 亚洲一二三四区| 成人免费精品视频| 欧美tickle裸体挠脚心vk| 一区二区在线电影| aaa亚洲精品一二三区| 精品1区2区在线观看| 青青草原综合久久大伊人精品 | 欧美精选在线播放| 亚洲天堂久久久久久久| 狠狠色丁香久久婷婷综| 6080午夜不卡| 亚洲国产精品久久一线不卡| 99re这里只有精品6| 中文字幕不卡的av| 国产99久久久国产精品免费看| 制服丝袜日韩国产| 日精品一区二区| 欧美日韩国产综合久久 | 亚洲精品欧美激情| 国产久卡久卡久卡久卡视频精品| 91精品国产一区二区三区香蕉| 亚洲一区免费观看| 欧美在线视频日韩| 石原莉奈一区二区三区在线观看| 91极品美女在线| 亚洲欧洲av一区二区三区久久| 国产伦理精品不卡| 国产日韩亚洲欧美综合| 国产成人自拍在线| 国产精品久久久久久久久搜平片 | 日韩av一区二区三区四区| 欧美日韩成人在线一区| 三级欧美在线一区| 欧美成人一区二区| 国产一区二区在线影院| 国产亚洲综合性久久久影院| 国产白丝网站精品污在线入口| 国产欧美一区二区三区鸳鸯浴 | 蜜臀精品一区二区三区在线观看 | 亚洲色图20p| 欧美午夜宅男影院| 久久国产乱子精品免费女| 日韩欧美在线观看一区二区三区| 精东粉嫩av免费一区二区三区| 久久久www成人免费毛片麻豆| 大桥未久av一区二区三区中文| 亚洲国产精品二十页| 日韩精品一区二区三区三区免费| 日本不卡不码高清免费观看| 精品福利一区二区三区免费视频| 国产91在线观看丝袜| 亚洲久草在线视频| 日韩精品最新网址| 丁香亚洲综合激情啪啪综合| 夜夜嗨av一区二区三区四季av| 3d动漫精品啪啪| 成人午夜视频网站| 性做久久久久久免费观看欧美| 26uuu欧美日本| 色久优优欧美色久优优| 蜜桃久久久久久久| 中文字幕在线不卡一区二区三区| 欧美日韩成人综合| 成人一级片在线观看| 亚洲福利视频导航| 国产拍揄自揄精品视频麻豆| 欧美午夜一区二区| 成人午夜电影久久影院| 香蕉久久夜色精品国产使用方法| 久久综合九色综合欧美就去吻| 色哟哟精品一区| 国产毛片一区二区| 天堂午夜影视日韩欧美一区二区| 国产日韩精品久久久| 欧美一区二区大片| 99视频一区二区三区| 青椒成人免费视频| 夜夜嗨av一区二区三区网页| 久久久久久久网| 日韩一区二区精品| 在线精品国精品国产尤物884a| 国产成人在线观看免费网站| 日韩精品高清不卡| 一区二区三区欧美视频| 国产精品午夜久久| 久久视频一区二区| 这里只有精品99re| 欧美色男人天堂| 91免费国产在线| 国产成人精品亚洲日本在线桃色 | 国产综合久久久久久鬼色| 午夜不卡av在线| 一区二区三区日韩| 亚洲精品ww久久久久久p站| 国产欧美一区二区三区网站| 精品国产免费人成电影在线观看四季 | 久久老女人爱爱| 精品盗摄一区二区三区| 制服丝袜日韩国产| 欧美精品黑人性xxxx| 欧美三区在线观看| 欧美日韩精品欧美日韩精品| 一本到高清视频免费精品| 成人18视频在线播放| 粉嫩高潮美女一区二区三区| 国产一区二区三区高清播放| 看电影不卡的网站| 看电影不卡的网站| 韩国欧美国产1区| 国产一区二区三区蝌蚪| 国产久卡久卡久卡久卡视频精品| 久久精品999| 九九九精品视频| 91福利社在线观看| 在线亚洲+欧美+日本专区| 欧美视频自拍偷拍| 91.com在线观看| 精品欧美乱码久久久久久| 精品国一区二区三区| 国产无一区二区| 日本一区二区三区在线观看| 中文字幕日韩精品一区| 亚洲激情网站免费观看| 亚洲成人免费电影| 美女诱惑一区二区| 国产精品 日产精品 欧美精品| 粉嫩一区二区三区性色av| 一本一道波多野结衣一区二区| 在线观看av一区| 日韩精品一区二区三区在线| 国产欧美一区二区三区在线看蜜臀| 国产精品国产三级国产aⅴ入口| 一级日本不卡的影视| 日韩精品一区第一页| 国产一区二区免费在线| 一本一本久久a久久精品综合麻豆| 91黄色免费网站| 欧美成人精品二区三区99精品| 中文av一区二区| 亚洲va欧美va天堂v国产综合| 国内国产精品久久| 日韩免费看网站| 亚洲欧美日韩国产成人精品影院| 亚洲bdsm女犯bdsm网站| 国产精品911| 欧美视频日韩视频| 国产午夜精品福利| 五月综合激情婷婷六月色窝| 国产盗摄女厕一区二区三区| 欧美色图在线观看| 久久久www成人免费毛片麻豆| 亚洲精品乱码久久久久久日本蜜臀| 男女男精品视频网| 色综合一个色综合亚洲| 精品粉嫩超白一线天av| 亚洲综合男人的天堂| 国产永久精品大片wwwapp| 色久综合一二码| 国产欧美日韩另类一区| 日本不卡一区二区| 在线精品视频免费观看| 国产精品污污网站在线观看| 免费的成人av| 在线精品视频一区二区三四 | 制服丝袜日韩国产| 亚洲欧洲日本在线| 国产在线国偷精品免费看| 欧美视频中文字幕| 亚洲欧美激情在线| 国产.欧美.日韩| 精品国产91久久久久久久妲己 | 亚洲视频在线一区观看| 高清不卡一区二区| 精品国产一区二区三区久久久蜜月| 夜夜夜精品看看| 色视频欧美一区二区三区| 国产精品三级av在线播放| 久久爱www久久做| 日韩欧美中文一区二区| 天使萌一区二区三区免费观看| 91浏览器打开| 中文字幕日韩欧美一区二区三区| 国产成人综合在线| 欧美极品美女视频| 国产一区二区不卡| 久久五月婷婷丁香社区| 国产最新精品免费| 精品美女一区二区| 狠狠色丁香久久婷婷综合丁香| 欧美不卡一区二区三区| 久久av中文字幕片| 久久你懂得1024| 成人av网站在线| 亚洲品质自拍视频|