/**
 * horizon.slim.0.2.js
 * Javascript Class - where the magic happens ;)
 *
 * @package      "Horizon Slim"
 * @version      0.2.6_RC3
 *
 * @description  A horizontal Accordion Slider for various purposes
 *
 * @author       Jan Jost <support@negetics.de>
 * @link         http://www.negetics.de
 * @linkProject  http://extensions.negetics.de
 * @copyright    Copyright (C) 2010 Jan Jost! All Rights Reserved
 * @license      GNU/GPLv3 see GPL.txt
 */
var descFader=new Array();
function horizon(){
    var x,v,r,C,E,D,k,u,c,f,F,b,y,q,j,h,B,s,i,e,d,o,a,A,z,n,g,p;
    this.build=function(R,L,U,K,W,G,X,M,ac,ab,ae,H,S,ad,I,t,w,N,l,P,T){
        x=document.getElementById(R);
        v=L;
        r=U;
        C=K;
        W=W;
        E=G;
        x.clickEffect=X;
        x.even=M;
        u=ac;
        f=ab;
        F=ae;
        x.fC=H;
        b=x.getElementsByTagName("li");
        y=b.length;
        q=x.offsetWidth;
        j=Math.floor((q-v)/(y-1));
        z=(q-(j*(y-1))-v);
        n=Math.floor(q/y);
        g=q-(Math.floor(q/y)*y);
        x.aSD=P;
        x.dDFO=T;
        l=l;
        x.dS=w;
        x.o=false;
        x.active=false;
        x.list_width=q/y;
        x.dD=S;
        x.dDH=ad;
        x.lastOver=false;
        x.lastOut=false;
        x.firstActive=x.active;
        x.aPOn=I;
        x.aPPause=false;
        x.clickStopsaP=t;
        x.aPSpeed=N;
        if(W!=null){
            x.a=b[W-1]
        }
        if(navigator.appName.indexOf("Microsoft")!=-1){
            x.ie=true
        }else{
            x.ie=false
        }
        if(navigator.userAgent.indexOf("Mozilla")!=-1){
            x.mozilla=true
        }else{
            x.mozilla=false
        }
        if(navigator.userAgent.indexOf("Firefox")==-1){
            r=parseInt(U*2);
            C=parseInt(K/2)
        }
        x.h=this;
        for(var V=0;V<y;V++){
            var Q=b[V];
            Q.style.width=x.list_width+"px";
            var af=Q.getElementsByTagName("div");
            var aa=af[0].getElementsByTagName("div");
            if(x.slideMin){
                af[0].style.width=x.slideO+"px"
            }
            var Y;
            Q.desc=false;
            for(var J=0;J<aa.length;J++){
                if(aa[J].className=="neHSf"){
                    Y=aa[J];
                    Q.fader=aa[J]
                }
                if(aa[J].className=="neHSb"){
                    Q.desc=aa[J];
                    Q.desc.m=x;
                    if(!x.aSD){
                        if(x.dD==0){
                            Q.desc.style.top=(Q.desc.parentNode.offsetHeight)+"px"
                        }
                        if(x.dD==1){
                            Q.desc.style.top=(0-Q.desc.offsetHeight)+"px"
                        }
                        if(x.dDH==0){
                            Q.desc.style.left=(Q.desc.parentNode.offsetWidth)+"px"
                        }
                        if(x.dDH==1){
                            Q.desc.style.left="-"+(Q.desc.offsetWidth)+"px"
                        }
                    }else{
                        if(x.dD==0){
                            Q.desc.style.top=(Q.desc.parentNode.offsetHeight-Q.desc.offsetHeight)+"px"
                        }
                        if(x.dD==1){
                            Q.desc.style.top=(0)+"px"
                        }
                        if(x.dDH==0){
                            Q.desc.style.left=(Q.desc.parentNode.offsetWidth-Q.desc.offsetWidth)+"px"
                        }
                        if(x.dDH==1){
                            Q.desc.style.left="-"+(0)+"px"
                        }
                    }
                    var O=Q.desc.getElementsByTagName("div");
                    Q.desc.beBa=O[0];
                    Q.desc.beTe=O[1];
                    x.h.sO(Q.desc.beBa,l);
                    Q.desc.beBa.style.width=Q.desc.offsetWidth+"px";
                    Q.desc.beBa.style.height=Q.desc.offsetHeight+"px";
                    Q.desc.s=Q;
                    Q.desc.beBa.s=Q;
                    this.setClick(Q.desc.beBa)
                }
                if(aa[J].className=="neHSiO"){
                    Q.fadeInImg=aa[J];
                    x.h.sO(Q.fadeInImg,0);
                    Q.fadeInImg.s=Q;
                    this.setClick(Q.fadeInImg)
                }
                if(aa[J].className=="neHSi"){
                    Q.img=aa[J];
                    Q.img.s=Q;
                    this.setClick(Q.img)
                }
                var m=aa[J].parentNode.getElementsByTagName("img");
                if(m.length>0){
                    var Z=m[0];
                    Q.handle=Z;
                    Q.handle.s=Q;
                    this.setClick(Q.handle)
                }
            }
            Q.num=V;
            this.sO(Y,0);
            if(V==W-1){
                x.a=Q
            }
            this.timerFade(Q)
        }
        if(W!=null){
            x.o=b[W-1];
            x.a=b[W-1]
        }
        x.timerFade=setInterval(function(){
            x.h.fade(false)
        },r);
        x.onmouseout=function(){
            if(x.fC){
                x.a=false
            }
            x.lastOver=x.o;
            x.o=false;
            x.aPPause=false
        };

        if(x.aPOn){
            x.h.startaP()
        }
        return(this)
    };

    this.setClick=function(l){
        if(x.clickEffect||(l.s.handle&&l.s.handle==l)){
            l.onclick=function(){
                x.slideEnded=false;
                l=this.s;
                if(x.clickStopsaP){
                    x.h.stopaP()
                }
                if(l==x.a&&!E){
                    var m=-1;
                    for(var t=0;t<y;t++){
                        var w=b[t];
                        if(w==x.a&&m==-1){
                            m=parseInt(t)
                        }
                    }
                    if(u==0){
                        if(m<y-1&&m!=-1){
                            x.a=b[m+1];
                            l=b[m+1]
                        }else{
                            x.a=b[0];
                            l=b[0]
                        }
                    }else{
                        if(m>0&&m!=-1){
                            x.a=b[m-1];
                            l=b[m-1]
                        }else{
                            x.a=b[y-1];
                            l=b[y-1]
                        }
                    }
                }else{
                    x.a=l
                }
                clearInterval(x.timerFade);
                x.timerFade=setInterval(function(){
                    x.h.fade(l)
                },r)
            }
        }
    };

    this.fadeDesc=function(m){
        if(x.o){
            m=x.o.desc
        }else{
            if(x.a){
                m=x.a.desc
            }
        }
        var l=false;
        if(x.aSD==false&&(m&&(m.s==x.o||m.s==x.a)&&m.parentNode.style.width==m.parentNode.parentNode.style.width)){
            l=x.h.moveIt(m,x.dD,true)
        }
        if(x.aSD==false&&(x.a&&x.a.desc&&x.a.desc.parentNode.style.width==x.a.desc.parentNode.parentNode.style.width)&&(!x.dDFO||x.o==x.a)){
            l=x.h.moveIt(x.a.desc,x.dD,true)
        }
        x.h.clearDesc(m.s);
        x.re=l;
        return(l)
    };

    this.clearDesc=function(w){
        if(x.o){
            w=x.o
        }else{
            if(x.a){
                w=x.a
            }
        }
        var m=true;
        for(var l=0;l<b.length;l++){
            var t=b[l].desc;
            if(x.aSD==false&&((t&&w!=t.s&&(!x.a||t.s!=x.a))||(x.dDFO&&x.o&&x.o!=t.s)||(t.parentNode.style.width!=t.parentNode.parentNode.style.width&&(x.dDFO||(x.a&&x.a!=t.s))))){
                m=x.h.moveIt(t,x.dD,false)
            }
        }
        return(m)
    };

    this.moveIt=function(M,w,G){
        var K=x.dD;
        var L=true;
        var H;
        var t;
        if(G){
            t=2
        }else{
            t=1
        }
        if(M.style){
            if(x.dD==0){
                if(G){
                    H=M.offsetHeight
                }else{
                    H=0
                }
                var m=(M.parentNode.offsetHeight-H);
                var J=parseInt(M.style.top);
                if(J>m||(!G&&J<m)){
                    var l;
                    if(G){
                        l=parseInt((J-m)/x.dS)
                    }else{
                        l=parseInt((m-J)/x.dS)
                    }
                    l=(l>0)?l:t;
                    if(!G){
                        l=l*-1
                    }
                    var I=J-l;
                    if(I>m||(!G&&J<m)){
                        M.style.top=I+"px"
                    }else{
                        M.style.top=m+"px";
                        L=true
                    }
                }
            }
            if(x.dD==1){
                if(!G){
                    H=M.offsetHeight
                }else{
                    H=0
                }
                var m=0-H;
                var J=parseInt(M.style.top);
                if(J<m||(!G&&J>m)){
                    var l;
                    if(G){
                        l=parseInt((m-J)/x.dS)
                    }else{
                        l=parseInt((J-m)/x.dS)
                    }
                    l=(l>0)?l:t;
                    if(!G){
                        l=l*-1
                    }
                    var I=J+l;
                    if(I<m||(!G&&J>m)){
                        M.style.top=I+"px"
                    }else{
                        M.style.top=m+"px";
                        L=true
                    }
                }
            }
            if(x.dDH==0){
                if(G){
                    H=M.offsetWidth
                }else{
                    H=0
                }
                var m=(M.parentNode.offsetWidth-H);
                var J=parseInt(M.style.left);
                if(J>m||(!G&&J<m)){
                    var l;
                    if(G){
                        l=parseInt((J-m)/x.dS)
                    }else{
                        l=parseInt((m-J)/x.dS)
                    }
                    l=(l>0)?l:t;
                    if(!G){
                        l=l*-1
                    }
                    var I=J-l;
                    if(I>m||(!G&&J<m)){
                        M.style.left=I+"px"
                    }else{
                        M.style.left=m+"px";
                        L=true
                    }
                }
            }
            if(x.dDH==1){
                if(!G){
                    H=M.offsetWidth
                }else{
                    H=0
                }
                var m=0-H;
                var J=parseInt(M.style.left);
                if(J<m||(!G&&J>m)){
                    var l;
                    if(G){
                        l=parseInt((m+-J)/x.dS)
                    }else{
                        l=parseInt((J-m)/x.dS)
                    }
                    l=(l>0)?l:t;
                    if(!G){
                        l=l*-1
                    }
                    var I=J+l;
                    if(I<m||(!G&&J>m)){
                        M.style.left=I+"px"
                    }else{
                        M.style.left=m+"px";
                        L=true
                    }
                }
            }
        }
        return(L)
    };

    this.timerFade=function(l){
        l.onmouseover=function(){
            x.o=l;
            x.aPPause=true;
            if((!x.lastOver&&!x.o)||(x.lastOver.num&&x.lastOver.num!=x.o.num)||(x.fC&&!E)){
                clearInterval(x.timerFade);
                x.timerFade=setInterval(function(){
                    x.h.fade(l)
                },r)
            }
            x.lastOver=l
        }
    };

    this.startaP=function(){
        if(x.aP){
            clearInterval(x.aP)
        }
        x.o=false;
        x.aP=setInterval(function(){
            x.h.aP()
        },x.aPSpeed)
    };

    this.stopaP=function(){
        if(x.aP){
            clearInterval(x.aP)
        }
    };

    this.aP=function(){
        if(!x.aPPause){
            if(!x.a){
                x.a=b[b.length-1]
            }
            var l=x.a.num;
            var m=false;
            if(u==0){
                if(l<y-1&&l!=-1){
                    x.a=b[l+1];
                    m=b[l+1]
                }else{
                    x.a=b[0];
                    m=b[0]
                }
            }else{
                if(l>0&&l!=-1){
                    x.a=b[l-1];
                    m=b[l-1]
                }else{
                    x.a=b[y-1];
                    m=b[y-1]
                }
            }
            clearInterval(x.timerFade);
            x.timerFade=setInterval(function(){
                x.h.fade(m)
            },r)
        }
    };

    this.slide=function(J){
        var Q=x.list_width;
        x.slideEnded=false;
        if(J==undefined){
            J=false
        }
        if(J.style){
            var t=parseInt(J.style.width)
        }
        if(J==false&&x.even==true&&!x.a||(x.a==undefined&&!J)){
            if(Q!=parseInt(Q)){
                Q=Q-(0.003*y)
            }
            x.h.clearDesc(J);
            x.slideEnded=true;
            var T=new Array();
            var V=new Array();
            var K=0;
            for(var R=0;R<y;R++){
                O=b[R];
                w=parseInt(O.style.width);
                if(w<=n){
                    V[V.length]=O;
                    K=K+parseInt(O.style.width)
                }else{
                    if(w>n){
                        T[T.length]=O
                    }
                }
            }
            var S=q;
            var N=g;
            var U=y;
            for(var R=0;R<T.length;R++){
                var O,w,G;
                var L=0;
                O=T[R];
                w=parseInt(O.style.width);
                L=Math.ceil((w-n)/C);
                L=(L>0)?L:1;
                if(w-L>n){
                    G=w-L;
                    x.slideEnded=false
                }else{
                    G=n;
                    if(N>0){
                        var I=Math.ceil(N/U);
                        G=G+I;
                        N=N-I
                    }
                }
                if(S-G<0){
                    G=G+(S-G)
                }
                O.style.width=(G)+"px";
                S=S-G;
                U--
            }
            var m=V.length;
            L=Math.floor((S-K)/m);
            L=(L>0)?L:1;
            for(var R=0;R<V.length;R++){
                O=V[R];
                w=parseInt(O.style.width);
                if(w+L<=n||(N>0&&w+L<=n+1)){
                    G=w+L;
                    if(w+L<n+1){
                        x.slideEnded=false
                    }
                }else{
                    G=n
                }
                if(R==V.length-1){
                    G=(S)
                }
                if(N>0){
                    var I=Math.ceil(N/U);
                    G=G+I;
                    N=N-I
                }
                if(S-G<0){
                    G=G+(S-G)
                }
                O.style.width=(G)+"px";
                S=S-G;
                U--
            }
        }else{
            if(t<v||(J==false&&x.a&&parseInt(x.a.style.width)<v)){
                x.h.clearDesc(J);
                var H=0;
                var R=0;
                var M=z;
                for(R;R<y;R++){
                    if(b[R]!=J||(J==false&&b[R]!=x.a)){
                        var O,w;
                        var L=0;
                        O=b[R];
                        w=parseInt(O.style.width);
                        if(w>j){
                            L=Math.floor((w-j)/C);
                            L=(L>0)?L:1;
                            var l=w-L;
                            if(l==j&&M>0){
                                l++;
                                M--;
                                L--
                            }
                            O.style.width=(l)+"px"
                        }
                        H=H+(w-L)
                    }
                }
                if(J.style){
                    J.style.width=(q-H)+"px"
                }else{
                    if(J==false&&x.a){
                        var P=parseInt(q);
                        for(var R=0;R<y;R++){
                            if(b[R]!=x.a){
                                P=P-parseInt(b[R].style.width)
                            }
                        }
                        x.a.style.width=(P)+"px"
                    }
                }
            }else{
                x.slideEnded=true;
                if(x.a&&x.a.desc){
                    x.a.desc.aktiv=true;
                    x.slideEnded=x.h.fadeDesc(x.a.desc)
                }
                if((J&&J.desc)&&J!=x.a){
                    J.desc.aktiv=true;
                    x.slideEnded=x.h.fadeDesc(J.desc)
                }
            }
        }
    };

    this.fade=function(L){
        if((E||x.fC)){
            if(x.o!=false&&E){
                x.h.slide(x.o)
            }else{
                if(x.fC&&L==false){
                    x.a=false;
                    x.o=false
                }
                if(x.even&&L==false){
                    x.h.slide(false)
                }else{
                    if(x.a){
                        x.h.slide(x.a)
                    }else{
                        x.h.slide(false)
                    }
                }
            }
        }else{
            if(x.a){
                x.h.slide(x.a)
            }
        }
        var w=0;
        var J=x.getElementsByTagName("li");
        var t=J.length;
        var G=1;
        for(w;w<t;w++){
            var H;
            var I=J[w];
            H=this.gO(I.fader);
            if(I!=x.a||(x.dDFO&&x.a!=x.o)){
                if(H<F){
                    I.fader.style.display="block";
                    H=H+0.04;
                    this.sO(I.fader,H);
                    if(H<F){
                        G=0
                    }
                }
                if(I.fadeInImg&&I!=x.o){
                    var m=this.gO(I.fadeInImg);
                    m=m-0.04;
                    m=(m>0)?m:0;
                    this.sO(I.fadeInImg,m);
                    if(m>0){
                        G=0
                    }
                }
            }
        }
        if(x.a&&(!x.dDFO||(x.dDFO&&!x.o))){
            H=H-f;
            if(x.a.fader.style.display!="none"){
                this.sO(x.a.fader,0);
                x.a.fader.style.display="none"
            }
            if(x.a.fadeInImg){
                var m=this.gO(x.a.fadeInImg);
                m=m+0.04;
                if(m<1){
                    this.sO(x.a.fadeInImg,m);
                    if(m<1){
                        G=0
                    }
                }else{
                    this.sO(x.a.fadeInImg,1)
                }
            }
        }
        if(x.o){
            var H;
            H=this.gO(x.o.fader);
            if(H>0){
                H=H-f;
                if(x.o.fader.style.display!="none"){
                    this.sO(x.o.fader,0);
                    x.o.fader.style.display="none"
                }
            }
            if(x.o.fadeInImg){
                var m=this.gO(x.o.fadeInImg);
                m=m+0.04;
                m=(m<1)?m:1;
                if(m<1){
                    this.sO(x.o.fadeInImg,m);
                    if(m<1){
                        G=0
                    }
                }else{
                    this.sO(x.o.fadeInImg,1)
                }
            }
        }
        var K=true;
        if(x.a){
            K=x.h.clearDesc(x.a)
        }
        if(G==1&&K&&(x.slideEnded||(x.slideEnded==undefined&&x.even))){
            x.o=false;
            x.lastOver=false
        }
    };

    this.sO=function(l,m){
        if(x.ie){
            var t=parseInt(m*100);
            if(t>(100)){
                t=100
            }
            l.style.filter="alpha(opacity="+t+")"
        }else{
            var t=parseInt(m*100);
            if(t>(100)){
                t=100
            }
            //l.style.filter="alpha(opacity="+t+")";
           // l.style.MozOpacity=m;
            l.style.opacity=m;
            //l.style.border="1px solid red";
            //l.css('-khtml-opacity',m)
        }
    };

    this.gO=function(l){
        var m;
        if(x.ie){
            m=parseInt(parseFloat(l.style.filter.replace(/[\D\.]/g,"")))/100
        }else{
            m=parseFloat(l.style.opacity)
        }
        return(m)
    }
};
