(
    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"ValumsAjaxsubirArchivo"+O++
        }
    }();
function N(O){
    return O.replace(/.*(\/|\\)/,"")
    }
    function J(O){
    return(/[.]/.exec(O))?/[^.]+$/.exec(O.toLowerCase()):""
    }(function(){
    var O=null;
    Ajax_subirArchivo=AjaxsubirArchivo=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:"subirArchivo.php",
        name:"archivo",
        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()
    }
};

AjaxsubirArchivo.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
    }
}
})()
})();
