/*
Uploadify v2.1.0
Release Date: August 24, 2009

Copyright (c) 2009 Ronnie Garcia, Travis Nickels

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/

if(jQuery){
    (function(a){
        a.extend(a.fn,{
            uploadify:function(b){
                a(this).each(function(){
                    settings=a.extend({
                        id:a(this).attr("id"),
                        uploader:"uploadify.swf",
                        script:"uploadify.php",
                        expressInstall:null,
                        folder:"",
                        height:30,
                        width:110,
                        cancelImg:"cancel.png",
                        wmode:"opaque",
                        scriptAccess:"sameDomain",
                        fileDataName:"Filedata",
                        method:"POST",
                        queueSizeLimit:999,
                        simUploadLimit:1,
                        queueID:false,
                        displayData:"percentage",
                        onInit:function(){},
                        onSelect:function(){},
                        onQueueFull:function(){},
                        onCheck:function(){},
                        onCancel:function(){},
                        onError:function(){},
                        onProgress:function(){},
                        onComplete:function(){},
                        onAllComplete:function(){}
                    },b);
                    var e=location.pathname;
                    e=e.split("/");
                    e.pop();
                    e=e.join("/")+"/";
                    var f={};

                    f.uploadifyID=settings.id;
                    f.pagepath=e;
                    if(settings.buttonImg){
                        f.buttonImg=escape(settings.buttonImg)
                    }
                    if(settings.buttonText){
                        f.buttonText=escape(settings.buttonText)
                    }
                    if(settings.rollover){
                        f.rollover=true
                    }
                    f.script=settings.script;
                    f.folder=escape(settings.folder);
                    if(settings.scriptData){
                        var g="";
                        for(var d in settings.scriptData){
                            g+="&"+d+"="+settings.scriptData[d]
                        }
                        f.scriptData=escape(g.substr(1))
                    }
                    f.width=settings.width;
                    f.height=settings.height;
                    f.wmode=settings.wmode;
                    f.method=settings.method;
                    f.queueSizeLimit=settings.queueSizeLimit;
                    f.simUploadLimit=settings.simUploadLimit;
                    if(settings.hideButton){
                        f.hideButton=true
                    }
                    if(settings.fileDesc){
                        f.fileDesc=settings.fileDesc
                    }
                    if(settings.fileExt){
                        f.fileExt=settings.fileExt
                    }
                    if(settings.multi){
                        f.multi=true
                    }
                    if(settings.auto){
                        f.auto=true
                    }
                    if(settings.sizeLimit){
                        f.sizeLimit=settings.sizeLimit
                    }
                    if(settings.checkScript){
                        f.checkScript=settings.checkScript
                    }
                    if(settings.fileDataName){
                        f.fileDataName=settings.fileDataName
                    }
                    if(settings.queueID){
                        f.queueID=settings.queueID
                    }
                    if(settings.onInit()!==false){
                        a(this).css("display","none");
                        a(this).after('<div id="'+a(this).attr("id")+'Uploader"></div>');
                        swfobject.embedSWF(settings.uploader,settings.id+"Uploader",settings.width,settings.height,"9.0.24",settings.expressInstall,f,{
                            quality:"high",
                            wmode:settings.wmode,
                            allowScriptAccess:settings.scriptAccess
                        });
                        if(settings.queueID==false){
                            a("#"+a(this).attr("id")+"Uploader").after('<div id="'+a(this).attr("id")+'Queue" class="uploadifyQueue"></div>')
                        }
                    }
                    if(typeof(settings.onOpen)=="function"){
                        a(this).bind("uploadifyOpen",settings.onOpen)
                    }
                    a(this).bind("uploadifySelect",{
                        action:settings.onSelect,
                        queueID:settings.queueID
                    },function(j,h,i){
                        if(j.data.action(j,h,i)!==false){
                            var k=Math.round(i.size/1024*100)*0.01;
                            var l="KB";
                            if(k>1000){
                                k=Math.round(k*0.001*100)*0.01;
                                l="MB"
                            }
                            var m=k.toString().split(".");
                            if(m.length>1){
                                k=m[0]+"."+m[1].substr(0,2)
                            }else{
                                k=m[0]
                            }
                            if(i.name.length>20){
                                fileName=i.name.substr(0,20)+"..."
                            }else{
                                fileName=i.name
                            }
                            queue="#"+a(this).attr("id")+"Queue";
                            if(j.data.queueID){
                                queue="#"+j.data.queueID
                            }
                            a(queue).append('<div id="'+a(this).attr("id")+h+'" class="uploadifyQueueItem"><div class="cancel"><a href="javascript:jQuery(\'#'+a(this).attr("id")+"').uploadifyCancel('"+h+'\')"><img src="'+settings.cancelImg+'" border="0" /></a></div><span class="fileName">'+fileName+" ("+k+l+')</span><span class="percentage"></span><div class="uploadifyProgress"><div id="'+a(this).attr("id")+h+'ProgressBar" class="uploadifyProgressBar"><!--Progress Bar--></div></div></div>')
                        }
                    });
                    if(typeof(settings.onSelectOnce)=="function"){
                        a(this).bind("uploadifySelectOnce",settings.onSelectOnce)
                    }
                    a(this).bind("uploadifyQueueFull",{
                        action:settings.onQueueFull
                    },function(h,i){
                        if(h.data.action(h,i)!==false){
                            alert("The queue is full.  The max size is "+i+".")
                        }
                    });
                    a(this).bind("uploadifyCheckExist",{
                        action:settings.onCheck
                    },function(m,l,k,j,o){
                        var i=new Object();
                        i=k;
                        i.folder=e+j;
                        if(o){
                            for(var h in k){
                                var n=h
                            }
                        }
                        a.post(l,i,function(r){
                            for(var p in r){
                                if(m.data.action(m,l,k,j,o)!==false){
                                    var q=confirm("Do you want to replace the file "+r[p]+"?");
                                    if(!q){
                                        document.getElementById(a(m.target).attr("id")+"Uploader").cancelFileUpload(p,true,true)
                                    }
                                }
                            }
                            if(o){
                                document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(n,true)
                            }else{
                                document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(null,true)
                            }
                        },"json")
                    });
                    a(this).bind("uploadifyCancel",{
                        action:settings.onCancel
                    },function(l,h,k,m,j){
                        if(l.data.action(l,h,k,m,j)!==false){
                            var i=(j==true)?0:250;
                            a("#"+a(this).attr("id")+h).fadeOut(i,function(){
                                a(this).remove()
                            })
                        }
                    });
                    if(typeof(settings.onClearQueue)=="function"){
                        a(this).bind("uploadifyClearQueue",settings.onClearQueue)
                    }
                    var c=[];
                    a(this).bind("uploadifyError",{
                        action:settings.onError
                    },function(l,h,k,j){
                        if(l.data.action(l,h,k,j)!==false){
                            var i=new Array(h,k,j);
                            c.push(i);
                            a("#"+a(this).attr("id")+h+" .percentage").text(" - "+j.type+" Error");
                            a("#"+a(this).attr("id")+h).addClass("uploadifyError")
                        }
                    });
                    a(this).bind("uploadifyProgress",{
                        action:settings.onProgress,
                        toDisplay:settings.displayData
                    },function(j,h,i,k){
                        if(j.data.action(j,h,i,k)!==false){
                            a("#"+a(this).attr("id")+h+"ProgressBar").css("width",k.percentage+"%");
                            if(j.data.toDisplay=="percentage"){
                                displayData=" - "+k.percentage+"%"
                            }
                            if(j.data.toDisplay=="speed"){
                                displayData=" - "+k.speed+"KB/s"
                            }
                            if(j.data.toDisplay==null){
                                displayData=" "
                            }
                            a("#"+a(this).attr("id")+h+" .percentage").text(displayData)
                        }
                    });
                    a(this).bind("uploadifyComplete",{
                        action:settings.onComplete
                    },function(k,h,j,i,l){
                        if(k.data.action(k,h,j,unescape(i),l)!==false){
                            a("#"+a(this).attr("id")+h+" .percentage").text(" - Completed");
                            a("#"+a(this).attr("id")+h).fadeOut(250,function(){
                                a(this).remove()
                            })
                        }
                    });
                    if(typeof(settings.onAllComplete)=="function"){
                        a(this).bind("uploadifyAllComplete",{
                            action:settings.onAllComplete
                        },function(h,i){
                            if(h.data.action(h,i)!==false){
                                c=[]
                            }
                        })
                    }
                })
            },
            uploadifySettings:function(f,j,c){
                var g=false;
                a(this).each(function(){
                    if(f=="scriptData"&&j!=null){
                        if(c){
                            var i=j
                        }else{
                            var i=a.extend(settings.scriptData,j)
                        }
                        var l="";
                        for(var k in i){
                            l+="&"+k+"="+escape(i[k])
                        }
                        j=l.substr(1)
                    }
                    g=document.getElementById(a(this).attr("id")+"Uploader").updateSettings(f,j)
                });
                if(j==null){
                    if(f=="scriptData"){
                        var b=unescape(g).split("&");
                        var e=new Object();
                        for(var d=0;d<b.length;d++){
                            var h=b[d].split("=");
                            e[h[0]]=h[1]
                        }
                        g=e
                    }
                    return g
                }
            },
            uploadifyGrupo:function(b){
                a(this).each(function(){
                    document.getElementById(a(this).attr("id")+"Uploader").updateGrupo(document.getElementById('idGrupoArchivos').value)
                })
            },
            uploadifyIdU:function(b){
                a(this).each(function(){
                    document.getElementById(a(this).attr("id")+"Uploader").updateId(document.getElementById('idGrupoArchivosSession').value)
                })
            },
            uploadifyUpload:function(b){
    
                a(this).each(function(){
                    document.getElementById(a(this).attr("id")+"Uploader").startFileUpload(b,false)
                })
            },
            uploadifyCancel:function(b){
                a(this).each(function(){
                    document.getElementById(a(this).attr("id")+"Uploader").cancelFileUpload(b,true,false)
                })
            },
            uploadifyClearQueue:function(){
                a(this).each(function(){
                    document.getElementById(a(this).attr("id")+"Uploader").clearFileUploadQueue(false)
                })
            }
        })
    })(jQuery)
};
