﻿/*

Depends
	jquery.js         	//jQuery1.3.2包
	util.js         	//基础包
*/

(function($){
	var file = {
		file:{
			//构建file的基本html, 暂时未用，要求找到复制Input:file控件的方法， 用jQuery的clone在火狐上可以复制在IE上不行
			_create:function(o){
				var parm = {
					fileConfig:'',
					rename:'',
					size:'',
					status:'',
					id:''
				}
				$.extend(parm,o);
				//console.info(parm);
				var f = document.createElement("form"),//隐藏表单
						$f = $(f),
						$file,//隐藏文件提交域
						iframe = document.createElement("iframe"),//包装iframe用于取的返回值
						$iframe = $(iframe),
						formId = "fFile_"+(+new Date()),
						iframeId = "iframe_file_"+(+new Date());
				//$iframe.attr({"src":"ui.file.load.html","name":iframeId}).hide().appendTo("body");	
				//创建表单 将其内容指向显示在创建的iframe里
				//$f.attr({'id':formId,'method':'post',"target":iframeId,'action':ACT.get('u')+'?fileConfig='+parm.fileConfig+'&rename='+parm.rename+'&size='+parm.size+'&status='+parm.status+'&id='+parm.id,'enctype':'multipart/form-data'}).hide();//http://localhost:8089/ebm/design/Upload.action
				//$f.appendTo("body");
				var jIO=$('<iframe name="'+iframeId+'" src="ui.file.load.html" />').appendTo('body');
				var tourl = ACT.get('u')+'?fileConfig='+parm.fileConfig+'&rename='+parm.rename+'&size='+parm.size+'&status='+parm.status+'&id='+parm.id;
				var jForm=$('<form action="'+tourl+'" target="'+iframeId+'" method="post" enctype="multipart/form-data"></form>').appendTo('body');
				var ids = parm.id.split("|");

				$.each(ids,function(i,v){
					//$("#"+v).attr("name","attachment");
					$("#"+v).clone(true).empty().appendTo(jForm);
					//$file = $(  document.getElementById(v).cloneNode(true) );
					//document.getElementById(formId).appendChild( document.getElementById(v).cloneNode(true) );
				})
				/*
				$iframe.bind("onload",function(){
					var thisDocument = this.contentDocument || this.contentWindow.document;
					var html = thisDocument.body.innerHTML;
					$(this).data("html",html);
				})
				*/
				setTimeout(function(){
					$.ebm.ui.showTip("上传文件中...","","",1);
					//iframe.contentWindow.document.getElementById("fileContent").appendChild( document.getElementById(formId).cloneNode(true) );	
					//iframe.contentWindow.document.getElementById(formId).submit();
					jForm[0].submit();
					//监听文件是否上传完成
					var c = setInterval(function(){
				  	//var r = iframe.contentWindow.document.getElementsByTagName("body")[0].innerHTML;
				  	var r = jIO[0].contentWindow.document.getElementsByTagName("body")[0].innerHTML;
				  	//在每个对应的文件上传域中添加data
				  	if( $.ebm.util.jsonToObj(r) ){
				  		if($.ebm.util.jsonToObj(r).root.status == 1){
				  			$.each( $.ebm.util.toArray( $.ebm.util.jsonToObj(r).root.rows.row ),function(i,v){
						  		$("#"+v.id).data("data",v);	
						  	})
						  	$.ebm.util.temp("upload_file",2);	
				  		}else{
				  			$.ebm.util.temp("upload_file",3);	
				  		}	
				  		clearInterval(c);			  	
				  		//$iframe.remove();
				  		//$f.remove();
				  	}
				  	//$.ebm.ui.closeTip("");
				  },1000)
				  
				  
				},100)	
				
			},
			// $n:jQuery对象， init: 是否为初始化，1:初始化则不提交，0||null:则提交
			create:function($n,init){
				if($n.val() == '' && !$n.data("deleteFile") && !init){
					$.ebm.util.temp("upload_file",null);
					return;	
				}
				var self = this;
				var parm = self.setParm($n);				
				var formId = "fFile_"+parm.id,iframeName = "iframe_file_"+parm.id;
				var jIframe,edit=0;
				//var tourl = ACT.get('u')+'?fileConfig='+parm.fileConfig+'&rename='+parm.rename+'&size='+parm.size+'&status='+parm.status+'&id='+parm.id;
				//ACT.u为cms特有
				var tourl = ACT.u+'?fileConfig='+parm.fileConfig+'&rename='+parm.rename+'&size='+parm.size+'&status='+parm.status+'&id='+parm.id;
				if($("iframe[name='"+iframeName+"']").length == 0 ){
					if(!init)jIframe = $('<iframe name="'+iframeName+'" />').hide().appendTo('body');
					$("#"+parm.id).attr("name","attachment");
					if($("#"+formId).length==0){
						$("#"+parm.id).wrap( '<form action="'+tourl+'" id="'+formId+'" nosubmit=1 target="'+iframeName+'" method="post" enctype="multipart/form-data"></form>' );	
					}
					edit = 0;
				}else{
					if(!init)jIframe = $("iframe[name='"+iframeName+"']");
					edit = 1;
				}
				if(!init)$.ebm.ui.showTip("操作文件中,请稍候...","","",1);	
				if(init){
					$n.data("parm",parm).data("formId",formId);
					self.showEdit($n,formId,parm);	
					$n.bind("click",function(){
						$.file.change( $n.data("formId"),$n.data("parm") );	
					})
					return;
				}
				document.getElementById(formId).submit();
				//监听文件是否上传完成
				var c = setInterval(function(){
					var body = jIframe[0].contentWindow.document.getElementsByTagName("body");
					if(body.length == 0)return;
			  	var r = body[0].innerHTML;
			  	//在每个对应的文件上传域中添加data
			  	if( $.ebm.util.jsonToObj(r)){
			  		if($.ebm.util.jsonToObj(r).root.status == 1){
			  			if(edit == 0){
			  				if( $.ebm.util.jsonToObj(r).root &&　$.ebm.util.jsonToObj(r).root.rows ){
			  					var d = $.ebm.util.jsonToObj(r).root.rows.row;
					  			$n.data("data",d).data("parm",parm).data("formId",formId);
					  			self.showEdit($n,formId,parm);
					  			$n.bind("change",function(){
										$.file.change( $n.data("formId"),$n.data("parm") );	
									})
			  				}
		  					
			  			}else{
			  				var dd = $.ebm.util.getData("d.ebm.file.getRelaPath",null,1,{"fileId":$n.data("data").fileId });
								var d = { fileId:$n.data("data").fileId,relaPath:dd[0].relaPath,pid:$n.attr("id") };
								$("#file_view_"+parm.id).attr("href",dd[0].relaPath);
								$n.data("data",d);	
			  			}
					  	$.ebm.util.temp("upload_file",2);	
			  		}else{
			  			$.ebm.util.temp("upload_file",3);	
			  		}	
			  		clearInterval(c);	
			  		//$("#formId").after( $("#"+parm.id) );		 
			  		//$("#formId").remove(); 	
			  		$n.data("deleteFile",null);
			  		jIframe.remove();
			  	}
			  },1000)
			},
			setParm:function($n){
				var parm = {
					fileConfig:'',
					rename:'',
					size:'',
					status:'',
					id:''
				}
				var o = $.ebm.util.jsonToObj( $n.attr("option") );
				$.extend(parm, o);
				parm.id = $n.attr("id");
				if(!parm.fileConfig)parm.fileConfig = "*";
				if(!parm.rename)parm.rename = "*";
				if(!parm.size)parm.size = "*";
				if(o && o.fk && $("#"+o.fk) ){
					parm.status = 2;
				}else{
					parm.status = 1;
				}
				return parm;
			},
			//显示 查看/删除链接
			showEdit:function($n,formId,parm){
				var data = $n.data("data");
				if(data.fileId){
					$n.after("<span nosubmit=1 class='file_eidtText' id='file_editText_"+parm.id+"'><a nosubmit=1 id='file_view_"+parm.id+"' href='"+$n.data("data").relaPath+"' for='"+$n.attr("id")+"' style='font-size:12px;text-decoration:none' target='_blank'>查看</a><a href='javascript:;' for='"+$n.attr("id")+"' onclick='($).file.del(\""+$n.data("formId")+"\",\""+$n.attr("id")+"\")' style='font-size:12px;text-decoration:none'>删除</a></span>")	
				}
			},
			//删除
			del:function(formId,id){
				var $n = $("#"+id),parm = $n.data("parm"),data = $n.data("data");
				document.getElementById(formId).reset();
				$("#file_editText_"+parm.id).remove();
				var tourl = ACT.u+'?fileConfig='+parm.fileConfig+'&rename='+parm.rename+'&size='+parm.size+'&status='+parm.status+'&id='+parm.id+'&delete='+data.fileId;	
				$("#"+formId).attr("action",tourl);
				data.fileId = "";
				$n.data("data",data).data("deleteFile",1);
			},
			//file文件上传域change事件
			change:function(formId,parm){
				var data = $("#"+parm.id).data("data");
				var tourl = ACT.u+'?fileConfig='+parm.fileConfig+'&rename='+parm.rename+'&size='+parm.size+'&status='+parm.status+'&id='+parm.id+'&update='+data.fileId;		
				$("#"+formId).attr("action",tourl);
			}
		}
	}
	if($.file == undefined){
		$.extend($, file);
		file = null;
	}
	
})(jQuery);
