/**
 * @author zhaoshuxiang
 **/
var g_interval = {};
var g_timeout = {};
var ajaxUploadFile = null;
webApp = {
    _scan_type_: 0,
    _search_type_: 0,
    inintPageEvent: function(){
        //继续上报
        $("#con_upload").click(function(){
        	for(k in g_interval){
        		window.clearInterval(g_interval[k]);
        	}
        	for(k in g_timeout){
        		window.clearTimeout(g_timeout[k]);
        	}
        	webApp.enabledUploadForm();
        	webApp.showUploadForm();
        });
        //提交可疑文件
        $("#form_upload").submit(function(){
            webApp.uploadFile();
            return false;
        });
		//查询MD5
		$("#search_md5_but").click(webApp.searchMD5);
		//误报文件选择误报产品
		$("#upload_type_false_positive, #upload_type_dubious").click(function(){
			var fpp = $("#false_positive_produce");
			if($("#upload_type_false_positive").attr('checked')){
				fpp.prev('span').removeClass('tip_input');
				fpp.attr('disabled', false);
			}else{
				fpp.prev('span').addClass('tip_input');
				fpp.attr('disabled', true);
			}
		});
    },
    uploadFile: function(){
    	var valid = true;
        var upload_type = $("#upload_type_wrap input:checked").val();
        if(!upload_type){
        	valid = false;
        	$("#upload_type_wrap .tip_error").removeClass('hidden');
        }else{
        	if(upload_type=='false_positive'){
        		var fpp = $("#false_positive_produce");
        		if(fpp.val()=='-1'){
        			valid = false;
        			$("#upload_type_wrap .tip_error").html('请选择产生误报的产品').removeClass('hidden');
        		}else{
        			$("#upload_type_wrap .tip_error").addClass('hidden');
        		}
        	}else{
        		$("#upload_type_wrap .tip_error").addClass('hidden');
        	}
        }
        
        var upload_file = $("#text_upload_file").val();
        if (upload_file == "") {
        	valid = false;
        	$("#text_upload_file").parent().find(".tip_error").removeClass('hidden');
        }else{
        	$("#text_upload_file").parent().find(".tip_error").addClass('hidden');}
        	
        var email = $.trim($("#email").val());
        if (email == "") {
            valid = false;
        	$("#email").parent().find(".tip_error").html('请输入您的电子邮箱').removeClass('hidden');
        }else if(!email.match(/\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}\b/i)){
        	valid = false;
        	$("#email").parent().find(".tip_error").html('请检查您的电子邮件地址是否正确').removeClass('hidden');
        }else{
        	$("#email").parent().find(".tip_error").addClass('hidden');}
        var remark = $.trim($("#remark").val());
        if (remark == "") {
            valid = false;
        	$("#remark").parent().find(".tip_error").removeClass('hidden');
        }else{
        	$("#remark").parent().find(".tip_error").addClass('hidden');}
        	
        if(valid){
        	if(ajaxUploadFile){ ajaxUploadFile.submit(); }
        }
        
    },
    showFirstFileStatus: function(data){
        var d = null;
        try{
        	d = eval('(' + data + ')');
        }catch(e){
        	d = null;
        }
        if(d){
        	if(d.success){
        		if($("#upload_type_wrap input:checked").val()!='false_positive' && d.result && d.result.length==1 && d.result[0].status==5){
        			alert('您上传的压缩包不规范，请检查。');
        			webApp.enabledUploadForm();
	        		webApp.showUploadForm();
	        		return;
        		}
        		$("#form_upload").hide();
        		$("#need_time").hide();
        		$("#upload_result .dubious").hide();
        		$("#upload_result .false_positive").hide();
        		$("#upload_result").show();
        		if($("#upload_type_wrap input:checked").val()=='false_positive'){
        			$("#upload_result .false_positive").show();
        			$("#sample_md5").html(d.guid);
        		}else{
        			$("#upload_result .dubious").show();
	        		$("#sample_md5").html(d.sample_md5);
	        		var template = $("#file_info_template");
			        for (i in d.result) {
			            var file = template.clone(true);
			            file.attr('id', 'r_' + d.result[i].md5);
			            file.find(".name").html(d.result[i].name);
			            file.find(".md5").html(d.result[i].md5);
			            if(d.result[i].status==2){
			            	file.find(".status_name").addClass("text_safe").html(d.result[i].status_name);
			            }else if(d.result[i].status==3){
			            	file.find(".status_name").addClass("text_danger").html(d.result[i].status_name);
			            }else if(d.result[i].status==1){
			            	if(d.result[i].status_name.indexOf('该文件') < 0){
			            		file.find("span.loadingImg").removeClass("hidden");
			            		file.find(".status_name").addClass("stat_unknown");
			            	}
			            	file.find(".status_name").attr('id', 'stat_'+d.result[i].md5).addClass("text_unknown").html(d.result[i].status_name);
			            }else{
			            	if(d.result[i].status==5){
			            		d.result[i].status_name = '包含在压缩包里面的压缩包，不进行处理';
			            	}
			            	file.find(".status_name").attr('id', 'stat_'+d.result[i].md5).addClass("text_unknown").html(d.result[i].status_name);
			            }
			            $("#upload_result .result_box").append(file);
			            //if(d.result.length>0){
			            //	$("#upload_result .result_box").append("<hr/>");
			            //}
			            file.show();
			        }
			        var unknown_status = $("span.stat_unknown");
			        if(unknown_status.length > 5){
			        	$("#need_time").show();
			        }
			        unknown_status.each(function(){
						var _id = $(this).attr("id").replace('stat_','');
						webApp.receive_status(_id);
						g_interval[_id] = window.setInterval("webApp.receive_status('"+_id+"')", 15*1000);
						g_timeout[_id] = window.setTimeout("webApp.toManual('"+_id+"')", 5*60*1000);
					});
				}
        	}else{
        		alert('上传样本文件失败。' + (d.err_msg ? '原因:'+d.err_msg : ''));
        		webApp.enabledUploadForm();
        		webApp.showUploadForm();
        	}
        }else{
        	alert('上传样本文件失败，请重试。');
        	webApp.enabledUploadForm();
        	webApp.showUploadForm();
        }
    },
    showSearchFileStatus: function(json_data){
        var d = json_data;
    	if(d){
    		$("#upload_result .result_box").html('');
    		$("#form_upload").hide();
    		$("#need_time").hide();
    		$("#upload_result .false_positive").hide();
    		$("#upload_result .dubious").show();
	        $("#sample_md5").html(d.sample_md5);
    	
    		var template = $("#file_info_template");
    		for (i in d.result) {
				var file = template.clone(true);
				file.attr('id', 'r_' + d.result[i].md5);
	            file.find(".md5").html(d.result[i].md5);
	            if(d.result[i].status==2){
	            	file.find(".status_name").addClass("text_safe").html(d.result[i].status_name);
	            }else if(d.result[i].status==3){
	            	//file.find(".status_name").addClass("text_danger").html(d.result[i].status_name);
	            	file.find("span.loadingImg").removeClass("hidden");
	            	file.find(".status_name").attr('id', 'stat_'+d.result[i].md5).addClass("stat_unknown");
	            }else if(d.result[i].status==1){
	            	//file.find("span.loadingImg").removeClass("hidden");
	            	//file.find(".status_name").attr('id', 'stat_'+d.result[i].md5).addClass("text_unknown").html('已提交人工鉴定，请稍后再来查询。');
	            	if(d.result[i].status_name.indexOf('该文件') < 0){
	            		file.find("span.loadingImg").removeClass("hidden");
	            		file.find(".status_name").attr('id', 'stat_'+d.result[i].md5).addClass("stat_unknown");
	            	}else{
	            		file.find(".status_name").addClass("text_unknown").html(d.result[i].status_name);
	            	}
	            }else{
	            	file.find(".status_name").addClass("text_unknown").html(d.result[i].status_name);
	            }
	            file.find("p:eq(0)").remove();
	            $("#upload_result .result_box").append(file);
	            file.show();
            }
            var unknown_status = $("#upload_result span.stat_unknown");
	        unknown_status.each(function(){
				var _id = $(this).attr("id").replace('stat_','');
				webApp.receive_status(_id, true);
			});
            
    	}else{
    		alert('获取上报结果失败，请重试。');
    	}
    },
    receive_status: function(_id, showToManual) {
		var _url = "/fileident/item_status/00000000000000000000000000000000/";
		_url = _url.replace("00000000000000000000000000000000",_id);
		$.post(_url,
			function(data){
				try{
		        	data = eval('(' + data + ')');
		        }catch(e){
		        	data = null;
		        }
				if(data && data.status!=1){
					window.clearInterval(g_interval[_id]);
					window.clearTimeout(g_timeout[_id]);
					$("#r_" + _id).find("span.loadingImg").addClass("hidden");
					$("#r_" + _id).find(".status_name").html(data.status_name);
					if(data.status==2){
		            	$("#r_" + _id).find(".status_name").removeClass('text_unknown').addClass("text_safe");
		            }else if(data.status==3){
		            	$("#r_" + _id).find(".status_name").removeClass('text_unknown').addClass("text_danger");
		            }
				}else if(showToManual){
					webApp.toManual(_id);
				}
		});
	},
	toManual: function(_id){
		window.clearInterval(g_interval[_id]);
		$("#r_" + _id).find("span.loadingImg").addClass("hidden");
		$("#r_" + _id).find(".status_name").html('转人工鉴定，请几个小时后再来查询');
    },
    
    showUploadForm: function(){
    	$("#upload_result").hide();
    	$("#upload_result .result_box").html('');
    	//$("#upload_file_name").html('');
    	$("#text_upload_file").val('');
    	$("#form_upload").show();
    },
    
    disabledUploadForm: function(){
    	$('#username, #email, #qq, #msn, #upload_type_dubious, #upload_type_false_positive, #btn_upload_file, #btn_sel_upload_file, #remark').attr('disabled', true);
    	$('.submitBtnArea .loading').show();
    },
    
    enabledUploadForm: function(){
    	$('.submitBtnArea .loading').hide();
    	$('#username, #email, #qq, #msn, #upload_type_dubious, #upload_type_false_positive, #btn_upload_file, #btn_sel_upload_file, #remark').removeAttr('disabled');
    },
	
	//查询MD5
	searchMD5 :function(){
		var md5 = $("#upload_search_input").val();
		if(md5 && md5.match(/^[a-zA-Z0-9]{32}$/i)){
			$.ajax({
				url:"/fileident/sample_status/" + md5,
				dataType: 'json',
				success: function(data){
					$("#upload").hide();
			      $("#upload_result").show();
				  webApp.showSearchFileStatus(data);
				},
				error: function(xhr){
					alert('您要查询的文件不存在或者暂时获取不了。')
				}
			});
		}else{
			alert('请检查您输入的是否为正确的上报号(32位)');
		}
		return false;
	}
    
};

$(function(){
	
	     //头部鼠标hover事件
        $("#header_menu li:not(.click)").hover(function(){
            $(this).addClass("hover");
        }, function(){
            $(this).removeClass("hover");
        });
        
        //头部鼠标点击事件
        $("#header_menu li").click(function(){
            if (!$(this).find("a").attr("target")) {
                $("#header_menu .click").removeClass("click");
                $(this).addClass("click");
            }
        });
		
    webApp.inintPageEvent();
	
    ajaxUploadFile = new AjaxUpload($("#btn_sel_upload_file"), {
        action: '/fileident/upload2/',
        name: 'file',
       	autoSubmit: false,
       	onChange: function(file, extension){
       		$("#text_upload_file").val(file);
       	},
        onSubmit: function(file, ext){
        	webApp.disabledUploadForm();
        	this.setData({upload_type: $("#upload_type_wrap input:checked").val(), username: $("#username").val(), email: $("#email").val(), qq: $("#qq").val(), msn: $("#msn").val(), remark: $("#remark").val(), produce: $("#false_positive_produce").val() });
        },
        onComplete: function(file, response){
            webApp.showFirstFileStatus(response);
        }
    });
});


