var ddzone='f_upload';
//var jqxhr;
var jqxhr=new Object();
var fids = [];
var upfiles = [];
var pcnt=0;
var sessid="39lll3od61rlvbd0885821nmc6";
var dlurl="https://okurin.bitpark.co.jp/d.php?";
var upurl="fupload.php";
var fsize_limit="500MB";
var fupload_limit="10";
var fqueue_limit="10";
var responserr="ERR";
var responsok="OK";
jQuery.noConflict(); 
var j$ = jQuery; 
var queuedCnt=0;
var completeCnt=0;
var successCnt=0;
var fileSizeTotal=0;
var progressSize2=0;
var fid ;
var formid;
var selfCancel;
var fuploadedCnt=0;
var maxfCnt=10;
var uploadable;
var timer = null;
var uperrurl = 'https://okurin.bitpark.co.jp/fuperr.html';
var fsize = function(n) {
	if(n <= 1024) return (Math.round(n * 10) / 10) + "byte"
	if(n <= 1024*1024) return (Math.round(n / 1024 * 10) / 10) + "KB"
	if(n <= 1024*1024*1024) return (Math.round(n / 1024 / 1024 * 10) / 10) + "MB"
	if(n <= 1024*1024*1024*1024) return (Math.round(n / 1024 / 1024 / 1024 * 10) / 10) + "GB"
};
function gaqTrackPV(page_name){
	_gaq.push(['_trackPageview', page_name]);
}
function gaqTrackEvent(category, action, label){
	_gaq.push(['_trackEvent', category, action, label]);
}
function uniteUrlDisplay(){
	j$('#united_url').val("");
	j$("a.united_url_link").attr('href',"");
	var cnt = j$("tr:visible[class=uploadedFile]").length;
	if(cnt > 1){
//		j$.post(upurl,{"sessid" : sessid , action:'unit'},function(ret){
//			if(ret){
//				var url = dlurl + ret;
//				j$('#united_url').val(url);
//				j$("a.united_url_link").attr('href',url);
//			}
//		});
		j$('#unite').show();
		j$("#unite_btn").show();
		j$('#united_url').hide();
		j$("a.united_url_link").hide();
	}else{
		j$('#unite').hide();
		j$("#unite_btn").hide();
	}
}
function deleteButton(obj){
//	j$("img.del_btn").css('cursor','pointer').on("click",function(){
		var prefix = "fc-";
		var fcd = obj.parent('td').parent('tr').attr('id').substring(prefix.length);
		var fname = j$("#" + prefix + fcd).find("span.upfile_name").text().split(String.fromCharCode(8203)).join('');
		if(confirm("アップロードファイル\n「" + fname + "」\nを削除しますか?")){
			j$.post(upurl,{"sessid" : sessid , action:'del',code:fcd},function(ret){
				if(ret==responsok){
					j$('#' + prefix + fcd).hide('fast',function(){
						obj.remove();
						uniteUrlDisplay();
						//ファイル一覧更新
						fileTableReload();
						//グラフ更新
						graphReload();
					});
					
				}
			});
		}
//	});
}
function atCon(){
	j$.timer(300000, function (timer) {
		j$.post(upurl,{"sessid" : sessid , action:'atcon'});
	});
}
function douizumi(){
	if(j$('.kiyaku_doui').attr('checked')){
		j$(this).attr('checked', "checked");
		j$("#step1").slideUp('fast');
		j$("#f_upload").show();
		j$("div.uploadedFile").show('fast');
		j$("#upload_list").show('fast');
	}else{
		j$(this).attr('checked', "");
		j$("#step1").slideDown();
		j$("#f_upload").hide();
		j$("div.uploadedFile").hide();
		j$("#upload_list").hide();
	}
	j$('.kiyaku_doui').click(
		function(){
			if(j$(this).attr('checked')){
				j$(this).attr('checked', "checked");
				j$("#step1").slideUp('fast');
				j$("#f_upload").show();
				j$("div.uploadedFile").show('fast');
				j$("#upload_list").show('fast');
			}else{
				j$(this).attr('checked', "");
				j$("#step1").slideDown();
				j$("#f_upload").hide();
				j$("div.uploadedFile").hide();
				j$("#upload_list").hide();
			}
			uniteUrlDisplay();
		}
	);
}
function getuf(){
	j$.getJSON(upurl,{"sessid" : sessid ,'d': new Date().getTime() , action:'getuf'},function(json){
		j$.each ( json, function ( row, obj ) {
			if(obj){
				fid = "fc-" + obj.c;
				j$('#upfile_info').clone().removeAttr('id').attr('id', fid).attr('class', "uploadedFile").insertAfter('#upfile_info').show();
				j$("#" + fid).find(".uploaded").show();
				j$("#" + fid).find(".uploading").hide();
				j$("#" + fid).find("span.upfile_name").html(obj.n);
				j$("#" + fid).find("span.upfile_size").text(fsize(obj.s));
				var url = dlurl + obj.u;
				j$("#" + fid).find("input.url_txt_box").val(url);
				j$("#" + fid).find("a.upfile_url_link").attr('href',url);
			}
		});
		uniteUrlDisplay();
	});
}
function graphReload(){
	j$.post(upurl,{"sessid" : sessid , "action":'graph'},function(ret){
		if(ret){
			j$("#graph").html(ret);
			j$("#available_size").text(fsize(j$("#limit_size").text()));
		}
	});
}
function fileTableReload(){
	if(j$("tr:visible[class=uploadedFile]").length > 0){
		j$("#nodata_msg").hide();
		j$("#upfile_headder").show();
	}else{
		j$("#nodata_msg").show();
		j$("#upfile_headder").hide();
	}
}
j$(function () {
	j$('#js_alert').hide();
	j$('#step1').show();
	douizumi();
	atCon();
	uploadable=true;
	j$("#upfile_info").hide();
	j$("#progressanime").hide();
	j$("img.del_btn").css('cursor','pointer').on("click",function(){
		deleteButton(j$(this));
	});
	uniteUrlDisplay();
	fileTableReload();
	graphReload();
	j$("a.united_url_link").on("click",function(){
		if (this.href.match("&t") != null){
			rep = new RegExp("&t=(\d|\.)+");
			this.href = this.href.replace(rep,"");
		}
		this.href += "&t=" + parseInt(Math.random()*100);
	});
	
	j$(".upfile_name").wb();
	var fsize = function(n) {
		if(n <= 1024) return (Math.round(n * 10) / 10) + "byte"
		if(n <= 1024*1024) return (Math.round(n / 1024 * 10) / 10) + "KB"
		if(n <= 1024*1024*1024) return (Math.round(n / 1024 / 1024 * 10) / 10) + "MB"
		if(n <= 1024*1024*1024*1024) return (Math.round(n / 1024 / 1024 / 1024 * 10) / 10) + "GB"
	};
	var selfCancel = false;
	var selectedFileSizeTotal=0;
	var bytesLoaded = [];
	var msg1=j$("#fupmsg").text();
	var msg2="ただ今アップロード中です。しばらくお待ちください。";
	
	j$('#select_btn').on('click', function() {
		if(queuedCnt > 0){
			alert(msg2);
			return false;
		}
		j$('#file_select').click();
	});
	j$('#file_select').on('change', function() {
		fileUplod(this.files);
	});
	
	window.addEventListener('dragover', function (event) {
		event.preventDefault();
	}, false);
	// ドロップ時のイベント
	document.getElementById(ddzone).addEventListener('drop', function (event) {
		event.preventDefault();
		var dt = event.dataTransfer;
		return fileUplod(dt.files);
	}, false);
	function fileUplod(files){
		if(queuedCnt > 0){
			alert(msg2);
			return false;
		}
//		console.log('files.length = ' + files.length);
		if (files.length === 0) {
			return false;
		}
		
		j$("#fupmsg").text(msg2);
		// メッセージエリアのメッセージをクリア
		result = j$('#result');
		result.html('');
		selectedFileSizeTotal=0;
		bytesLoaded = [];
		fids = [];
		upfiles = [];
		jqxhr=new Object();
		max_size=j$("#limit_size").text();
		for (var i = 0; i < files.length; i++) {
			///ファイルサイズ合計取得
			selectedFileSizeTotal += files[i].size;
			if(files[i].size > max_size){
				alert('アップロードできるのはファイルサイズは合計で' + fsize_limit+'までです。');
				init_upload();
				return false;
			}
			if(selectedFileSizeTotal > max_size){
				alert('アップロードできるのはファイルサイズは合計で' + fsize_limit+'までです。');
				init_upload();
				return false;
			}
			if(files.length > fqueue_limit){
				alert('同時にアップロードできるのは' + fqueue_limit+'個までです。');
				init_upload();
				return false;
			}else{
				if(files[i].size > 0){
					fid = "ft-" + i + '-' + new Date().getTime() ;
					fids.push(fid);
					upfiles.push(files[i]);
					fileSizeTotal=fileSizeTotal+files[i].size;
				}
				
			}
		}
		
		if(selectedFileSizeTotal===0){
			init_upload();
			return false;
		}
		
		queuedCnt=fids.length;
		
		/// ドロップされたファイルを順次送信
		for (i = 0; i < fids.length; i++) {
			fid =fids[i];
			jqxhr[fid] = upload(upfiles[i], fid, i);
		}
		
		return true;
	}
	// ファイルアップロード
	function upload(file, fid, i) {
		// データを送信する
		var fd = new FormData();
		
		if(j$("#limit_size").text() < file.size){
			alert("【アップロードエラー】ファイルサイズが大きすぎます。\n" + "現在アップロード可能なサイズ:" + fsize(j$("#limit_size").text()) + "\n「" + file.name + "」(ファイルサイズ:" + fsize(file.size) + ")\n" );
			uploadable=false;
		}else{
			uploadable=true;
		}
		selfCancel = false;
		if(file_name_check(file.name)&&(uploadable)) {
			j$("#progressanime").show();
			j$("div").find(".uploading").hide;
//			console.log(' $("#upfile_info").clone() id => ' + fid);
			
			j$('#upfile_info').clone().removeAttr('id').attr('id', fid).attr('class', "uploadingFile").insertAfter('#upfile_info').show();
			j$("#" + fid).find(".uploaded").hide();
			j$("#" + fid).find(".uploading").show();
			//////////j$("#" + fid).find("div.progressbar").reportprogress(0);
			j$("#" + fid).find("div.progressbar").reportprogress(0, '0 / ' + fsize(file.size));
			////j$("#" + fid).find("span.upfile_name").html(file.name);
			j$("#" + fid).find("span.upfile_name").html(file.name.split('').join(String.fromCharCode(8203)));
			j$("#" + fid).find("span.upfile_size").html(fsize(file.size));
			//「規約に同意する」チェックボックス無効化
//			j$('.kiyaku_doui').attr('disabled',true);
			//「URLまとめる」ボタン無効化
//			j$('#unite_btn').attr('disabled',true);
			j$("#select_btn").attr('disabled',true);
			j$("#" + fid).find(".cancel").css('cursor','pointer').on("click",function(){
				selfCancel = true;
				tgtid = j$(this).parent('div').parent('div').attr('id');
				jqxhr[tgtid].abort();
				j$("#" + tgtid).remove();
			});
		}
		fd.append("fileup", file, file.name);
		fd.append("action", 'confirm');
		fd.append("sessid", sessid);
		// ajaxを使用してアップロード
		var retxhr=j$.ajax(upurl, {
			xhr : function() {
				XHR = j$.ajaxSettings.xhr();
				if (XHR.upload) {
					XHR.upload.addEventListener('load',function(e) {
						completeCnt=completeCnt+1;
//						console.log('i => ' + i);
//						console.log('fid => ' + fid);
//						console.log(file.name + ' => load');
//						console.log("転送が完了しました。");
					}, false);
					XHR.upload.addEventListener('loadstart',function(e) {
						//queuedCnt++;
//						console.log('i => ' + i);
//						console.log('fid => ' + fid);
//						console.log(file.name + ' => loadstart');
//						console.log(e.loaded,e.total);
					}, false);
					XHR.upload.addEventListener('loadend',function(e) {
//						console.log(file.name + ' => loadend');
//						console.log(e.loaded,e.total);
					}, false);
					XHR.upload.addEventListener('abort',function(e) {
						queuedCnt--;
//						console.log(file.name + ' => abort');
//						console.log(e.loaded,e.total);
//						console.log('queuedCnt = ' + queuedCnt  + ' completeCnt = '+completeCnt   + ' successCnt = '+successCnt );
						alert('キャンセルされました。');
						j$("#" + fid).remove();
						
						if(queuedCnt==0){
							init_upload();
						}
					}, false);
					XHR.upload.addEventListener('error',function(e) {
						queuedCnt--;
//						console.log(file.name + ' => error');
//						console.log(e.loaded,e.total);
//						console.log('queuedCnt = ' + queuedCnt  + ' completeCnt = '+completeCnt   + ' successCnt = '+successCnt );
						alert('エラーが発生しました。');
						j$("#" + fid).remove();
						if(queuedCnt==0){
							init_upload();
						}
					}, false);
					XHR.upload.addEventListener('progress',function(e) {
//						console.log('i => ' + i);
//						console.log('fid => ' + fid);
//						console.log('e.loaded => ' + e.loaded);
//						console.log('e.total => ' + e.total);
						
						progressSize = parseInt(e.loaded / e.total * 10000) / 100;
//						console.log('progressSize => ' + progressSize);
						if(progressSize==100){
							j$("#" + fid).hide();
						}
						
						j$("#" + fid).find("div.progressbar").reportprogress( progressSize, ' (' + fsize(e.loaded) + ' / ' + fsize(file.size) + ')');
						j$("#" + fid).find("span.upfile_name").text(file.name);
						
						var sum_loaded=0;
						bytesLoaded[i] = e.loaded;
						bytesLoaded.forEach(function(bytes) {
							sum_loaded += bytes;
						});
						var total_progre = parseInt(sum_loaded / selectedFileSizeTotal * 10000) / 100;
//						console.log('sum_loaded => ' + sum_loaded);
//						console.log('selectedFileSizeTotal => ' + selectedFileSizeTotal);
//						console.log('total_progre => ' + total_progre);
						
						if(total_progre > 100){
							total_progre=100;
						}
						
						pcnt++;
						//console.log(' pcnt => ' + pcnt);
						if(((pcnt % 1)==0)||((pcnt % 2)==0)||((pcnt % 3)==0)){
							var moveto = parseInt((j$("#progressanime").width() - j$("#runokurin").width())   *  total_progre / 100 );
							j$("#progressanime").find("span.walk").css({"left":  moveto + "px"});
							if(j$("#runokurin").attr('src') == "/img/common/run_okurin_spring3.gif"){
								j$("#runokurin").attr('src',"/img/common/run_okurin_spring1.gif");
							}else if(j$("#runokurin").attr('src') == "/img/common/run_okurin_spring2.gif"){
								j$("#runokurin").attr('src',"/img/common/run_okurin_spring3.gif");
							}else if(j$("#runokurin").attr('src') == "/img/common/run_okurin_spring1.gif"){
								j$("#runokurin").attr('src',"/img/common/run_okurin_spring2.gif");
							}
							//console.log(" j$('#runokurin').attr('src') => " + j$("#runokurin").attr('src'));
						}
						
						if(total_progre==100){
							j$("#progressanime").fadeOut();
						}
						
					}, false);
				}
				return XHR;
			},
			type: "POST",
			contentType: false,
			processData: false,
			data: fd,
			//dataType: 'json',
			error: function (data) {
				if(queuedCnt == completeCnt){
					init_upload();
				}
			},
			success: function (data) {
				var retval = data.split('||');
				if (retval[0]!=responserr) {
//					console.log(' success: fid => ' + fid);
//					console.log('  retval => ' + retval);
					gaqTrackEvent( 'fuploaddd' , 'uploadSuccess',  'fileName:'+file.name + ' fileSize:'+fsize(file.size));
///					j$("#" + fid).find("input.url_txt_box").val(retval[1]);
///					j$("#" + fid).find("a.upfile_url_link").attr('href',retval[1]);
///					j$("#" + fid).find(".uploaded").show();
///					j$("#" + fid).find(".uploading").hide();
///					j$("#" + fid).find("span.upfile_size").html(fsize(file.size));
///					j$("#" + fid).removeAttr('id').attr('id', "fc-" + retval[0]).attr('class', "uploadedFile");
					fid = "fc-" + retval[0];
///					j$("#" + fid).remove();
					//アップロード済みファイル一覧テーブルに1行追加
					j$('#upfile_row').clone().removeAttr('id').attr('id', fid).insertAfter('#upfile_headder').show();
					////j$("#" + fid).find("span.upfile_name").html(file.name);
					j$("#" + fid).find("span.upfile_name").html(file.name.split('').join(String.fromCharCode(8203)));
					j$("#" + fid).find("span.upfile_size").html(fsize(file.size));
					j$("#" + fid).find("span.upfile_deldate").html(retval[2]);
					j$("#" + fid).find("span.upfile_dlcnt").html(retval[3]);
					j$("#" + fid).find("input.url_txt_box").val(retval[1]).attr("title",retval[1]);
					j$("#" + fid).find("a.upfile_url_link").attr('href',retval[1]);
					j$("#" + fid).find("img.icon").attr("src","../../img/common/" + retval[4])
					j$("#" + fid).find("img.icon").attr("title",retval[5]);
					j$("#" + fid).find("img.icon").attr("alt",retval[5]);
					//ファイル一覧更新
					fileTableReload();
					//グラフ更新
					//graphReload();
					successCnt++;
//					console.log('successCnt = '+successCnt );
					
					j$("#" + fid).find("img.del_btn").css('cursor','pointer').on("click",function(){
						deleteButton(j$(this));
					});
					
				} else{
					j$("#" + fid).remove();
					
					gaqTrackEvent( 'fuploaddd' , 'uploadSuccess-Err', 'fileName:'+file.name + ' fileSize:'+fsize(file.size));
					alert('アップロード失敗\n「' + file.name + '」\n' + retval[1]);
				}
				selfCancel = false;
//				console.log('queuedCnt = ' + queuedCnt  + ' completeCnt = '+completeCnt   + ' successCnt = '+successCnt );
				if(successCnt == queuedCnt){
					uniteUrlDisplay();
					init_upload();
					if(successCnt > 0){
//						console.log('アップロードが完了しました。');
						gaqTrackEvent( 'fuploaddd' , 'uploadComplete', 'successCnt:'+successCnt + ' totalSize:'+fsize(fileSizeTotal));
						alert("アップロードが完了しました。");
					}
					j$('#dlUrl').showBalloon({
						contents:"ファイルを送りたい相手に
このURLをコピーして
メールなどで送って下さい。" , 
						position: "top" , 
						tipSize: 15 ,
						keep: 6000 , 
						onDuration: "slow",
						onAnimation: function(d) { this.slideDown(d); },
						offDuration: "slow",
						offAnimation: function(d) { this.slideUp(d); },
						css: {
							backgroundColor: "#ffffff",
							minWidth: "26px",
							fontSize: '130%',
							fontWeight: 'bold',
							lineHeight: '2',
							color:"#ff0000" , 
							opacity: "null",
							border:"solid 2px #878787"
						}
					});
					j$('#dlUrl').hideBalloon();
				}
			}
		});
		
		return retxhr;
	}
	j$("#unite_btn").css('cursor','pointer').click(function(){
		var prefix = "fc-";
		var fcds ="";
		j$("tr:visible[class=uploadedFile]").each(function(){
			if(fcds=="") {fcds=j$(this).attr("id").substring(prefix.length);}
			else{fcds = fcds + "-" + j$(this).attr("id").substring(prefix.length);}
		});
		j$.post(upurl,{"sessid" : sessid , "action":'unit', "fcds":fcds},function(ret){
			if(ret){
				j$('#unite').show();
				j$('#united_url').show();
				j$("a.united_url_link").show();
				var url = dlurl + ret;
				j$('#united_url').val(url);
				j$("a.united_url_link").attr('href',url);
			}
		});
	});
	
	function init_upload(){
		j$("#progressanime").hide();
		j$("#progressanime").find("span.walk").css({"left": "0px"});
		//「規約に同意する」チェックボックス有効化
		j$('.kiyaku_doui').attr('disabled',false);
		//「URLまとめる」ボタン有効化
		j$('#unite_btn').attr('disabled',false);
		j$('#united_url').val("");
		j$("a.united_url_link").attr('href',"");
		j$("#fupmsg").text(msg1);
		//グラフ更新
		graphReload();
		j$("#select_btn").attr('disabled',false);
		pcnt=0;
		queuedCnt=0;
		completeCnt=0;
		successCnt=0;
		fileSizeTotal=0;
		fids = [];
		upfiles = [];
		jqxhr=new Object();
	}
});
//ブラウザ情報の取得
dom = document.getElementById; //W3C DOM をサポートする場合
opera = navigator.userAgent.indexOf("Opera")>-1; //Opera
ie4 = document.all && !dom && !opera; //Internet Explorer 4.x
ie5 = document.all && dom && !opera; //Internet Explorer 5.x 以上
ie = ie4 || ie5; //Internet Explorer 4.x 以上
netscape = navigator.appName.indexOf("Netscape",0)>-1; //Netscape
nn4 = document.layers && netscape; //Netscape 4.x
nn6 = dom && netscape; //Netscape 6.x 以上
safari = navigator.userAgent.indexOf("Safari")>-1; //Opera
var BROWSER;
if(opera){
	 BROWSER="opera";
}
if(nn6){
	 BROWSER="nn6";
}
if(safari){
	 BROWSER="safari";	
}
if(nn4){
	 BROWSER="nn4";
}
if(ie4){
	 BROWSER="ie4";
}
if(ie5){
	 BROWSER="ie5";
}
if (navigator.platform.search(/win/i) != -1) {
	var OS="Win";
}else if(navigator.platform.search(/mac/i) != -1) {
	var OS="Mac";
}else{
	var OS="Other";
}
function file_name_check(file_name){
	var i=file_name.length - 1;
	var r_file_name = file_name[i];
//	if(((BROWSER=="nn6")||(BROWSER=="nn4"))&&(OS=="Mac")){
//		alert("ファイル名に日本語を使用している場合、文字化けが発生し、アップロードできないことがございます。\nご注意下さい。");
//	}
	if (file_name.length > 100) {
		alert("アップロードファイル:「" + file_name + "」\n------------------------------\nファイル名が長すぎます。\n申し訳有りませんがファイル名を変更して下さい。");
		return false;
	}
	if (file_name.indexOf("%") != -1 || file_name.indexOf("#") != -1) {
		//alert('r_file_name=' + r_file_name);
		//alert('unescape(r_file_name)=' + unescape(r_file_name));
		alert("アップロードファイル:「" + file_name + "」\n------------------------------\nファイル名に特殊文字「%」「#」は使用できません。\n申し訳有りませんがファイル名を変更して下さい。");
		return false;
	}
	return true;
}
//単位付きのファイルサイズに変換。少数点以下3桁までで四捨五入して表示
function fsize_format(size){
	var str,kazu,tani ;
	if(size >= 1073741824){
		//str = Math.floor(size / 1073741824) + "GB";
		kazu = size / 1073741824;
		tani = "GB";
	}else if(size >= 1048576){
		//str = Math.floor(size / 1048576) + "MB";
		kazu = size / 1048576;
		tani =  "MB";
	}else if(size >= 1024){
		//str = Math.floor(size / 1024) + "KB";
		kazu = size / 1024;
		tani =  "KB";
	}else{
		kazu = size;
		tani = "Byte";
	}
	kazu = (kazu * 1000);
	kazu = Math.round(kazu);
	kazu = (kazu / 1000);
	str = kazu + tani;
	return str;
}