(function(){
	var G=document, K=window;
	
	function D(O){
		if(typeof O=="string"){
			O=G.getElementById(O)
		}
		return O
	}
	
	function C(Q,P,O){
		if(K.addEventListener){
		Q.addEventListener(P,O,false)
		} else {
			if(K.attachEvent){
				var R=function(){
					O.call(Q,K.event)
				};
				Q.attachEvent("on"+P,R)
			}
		}
	}
	
	var B=function(){
		var O=G.createElement("div");
		return function(P){
			O.innerHTML=P;
			var Q=O.childNodes[0];
			O.removeChild(Q);
			return Q
		}
	}
	
	();
	
	function E(P,O){
		return P.className.match(new RegExp("(\\s|^)"+O+"(\\s|$)"))
	}
	
	function F(P,O){
		if(!E(P,O)){
			P.className+=" "+O
		}
	}
	
	function L(Q,O){
		var P=new RegExp("(\\s|^)"+O+"(\\s|$)");
		Q.className=Q.className.replace(P," ")
	}
	
	function M(O){
		if(K.jQuery){
			return jQuery(O).offset()
		}
		var Q=0,P=0;
		do{
			Q+=O.offsetTop||0;
			P+=O.offsetLeft||0
		}while(O=O.offsetParent);
		return{left:P,top:Q}
	}
	
	function A(Q){
		var S,P,R,O;
		var T=M(Q);
		S=T.left;
		R=T.top;
		P=S+Q.offsetWidth;
		O=R+Q.offsetHeight;
		return{left:S,right:P,top:R,bottom:O}
	}
	
	function I(O){
		if(!O.pageX&&O.clientX){
			return{x:O.clientX+G.body.scrollLeft+G.documentElement.scrollLeft,y:O.clientY+G.body.scrollTop+G.documentElement.scrollTop}
			}
		return{x:O.pageX,y:O.pageY}
	}
	
	var H=function(){
		var O=0;return function(){
			return"ValumsAjaxUpload"+O++
		}
	}
	
	();
	
	function N(O){
		return O.replace(/.*(\/|\\)/,"")
	}
	
	function J(O){
		return(/[.]/.exec(O))?/[^.]+$/.exec(O.toLowerCase()):""
	}
	(function(){
		var O=null;Ajax_upload=AjaxUpload=function(R,P){
			if(R.jquery){R=R[0]}
			else{
				if(typeof R=="string"&&/^#.*/.test(R)) { R=R.slice(1) }
			}
			R=D(R);
			this._input=null;
			this._button=R;
			this._disabled=false;
			this._submitting=false;
			this._settings={
				action:"upload.php",
				name:"userfile",
				data:{},
				autoSubmit:true,
				onChange:function(S,T){},
				onSubmit:function(S,T){},
				onComplete:function(T,S){}
			};
			for(var Q in P){
				this._settings[Q]=P[Q]
			}
			this._createInput();
			this._rerouteClicks();
			if(!O){
				this._createIframe()
			}
		};
		
		AjaxUpload.prototype={setData:function(P){
			this._settings.data=P
		},
		disable:function(){this._disabled=true},
		enable:function(){this._disabled=false},
		set_data:function(P){this.setData(P)},
		_createInput:function(){
			var Q=this;
			var P=G.createElement("input");
			P.setAttribute("type","file");
			P.setAttribute("name",this._settings.name);
			var S={
					position:"absolute",
					margin:"-5px 0 0 -175px",
					padding:0,
					width:"220px",
					height:"10px",
					opacity:0,
					cursor:"pointer",
					display:"none"
			};
			for(var R in S){P.style[R]=S[R]}
			if(!(P.style.opacity==="0")){
				P.style.filter="alpha(opacity=0)"
			}
			G.body.appendChild(P);
			C(P,"change",function(){
				var T=N(this.value);
				if(Q._settings.onChange.call(Q,T,J(T))==false){return }
				if(Q._settings.autoSubmit){Q.submit()}
			});
			this._input=P
			},
			_rerouteClicks:function(){
				var P=this;
				var Q,R=false;
				C(P._button,"mouseover",function(S){
					if(!P._input||R){return }
					R=true;
					Q=A(P._button)
				});
				C(document,"mousemove",function(T){
					var S=P._input;
					if(!S||!R){return }
					if(P._disabled){
						L(P._button,"hover");
						S.style.display="none";
						return 
					}
					var U=I(T);
					if((U.x>=Q.left)&&(U.x<=Q.right)&&(U.y>=Q.top)&&(U.y<=Q.bottom)){
						S.style.top=U.y+"px";
						S.style.left=U.x+"px";
						S.style.display="block";
						F(P._button,"hover")
					}
					else
					{
						R=false;
						S.style.display="none";
						L(P._button,"hover")
					}
				})
			},
			_createIframe:function(){
				var P=H();
				_iframe=B('<iframe name="'+P+'" />');
				_iframe.id=P;
				_iframe.style.display="none";
				G.body.appendChild(_iframe)
			},
			submit:function(){
				var P=this,S=this._settings;
				if(this._input.value===""){return }
				var Q=N(this._input.value);
				if(!(S.onSubmit.call(this,Q,J(Q))==false)){
					var T=this._createForm();
					T.appendChild(this._input);
					T.submit();
					G.body.removeChild(T);
					T=null;
					this._input=null;
					this._createInput();
					var R=_iframe;
					C(R,"load",function(){
						var V=false;
						if(R.src=="about:blank"){
							if(V){R.remove()}return 
						}
						var W=R.contentDocument?R.contentDocument:frames[R.id].document;
						var U=W.body.innerHTML;
						S.onComplete.call(P,Q,U);
						R.src="about:blank";
						V=true
					});
					this._createIframe()
				}else{
					this._input.value=""
				}
			},
			_createForm:function(){
				var Q=this._settings;
				var R=B('<form method="post" enctype="multipart/form-data"></form>');
				R.style.display="none";
				R.action=Q.action;
				R.target=_iframe.name;
				G.body.appendChild(R);
				for(var S in Q.data){
					var P=G.createElement("input");
					P.type="hidden";
					P.name=S;
					P.value=Q.data[S];
					R.appendChild(P)
				}
				return R
			}
		}
	})()
})();


