$(document).ready(function(){
	/*调整进度条位置*/
	$('#progress').css('top',(document.documentElement.clientHeight*0.8+document.documentElement.scrollTop)/2);
})
//分片上传时每片的大小，单位MB
var ZONE_SIZE = 5;
//兼容火狐、IE8   
//显示遮罩层    
function showMask(mark){     
	mark.css("height",$(document).height());     
	mark.css("width",$(document).width());     
	mark.show();     
}
//隐藏遮罩层  
function showProgress(progress){     
	progress.show();     
}
//隐藏遮罩层  
function hideMask(mark){     
	mark.hide();     
}
/*延迟0.5秒，关闭进度条*/
function closeProgress(){
	setTimeout("hideMask($('#mask_layer'));$('#progress').hide();$('#progress span').css('width','0.1%');",500)
}

/*
 * 上传rar压缩包
 * @param id			上传按钮id
 * @param label			上传按钮文字
 * @param modal			菜单   1-品牌管理    2-媒体管理   3-品牌植入
 * @param auto			是否自动上传  true/false
 * @param button		手动上传时的提交按钮id
 * @param btnClass		按钮样式
 * @param unrar			是否解压并上传oss
 * @param callbackFunc	回调函数
 * 
 **/
function uploadRar(id, label, modal, auto, button, btnClass, unrar, callbackFunc){
	Interval_Id, progress_key="", p_callback = "", p_url="";
	
	var uploader;// 实例化     
	uploader = WebUploader.create({
		auto : auto, //是否自动上传  
		pick : {
			id : '#'+id,
			name : 'file', //这个地方 name 没什么用，和fileVal 配合使用。  
			label : label,
			multiple : false //默认为true，true表示可以多选文件，HTML5的属性  
		},
		formData: { "modal": modal},
		swf : '../Uploader.swf', //在这里必需要引入swf文件，webuploader初始化要用  
		fileVal : 'file', //提交到到后台，是要用"multiFile"这个名称属性来取文件的  
		server : _PUBLIC_+"file/upload_rar.do",
		duplicate : true,//是否可重复选择同一文件  
		resize : false,
		chunked : true, //分片处理  
		chunkSize : ZONE_SIZE * 1024 * 1024, //每片20M  
		chunkRetry : 2,//如果失败，则不重试  
		threads : 2,//上传并发数。允许同时最大上传进程数。  
		fileNumLimit : 1,//上传的文件总数  
		// 禁掉全局的拖拽功能。  
		disableGlobalDnd : true
	});
	
	if(btnClass != undefined && btnClass != ''){
		$('#'+id).find('div.webuploader-pick').removeClass('webuploader-pick').addClass(btnClass);
	}

	// 当有文件被添加进队列的时候
	uploader.on('fileQueued', function(file) {
		var fname = file.name;
		if(fname.indexOf('.rar') > 0 || fname.indexOf('.zip') > 0){
			var $percent = $('#progress'), $mask = $('#mask_layer');
			//避免重复创建遮罩层
			if (!$mask.length) {
				$mask = $('<div id="mask_layer" class="mask_layer"></div>')
				.appendTo($('body'));
			}
			// 避免重复创建进度条
			if (!$percent.length) {
				$percent = $(
						'<div id="progress" class="progress-bar blue stripes hide">'
						+ '<em>正在上传文件...</em>'
						+ '<span style="width:0.1%;"></span>'
						+ '</div>').appendTo($('body'));
			}
			
			if(auto){
				showMask($mask);
				showProgress($percent);
			}
		}else{
			alert("请上传.rar压缩文件");
			uploader.cancelFile(file);
			uploader.removeFile(file, true);
		}
	});

	uploader.on('uploadProgress', function(file, percentage) {
		var $li = $('#' + file.id), $percent = $('#progress');

		// 避免重复创建
		if (!$percent.length) {
			$percent = $('<div id="progress" class="progress-bar blue stripes hide">'
						+ '<em>正在上传...</em>'
						+ '<span style="width:0.1%;"></span>'
						+ '</div>').appendTo($('body'));
		}else{
			$percent.find('em').html('正在上传...');
		}

		$percent.find('span').css('width', percentage * 100 + '%');
	});

	//当所有文件上传结束时触发  
	uploader.on("uploadFinished", function() {
	})

	//当文件上传成功时触发。  
	uploader.on("uploadSuccess", function(file, response) {
		p_callback = callbackFunc;
		if(response.code == '1'){
			if(unrar){
				//解压上传oss
				dealRar(response, modal);
			}else{
				//关闭进度条
				closeProgress();
			}
		}else{
			alert(response.msg);
			//关闭进度条
			closeProgress();
		}
		uploader.cancelFile(file);
		uploader.removeFile(file, true);
		uploader.reset();
	});

	uploader.on("uploadError", function(file) {
		alert("上传出错了!");
		closeProgress();
		
		uploader.cancelFile(file);
		uploader.removeFile(file, true);
		uploader.reset();
	});

	//如果是手动上传,用下面的事件,并启用jsp页面上的上传按钮  
	if(!auto){
		$("#"+button).on("click", function() {  
			showMask($mask);
		    uploader.upload();
		})
	}
}
/*
 * 上传图片
 * @param id			上传按钮id
 * @param label			上传按钮文字
 * @param modal			菜单   1-媒体管理   2-品牌管理  3-品牌植入
 * @param auto			是否自动上传  true/false
 * @param button		手动上传时的提交按钮id
 * @param btnClass		按钮样式
 * @param callbackFunc	回调函数
 */
function uploadImg(id, label, modal, auto, button, btnClass, callbackFunc){
	Interval_Id, progress_key="", p_callback = "", p_url="";
	var uploader;// 实例化
	
	uploader = WebUploader.create({
		auto : auto, //是否自动上传  
		pick : {
			id : '#'+id,
			name : 'file', //这个地方 name 没什么用，和fileVal 配合使用。  
			label : label,
			multiple : false
		//默认为true，true表示可以多选文件，HTML5的属性  
		},
		formData: { "modal": modal},
		swf : '../Uploader.swf', //在这里必需要引入swf文件，webuploader初始化要用  
		fileVal : 'file', //提交到到后台，是要用"multiFile"这个名称属性来取文件的  
		server : _PUBLIC_+"file/upload_img.do",
		duplicate : true,//是否可重复选择同一文件  
		resize : false,
		chunked : false, //分片处理  
		chunkRetry : 2,//如果失败，则不重试  
		threads : 1,//上传并发数。允许同时最大上传进程数。  
		fileNumLimit : 1,//上传的文件总数  
		// 禁掉全局的拖拽功能。  
		disableGlobalDnd : true,
		 // 只允许选择图片文件。
	    accept: {
	        title: 'Images',
	        extensions: 'gif,jpg,jpeg,bmp,png',
	        mimeTypes: 'image/jpg,image/jpeg,image/png'
	    }
	});
	if(btnClass != undefined && btnClass != ''){
		$('#'+id).find('div.webuploader-pick').removeClass("webuploader-pick").addClass(btnClass);
	}

	// 当有文件被添加进队列的时候
	uploader.on('fileQueued', function(file) {
		var $percent = $('#progress'), $mask = $('#mask_layer');
		//避免重复创建遮罩层
		if (!$mask.length) {
			$mask = $('<div id="mask_layer" class="mask_layer"></div>')
					.appendTo($('body'));
		}
		// 避免重复创建进度条
		if (!$percent.length) {
			$percent = $(
					'<div id="progress" class="progress-bar blue stripes hide">'
							+ '<em>正在上传图片...</em>'
							+ '<span style="width:0.1%;"></span>'
							+ '</div>').appendTo($('body'));
		}else{
			$percent.find('em').html('正在上传图片...');
		}
		if(auto){
			showMask($mask);
			showProgress($percent);
		}
	});

	uploader.on('uploadProgress', function(file, percentage) {
		var $li = $('#' + file.id), $percent = $('#progress');

		// 避免重复创建
		if (!$percent.length) {
			$percent = $('<div id="progress" class="progress-bar blue stripes hide">'
						+ '<em>正在上传...</em>'
						+ '<span style="width:0.1%;"></span>'
						+ '</div>').appendTo($('body'));
		}

		$percent.find('span').css('width', percentage * 50 + '%');
	});

	//当所有文件上传结束时触发  
	uploader.on("uploadFinished", function() {
	})

	//当文件上传成功时触发。  
	uploader.on("uploadSuccess", function(file, response) {
		progress_key = response.uploadId;
		p_callback = callbackFunc;
		p_url = response.url;
		/*读取进度*/
		Interval_Id = setInterval(progressFunc2,1000);
		
		uploader.cancelFile(file);
		uploader.removeFile(file, true);
		uploader.reset();
	});

	uploader.on("uploadError", function(file) {
		alert("上传出错了!");
		closeProgress();
		
		uploader.cancelFile(file);
		uploader.removeFile(file, true);
		uploader.reset();
	});

	//如果是手动上传,用下面的事件,并启用jsp页面上的上传按钮  
	if(!auto){
		$("#"+button).on("click", function() {  
			showMask($mask);
		    uploader.upload();
		})
	}
}
/*
 * 进度条
 */
var Interval_Id, progress_key="", p_callback = "", p_url="";
/*
 * 解析压缩包并上传oss
 * @param path			文件路径
 * @param modal			菜单   0-品牌管理    1-媒体管理   2-品牌植入
 * */
function dealRar(res,modal){
	setTimeout('$(\'#progress\').find(\'em\').html(\'正在解析压缩包...\');$(\'#progress\').find(\'span\').css(\'width\', \'0.1%\');',500);
	
	if(res != undefined && res != ''){
		/*使用时间戳作为进度条唯一性标识*/
		progress_key = (new Date()).valueOf();
		/*读取进度*/
		Interval_Id = setInterval(progressFunc,1000);
		
		$.ajax({
			type : "post",
			url : _PUBLIC_+"file/oss_rar.do",
			data : {"path":res.filePath,"name":res.fileName,"key":progress_key,"modal":modal},
			beforeSend : function(XMLHttpRequest) {
			},
			success : function(res) {
				if(res.code == '1'){
				}else{
					if (Interval_Id != undefined) {
						//清除setInterval
						clearInterval(Interval_Id);
						Interval_Id = null;
					}
					/*延迟1秒，关闭进度条*/
					closeProgress();
					
					alert(res.msg);
				}
			},
			error : function() {
			}
		});
	}
}

/*
 * 读取进度条
 */
function progressFunc(){
	/*调整进度条位置*/
	$('#progress').css('top',(document.documentElement.clientHeight*0.8+document.documentElement.scrollTop)/2);
	
	$.ajax({
		type : "post",
		url : _PUBLIC_+"file/progress.do",
		data : {"key":progress_key},
		beforeSend : function(XMLHttpRequest) {
		},
		success : function(data) {
			if(data != undefined){
				var progress = data.progress;
				if(progress == undefined || progress == '0'){progress == '0.1'}
				
				progress = progress >= 100 ? 100:progress;
				$('#progress span').css('width',progress+'%');
				
				if(progress >= 20){
					$('#progress').find('em').html('正在上传图片到图片服务器...');
				}
				if (progress >= 100) {
					if (Interval_Id != undefined) {
						//清除setInterval
						clearInterval(Interval_Id);
						Interval_Id = null;
					}
					/*延迟1秒，关闭进度条*/
					closeProgress();
					
					if(p_callback != undefined && p_callback != ''){
						eval(p_callback+'("'+p_url+'")');
					}
				}
			}
		},
		error : function() {
		}
	});
}

/*
 * 读取进度条
 */
function progressFunc2(){
	/*调整进度条位置*/
	$('#progress').css('top',(document.documentElement.clientHeight*0.8+document.documentElement.scrollTop)/2);
	
	$.ajax({
		type : "post",
		url : _PUBLIC_+"file/progress2.do",
		data : {"key":progress_key},
		beforeSend : function(XMLHttpRequest) {
		},
		success : function(data) {
			if(data != undefined){
				var progress = data.progress;
				if(progress == undefined || progress == '0'){progress == '0.1'}
				
				progress = progress >= 100 ? 100:(progress*0.5+50);
				$('#progress span').css('width',progress+'%');
				
				if (progress >= 100) {
					if (Interval_Id != undefined) {
						//清除setInterval
						clearInterval(Interval_Id);
						Interval_Id = null;
					}
					/*延迟1秒，关闭进度条*/
					closeProgress();
					
					if(p_callback != undefined && p_callback != ''){
						eval(p_callback+'("'+p_url+'")');
					}
				}
			}
		},
		error : function() {
		}
	});
}