/* 
 * flowplayer.js 3.2.2. The Flowplayer API
 * 
 * Copyright 2010 Flowplayer Oy
 * 
 * This file is part of Flowplayer.
 * 
 * Flowplayer is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * Flowplayer is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with Flowplayer.  If not, see <http://www.gnu.org/licenses/>.
 * 
 * Date: 2010-05-20 17:15:38 +0000 (Thu, 20 May 2010)
 * Revision: 480 
 */
(function(){
    function g(o){
        console.log("$f.fireEvent",[].slice.call(o))
        }
        function k(q){
        if(!q||typeof q!="object"){
            return q
            }
            var o=new q.constructor();
        for(var p in q){
            if(q.hasOwnProperty(p)){
                o[p]=k(q[p])
                }
            }
        return o
    }
    function m(t,q){
    if(!t){
        return
    }
    var o,p=0,r=t.length;
    if(r===undefined){
        for(o in t){
            if(q.call(t[o],o,t[o])===false){
                break
            }
        }
        }else{
    for(var s=t[0];p<r&&q.call(s,p,s)!==false;s=t[++p]){}
}
return t
}
function c(o){
    return document.getElementById(o)
    }
    function i(q,p,o){
    if(typeof p!="object"){
        return q
        }
        if(q&&p){
        m(p,function(r,s){
            if(!o||typeof s!="function"){
                q[r]=s
                }
            })
    }
    return q
}
function n(s){
    var q=s.indexOf(".");
    if(q!=-1){
        var p=s.slice(0,q)||"*";
        var o=s.slice(q+1,s.length);
        var r=[];
        m(document.getElementsByTagName(p),function(){
            if(this.className&&this.className.indexOf(o)!=-1){
                r.push(this)
                }
            });
    return r
    }
}
function f(o){
    o=o||window.event;
    if(o.preventDefault){
        o.stopPropagation();
        o.preventDefault()
        }else{
        o.returnValue=false;
        o.cancelBubble=true
        }
        return false
    }
    function j(q,o,p){
    q[o]=q[o]||[];
    q[o].push(p)
    }
    function e(){
    return"_"+(""+Math.random()).slice(2,10)
    }
    var h=function(t,r,s){
    var q=this,p={},u={};

    q.index=r;
    if(typeof t=="string"){
        t={
            url:t
        }
    }
    i(this,t,true);
m(("Begin*,Start,Pause*,Resume*,Seek*,Stop*,Finish*,LastSecond,Update,BufferFull,BufferEmpty,BufferStop").split(","),function(){
    var v="on"+this;
    if(v.indexOf("*")!=-1){
        v=v.slice(0,v.length-1);
        var w="onBefore"+v.slice(2);
        q[w]=function(x){
            j(u,w,x);
            return q
            }
        }
    q[v]=function(x){
    j(u,v,x);
    return q
    };

if(r==-1){
    if(q[w]){
        s[w]=q[w]
        }
        if(q[v]){
        s[v]=q[v]
        }
    }
});
i(this,{
    onCuepoint:function(x,w){
        if(arguments.length==1){
            p.embedded=[null,x];
            return q
            }
            if(typeof x=="number"){
            x=[x]
            }
            var v=e();
        p[v]=[x,w];
        if(s.isLoaded()){
            s._api().fp_addCuepoints(x,r,v)
            }
            return q
        },
    update:function(w){
        i(q,w);
        if(s.isLoaded()){
            s._api().fp_updateClip(w,r)
            }
            var v=s.getConfig();
        var x=(r==-1)?v.clip:v.playlist[r];
        i(x,w,true)
        },
    _fireEvent:function(v,y,w,A){
        if(v=="onLoad"){
            m(p,function(B,C){
                if(C[0]){
                    s._api().fp_addCuepoints(C[0],r,B)
                    }
                });
        return false
        }
        A=A||q;
    if(v=="onCuepoint"){
        var z=p[y];
        if(z){
            return z[1].call(s,A,w)
            }
        }
    if(y&&"onBeforeBegin,onMetaData,onStart,onUpdate,onResume".indexOf(v)!=-1){
    i(A,y);
    if(y.metaData){
        if(!A.duration){
            A.duration=y.metaData.duration
            }else{
            A.fullDuration=y.metaData.duration
            }
        }
}
var x=true;
m(u[v],function(){
    x=this.call(s,A,y,w)
    });
return x
}
});
if(t.onCuepoint){
    var o=t.onCuepoint;
    q.onCuepoint.apply(q,typeof o=="function"?[o]:o);
    delete t.onCuepoint
    }
    m(t,function(v,w){
    if(typeof w=="function"){
        j(u,v,w);
        delete t[v]
    }
});
if(r==-1){
    s.onCuepoint=this.onCuepoint
    }
};

var l=function(p,r,q,t){
    var o=this,s={},u=false;
    if(t){
        i(s,t)
        }
        m(r,function(v,w){
        if(typeof w=="function"){
            s[v]=w;
            delete r[v]
        }
    });
i(this,{
    animate:function(y,z,x){
        if(!y){
            return o
            }
            if(typeof z=="function"){
            x=z;
            z=500
            }
            if(typeof y=="string"){
            var w=y;
            y={};

            y[w]=z;
            z=500
            }
            if(x){
            var v=e();
            s[v]=x
            }
            if(z===undefined){
            z=500
            }
            r=q._api().fp_animate(p,y,z,v);
        return o
        },
    css:function(w,x){
        if(x!==undefined){
            var v={};

            v[w]=x;
            w=v
            }
            r=q._api().fp_css(p,w);
        i(o,r);
        return o
        },
    show:function(){
        this.display="block";
        q._api().fp_showPlugin(p);
        return o
        },
    hide:function(){
        this.display="none";
        q._api().fp_hidePlugin(p);
        return o
        },
    toggle:function(){
        this.display=q._api().fp_togglePlugin(p);
        return o
        },
    fadeTo:function(y,x,w){
        if(typeof x=="function"){
            w=x;
            x=500
            }
            if(w){
            var v=e();
            s[v]=w
            }
            this.display=q._api().fp_fadeTo(p,y,x,v);
        this.opacity=y;
        return o
        },
    fadeIn:function(w,v){
        return o.fadeTo(1,w,v)
        },
    fadeOut:function(w,v){
        return o.fadeTo(0,w,v)
        },
    getName:function(){
        return p
        },
    getPlayer:function(){
        return q
        },
    _fireEvent:function(w,v,x){
        if(w=="onUpdate"){
            var z=q._api().fp_getPlugin(p);
            if(!z){
                return
            }
            i(o,z);
            delete o.methods;
            if(!u){
                m(z.methods,function(){
                    var B=""+this;
                    o[B]=function(){
                        var C=[].slice.call(arguments);
                        var D=q._api().fp_invoke(p,B,C);
                        return D==="undefined"||D===undefined?o:D
                        }
                    });
            u=true
            }
        }
    var A=s[w];
if(A){
    var y=A.apply(o,v);
    if(w.slice(0,1)=="_"){
        delete s[w]
    }
    return y
    }
    return o
}
})
};

function b(q,G,t){
    var w=this,v=null,D=false,u,s,F=[],y={},x={},E,r,p,C,o,A;
    i(w,{
        id:function(){
            return E
            },
        isLoaded:function(){
            return(v!==null&&v.fp_play!=undefined&&!D)
            },
        getParent:function(){
            return q
            },
        hide:function(H){
            if(H){
                q.style.height="0px"
                }
                if(w.isLoaded()){
                v.style.height="0px"
                }
                return w
            },
        show:function(){
            q.style.height=A+"px";
            if(w.isLoaded()){
                v.style.height=o+"px"
                }
                return w
            },
        isHidden:function(){
            return w.isLoaded()&&parseInt(v.style.height,10)===0
            },
        load:function(J){
            if(!w.isLoaded()&&w._fireEvent("onBeforeLoad")!==false){
                var H=function(){
                    u=q.innerHTML;
                    if(u&&!flashembed.isSupported(G.version)){
                        q.innerHTML=""
                        }
                        flashembed(q,G,{
                        config:t
                    });
                    if(J){
                        J.cached=true;
                        j(x,"onLoad",J)
                        }
                    };

            var I=0;
            m(a,function(){
                this.unload(function(K){
                    if(++I==a.length){
                        H()
                        }
                    })
            })
        }
        return w
    },
    unload:function(J){
        if(this.isFullscreen()&&/WebKit/i.test(navigator.userAgent)){
            if(J){
                J(false)
                }
                return w
            }
            if(u.replace(/\s/g,"")!==""){
            if(w._fireEvent("onBeforeUnload")===false){
                if(J){
                    J(false)
                    }
                    return w
                }
                D=true;
            try{
                if(v){
                    v.fp_close();
                    w._fireEvent("onUnload")
                    }
                }catch(H){}
        var I=function(){
            v=null;
            q.innerHTML=u;
            D=false;
            if(J){
                J(true)
                }
            };

    setTimeout(I,50)
    }else{
    if(J){
        J(false)
        }
    }
return w
},
getClip:function(H){
    if(H===undefined){
        H=C
        }
        return F[H]
    },
getCommonClip:function(){
    return s
    },
getPlaylist:function(){
    return F
    },
getPlugin:function(H){
    var J=y[H];
    if(!J&&w.isLoaded()){
        var I=w._api().fp_getPlugin(H);
        if(I){
            J=new l(H,I,w);
            y[H]=J
            }
        }
    return J
},
getScreen:function(){
    return w.getPlugin("screen")
    },
getControls:function(){
    return w.getPlugin("controls")._fireEvent("onUpdate")
    },
getLogo:function(){
    try{
        return w.getPlugin("logo")._fireEvent("onUpdate")
        }catch(H){}
},
getPlay:function(){
    return w.getPlugin("play")._fireEvent("onUpdate")
    },
getConfig:function(H){
    return H?k(t):t
    },
getFlashParams:function(){
    return G
    },
loadPlugin:function(K,J,M,L){
    if(typeof M=="function"){
        L=M;
        M={}
    }
    var I=L?e():"_";
w._api().fp_loadPlugin(K,J,M,I);
var H={};

H[I]=L;
var N=new l(K,null,w,H);
y[K]=N;
return N
},
getState:function(){
    return w.isLoaded()?v.fp_getState():-1
    },
play:function(I,H){
    var J=function(){
        if(I!==undefined){
            w._api().fp_play(I,H)
            }else{
            w._api().fp_play()
            }
        };

if(w.isLoaded()){
    J()
    }else{
    if(D){
        setTimeout(function(){
            w.play(I,H)
            },50)
        }else{
        w.load(function(){
            J()
            })
        }
    }
return w
},
getVersion:function(){
    var I="flowplayer.js 3.2.0";
    if(w.isLoaded()){
        var H=v.fp_getVersion();
        H.push(I);
        return H
        }
        return I
    },
_api:function(){
    if(!w.isLoaded()){
        throw"Flowplayer "+w.id()+" not loaded when calling an API method"
        }
        return v
    },
setClip:function(H){
    w.setPlaylist([H]);
    return w
    },
getIndex:function(){
    return p
    }
});
m(("Click*,Load*,Unload*,Keypress*,Volume*,Mute*,Unmute*,PlaylistReplace,ClipAdd,Fullscreen*,FullscreenExit,Error,MouseOver,MouseOut").split(","),function(){
    var H="on"+this;
    if(H.indexOf("*")!=-1){
        H=H.slice(0,H.length-1);
        var I="onBefore"+H.slice(2);
        w[I]=function(J){
            j(x,I,J);
            return w
            }
        }
    w[H]=function(J){
    j(x,H,J);
    return w
    }
});
m(("pause,resume,mute,unmute,stop,toggle,seek,getStatus,getVolume,setVolume,getTime,isPaused,isPlaying,startBuffering,stopBuffering,isFullscreen,toggleFullscreen,reset,close,setPlaylist,addClip,playFeed,setKeyboardShortcutsEnabled,isKeyboardShortcutsEnabled").split(","),function(){
    var H=this;
    w[H]=function(J,I){
        if(!w.isLoaded()){
            return w
            }
            var K=null;
        if(J!==undefined&&I!==undefined){
            K=v["fp_"+H](J,I)
            }else{
            K=(J===undefined)?v["fp_"+H]():v["fp_"+H](J)
            }
            return K==="undefined"||K===undefined?w:K
        }
    });
w._fireEvent=function(Q){
    if(typeof Q=="string"){
        Q=[Q]
        }
        var R=Q[0],O=Q[1],M=Q[2],L=Q[3],K=0;
    if(t.debug){
        g(Q)
        }
        if(!w.isLoaded()&&R=="onLoad"&&O=="player"){
        v=v||c(r);
        o=v.clientHeight;
        m(F,function(){
            this._fireEvent("onLoad")
            });
        m(y,function(S,T){
            T._fireEvent("onUpdate")
            });
        s._fireEvent("onLoad")
        }
        if(R=="onLoad"&&O!="player"){
        return
    }
    if(R=="onError"){
        if(typeof O=="string"||(typeof O=="number"&&typeof M=="number")){
            O=M;
            M=L
            }
        }
    if(R=="onContextMenu"){
    m(t.contextMenu[O],function(S,T){
        T.call(w)
        });
    return
}
if(R=="onPluginEvent"||R=="onBeforePluginEvent"){
    var H=O.name||O;
    var I=y[H];
    if(I){
        I._fireEvent("onUpdate",O);
        return I._fireEvent(M,Q.slice(3))
        }
        return
}
if(R=="onPlaylistReplace"){
    F=[];
    var N=0;
    m(O,function(){
        F.push(new h(this,N++,w))
        })
    }
    if(R=="onClipAdd"){
    if(O.isInStream){
        return
    }
    O=new h(O,M,w);
    F.splice(M,0,O);
    for(K=M+1;K<F.length;K++){
        F[K].index++
    }
    }
    var P=true;
if(typeof O=="number"&&O<F.length){
    C=O;
    var J=F[O];
    if(J){
        P=J._fireEvent(R,M,L)
        }
        if(!J||P!==false){
        P=s._fireEvent(R,M,L,J)
        }
    }
m(x[R],function(){
    P=this.call(w,O,M);
    if(this.cached){
        x[R].splice(K,1)
        }
        if(P===false){
        return false
        }
        K++
});
return P
};

function B(){
    if($f(q)){
        $f(q).getParent().innerHTML="";
        p=$f(q).getIndex();
        a[p]=w
        }else{
        a.push(w);
        p=a.length-1
        }
        A=parseInt(q.style.height,10)||q.clientHeight;
    E=q.id||"fp"+e();
    r=G.id||E+"_api";
    G.id=r;
    t.playerId=E;
    if(typeof t=="string"){
        t={
            clip:{
                url:t
            }
        }
    }
if(typeof t.clip=="string"){
    t.clip={
        url:t.clip
        }
    }
t.clip=t.clip||{};

if(q.getAttribute("href",2)&&!t.clip.url){
    t.clip.url=q.getAttribute("href",2)
    }
    s=new h(t.clip,-1,w);
t.playlist=t.playlist||[t.clip];
var H=0;
m(t.playlist,function(){
    var J=this;
    if(typeof J=="object"&&J.length){
        J={
            url:""+J
            }
        }
    m(t.clip,function(K,L){
    if(L!==undefined&&J[K]===undefined&&typeof L!="function"){
        J[K]=L
        }
    });
t.playlist[H]=J;
J=new h(J,H,w);
F.push(J);
H++
});
m(t,function(J,K){
    if(typeof K=="function"){
        if(s[J]){
            s[J](K)
            }else{
            j(x,J,K)
            }
            delete t[J]
    }
});
m(t.plugins,function(J,K){
    if(K){
        y[J]=new l(J,K,w)
        }
    });
if(!t.plugins||t.plugins.controls===undefined){
    y.controls=new l("controls",null,w)
    }
    y.canvas=new l("canvas",null,w);
function I(J){
    if(!w.isLoaded()&&w._fireEvent("onBeforeClick")!==false){
        w.load()
        }
        return f(J)
    }
    u=q.innerHTML;
if(u.replace(/\s/g,"")!==""){
    if(q.addEventListener){
        q.addEventListener("click",I,false)
        }else{
        if(q.attachEvent){
            q.attachEvent("onclick",I)
            }
        }
}else{
    if(q.addEventListener){
        q.addEventListener("click",f,false)
        }
        w.load()
    }
}
if(typeof q=="string"){
    var z=c(q);
    if(!z){
        throw"Flowplayer cannot access element: "+q
        }else{
        q=z;
        B()
        }
    }else{
    B()
    }
}
var a=[];
function d(o){
    this.length=o.length;
    this.each=function(p){
        m(o,p)
        };

    this.size=function(){
        return o.length
        }
    }
window.flowplayer=window.$f=function(){
    var p=null;
    var o=arguments[0];
    if(!arguments.length){
        m(a,function(){
            if(this.isLoaded()){
                p=this;
                return false
                }
            });
    return p||a[0]
    }
    if(arguments.length==1){
    if(typeof o=="number"){
        return a[o]
        }else{
        if(o=="*"){
            return new d(a)
            }
            m(a,function(){
            if(this.id()==o.id||this.id()==o||this.getParent()==o){
                p=this;
                return false
                }
            });
    return p
    }
}
if(arguments.length>1){
    var t=arguments[1],q=(arguments.length==3)?arguments[2]:{};

    if(typeof t=="string"){
        t={
            src:t
        }
    }
    t=i({
    bgcolor:"#000000",
    version:[9,0],
    expressInstall:"http://static.flowplayer.org/swf/expressinstall.swf",
    cachebusting:true
},t);
if(typeof o=="string"){
    if(o.indexOf(".")!=-1){
        var s=[];
        m(n(o),function(){
            s.push(new b(this,k(t),k(q)))
            });
        return new d(s)
        }else{
        var r=c(o);
        return new b(r!==null?r:o,t,q)
        }
    }else{
    if(o){
        return new b(o,t,q)
        }
    }
}
return null
};

i(window.$f,{
    fireEvent:function(){
        var o=[].slice.call(arguments);
        var q=$f(o[0]);
        return q?q._fireEvent(o.slice(1)):null
        },
    addPlugin:function(o,p){
        b.prototype[o]=p;
        return $f
        },
    each:m,
    extend:i
});
if(typeof jQuery=="function"){
    jQuery.fn.flowplayer=function(q,p){
        if(!arguments.length||typeof arguments[0]=="number"){
            var o=[];
            this.each(function(){
                var r=$f(this);
                if(r){
                    o.push(r)
                    }
                });
        return arguments.length?o[arguments[0]]:new d(o)
        }
        return this.each(function(){
        $f(this,k(q),p?k(p):{})
        })
    }
}
})();
(function(){
    var h=document.all,j="http://www.adobe.com/go/getflashplayer",c=typeof jQuery=="function",e=/(\d+)[^\d]+(\d+)[^\d]*(\d*)/,b={
        width:"100%",
        height:"100%",
        id:"_"+(""+Math.random()).slice(9),
        allowfullscreen:true,
        allowscriptaccess:"always",
        quality:"high",
        version:[3,0],
        onFail:null,
        expressInstall:null,
        w3c:false,
        cachebusting:false
    };

    if(window.attachEvent){
        window.attachEvent("onbeforeunload",function(){
            __flash_unloadHandler=function(){};

            __flash_savedUnloadHandler=function(){}
        })
    }
    function i(l,f){
    if(f){
        for(key in f){
            if(f.hasOwnProperty(key)){
                l[key]=f[key]
                }
            }
        }
        return l
}
function a(f,n){
    var m=[];
    for(var l in f){
        if(f.hasOwnProperty(l)){
            m[l]=n(f[l])
            }
        }
    return m
}
window.flashembed=function(f,m,l){
    if(typeof f=="string"){
        f=document.getElementById(f.replace("#",""))
        }
        if(!f){
        return
    }
    if(typeof m=="string"){
        m={
            src:m
        }
    }
    return new d(f,i(i({},b),m),l)
};

var g=i(window.flashembed,{
    conf:b,
    getVersion:function(){
        var f;
        try{
            f=navigator.plugins["Shockwave Flash"].description.slice(16)
            }catch(n){
            try{
                var l=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
                f=l&&l.GetVariable("$version")
                }catch(m){}
        }
        f=e.exec(f);
    return f?[f[1],f[3]]:[0,0]
    },
asString:function(l){
    if(l===null||l===undefined){
        return null
        }
        var f=typeof l;
    if(f=="object"&&l.push){
        f="array"
        }
        switch(f){
        case"string":
            l=l.replace(new RegExp('(["\\\\])',"g"),"\\$1");
            l=l.replace(/^\s?(\d+\.?\d+)%/,"$1pct");
            return'"'+l+'"';
        case"array":
            return"["+a(l,function(o){
            return g.asString(o)
            }).join(",")+"]";
        case"function":
            return'"function()"';
        case"object":
            var m=[];
            for(var n in l){
            if(l.hasOwnProperty(n)){
                m.push('"'+n+'":'+g.asString(l[n]))
                }
            }
        return"{"+m.join(",")+"}"
        }
        return String(l).replace(/\s/g," ").replace(/\'/g,'"')
    },
getHTML:function(o,l){
    o=i({},o);
    var n='<object width="'+o.width+'" height="'+o.height+'" id="'+o.id+'" name="'+o.id+'"';
    if(o.cachebusting){
        o.src+=((o.src.indexOf("?")!=-1?"&":"?")+Math.random())
        }
        if(o.w3c||!h){
        n+=' data="'+o.src+'" type="application/x-shockwave-flash"'
        }else{
        n+=' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
        }
        n+=">";
    if(o.w3c||h){
        n+='<param name="movie" value="'+o.src+'" />'
        }
        o.width=o.height=o.id=o.w3c=o.src=null;
    o.onFail=o.version=o.expressInstall=null;
    for(var m in o){
        if(o[m]){
            n+='<param name="'+m+'" value="'+o[m]+'" />'
            }
        }
    var p="";
if(l){
    for(var f in l){
        if(l[f]){
            var q=l[f];
            p+=f+"="+(/function|object/.test(typeof q)?g.asString(q):q)+"&"
            }
        }
    p=p.slice(0,-1);
n+='<param name="flashvars" value=\''+p+"' />"
}
n+='<param name="wmode" value="opaque"/>'
n+="</object>";
return n
},
isSupported:function(f){
    return k[0]>f[0]||k[0]==f[0]&&k[1]>=f[1]
    }
});
var k=g.getVersion();
function d(f,n,m){
    if(g.isSupported(n.version)){
        f.innerHTML=g.getHTML(n,m)
        }else{
        if(n.expressInstall&&g.isSupported([6,65])){
            f.innerHTML=g.getHTML(i(n,{
                src:n.expressInstall
                }),{
                MMredirectURL:location.href,
                MMplayerType:"PlugIn",
                MMdoctitle:document.title
                })
            }else{
            if(!f.innerHTML.replace(/\s/g,"")){
                f.innerHTML="<h2>Flash version "+n.version+" or greater is required</h2><h3>"+(k[0]>0?"Your version is "+k:"You have no flash plugin installed")+"</h3>"+(f.tagName=="A"?"<p>Click here to download latest version</p>":"<p>Download latest version from <a href='"+j+"'>here</a></p>");
                if(f.tagName=="A"){
                    f.onclick=function(){
                        location.href=j
                        }
                    }
            }
        if(n.onFail){
        var l=n.onFail.call(this);
        if(typeof l=="string"){
            f.innerHTML=l
            }
        }
}
}
if(h){
    window[n.id]=document.getElementById(n.id)
    }
    i(this,{
    getRoot:function(){
        return f
        },
    getOptions:function(){
        return n
        },
    getConf:function(){
        return m
        },
    getApi:function(){
        return f.firstChild
        }
    })
}
if(c){
    jQuery.tools=jQuery.tools||{
        version:"3.2.0"
    };

    jQuery.tools.flashembed={
        conf:b
    };

    jQuery.fn.flashembed=function(l,f){
        return this.each(function(){
            $(this).data("flashembed",flashembed(this,l,f))
            })
        }
    }
})();
