/**
Script: Slideshow.js
	Slideshow - A javascript class for Mootools to stream and animate the presentation of images on your website.

License:
	MIT-style license.

Copyright:
	Copyright (c) 2008 [Aeron Glemann](http://www.electricprism.com/aeron/).

Dependencies:
	Mootools 1.2 Core: Fx.Morph, Fx.Tween, Selectors, Element.Dimensions.
	Mootools 1.2 More: Assets.
*/
var CurrentSlide = 0;
var controlStatus = "hidden";
var StatusControl = "hidden";
var IsLoop=1;
Slideshow=new Class({
    Implements:[Chain,Events,Options],
    options:{
        captions:false,
        center:true,
        classes:[],
        controller:false,
        delay:2000,
        duration:750,
        fast:false,
        height:false,
        href:"",
        hu:"",
        linked:false,
        loader:{
            animate:["css/loader-#.png",12]
            },
        loop:false,
        match:/\?slide=(\d+)$/,
        overlap:true,
        paused:false,
        random:false,
        replace:[/(\.[^\.]+)$/,"t$1"],
        resize:"width",
        slide:0,
        thumbnails:false,
        transition:function(A){
            return -(Math.cos(Math.PI*A)-1)/2
            },
        width:false
    },
    initialize:function(C,F,L){
        this.setOptions(L);this.slideshow=$(C);if(!this.slideshow){
            return
        }this.slideshow.set("styles",{
            display:"block",
            position:"relative",
            "z-index":0
        });var H=window.location.href.match(this.options.match);this.slide=(this.options.match&&H)?H[1].toInt():this.options.slide;this.counter=this.delay=this.transition=0;this.direction="left";this.paused=false;if(!this.options.overlap){
            this.options.duration*=2
            }var G=this.slideshow.getElement("a")||new Element("a");if(!this.options.href){
            this.options.href=G.get("href")||""
            }if(this.options.hu.length&&!this.options.hu.test(/\/$/)){
            this.options.hu+="/"
            }var K=["slideshow","first","prev","play","pause","next","last","images","captions","controller","thumbnails","hidden","visible","inactive","active","loader"];var J=K.map(function(N,M){
            return this.options.classes[M]||N
            },this);this.classes=J.associate(K);this.classes.get=function(){
            var O="."+this.slideshow;for(var N=0,M=arguments.length;N<M;N++){
                O+=("-"+this[arguments[N]])
                }return O
            }.bind(this.classes);if(!F){
            this.options.hu="";F={};var D=this.slideshow.getElements(this.classes.get("thumbnails")+" img");this.slideshow.getElements(this.classes.get("images")+" img").each(function(O,P){
                var Q=O.get("src");var N=O.get("alt")||O.get("title")||"";var M=O.getParent().get("href")||"";var R=D[P].get("src")||"";F[Q]={
                    caption:N,
                    href:M,
                    thumbnail:R
                }
                })
            }var E=this.load(F);if(!E){
            return
        }this.events=$H({
            keydown:[],
            keyup:[],
            mousemove:[]
        });var B=function(M){
            switch(M.key){
                case"left":this.prev(M.shift);break;case"right":this.next(M.shift);break;case"p":this.pause();break
                    }
            }.bind(this);this.events.keyup.push(B);document.addEvent("keyup",B);var C=this.slideshow.getElement(this.classes.get("images"));var I=(C)?C.empty():new Element("div",{
            "class":this.classes.get("images").substr(1)
            }).inject(this.slideshow);var A=I.getSize();this.height=this.options.height||A.y;this.width=this.options.width||A.x;I.set({
            styles:{
                display:"block",
                height:this.height,
                overflow:"hidden",
                position:"relative",
                width:this.width
                }
            });this.slideshow.store("images",I);this.a=this.image=this.slideshow.getElement("img")||new Element("img");this.a.set("styles",{
            display:"none",
            position:"absolute",
            zIndex:1
        });this.b=this.a.clone();[this.a,this.b].each(function(M){
            G.clone().grab(M).inject(I)
            });if(this.options.captions){
            this._captions()
            }if(this.options.controller){
            this._controller()
            }if(this.options.loader){
            this._loader()
            }if(this.options.thumbnails){
            this._thumbnails()
            }this._preload()
        },
    go:function(B,A){
		//alert("go function");
		//alert("go function"+this.slide);
        if((this.slide-1+this.data.images.length)%this.data.images.length==B||$time()<this.transition){
            return
        }$clear(this.timer);
		this.delay=0;
		this.direction=(A)?A:((B<this.slide)?"right":"left");
		this.slide=B;
		//alert(this.slide);
if(this.preloader){
            this.preloader=this.preloader.destroy()
            }this._preload(this.options.fast||this.paused)
        },
    first:function(){
        this.prev(true)
        },
    prev:function(A){
		var B=0;if(!A){
            if(this.options.random){
                if(this.showed.i<2){
                    return
                }this.showed.i-=2;B=this.showed.array[this.showed.i]
                }else{
				B=(this.slide-2+this.data.images.length)%this.data.images.length 
				}
            }this.go(B,"right")
        },
    pause:function(A){
         /*if(this.slide==0 && this.paused==true)
             {
                 IsLoop=0;
             }*/
        if($chk(A)){
            this.paused=(A)?false:true
            }if(this.paused){
            this.paused=false;this.delay=this.transition=0;this.timer=this._preload.delay(100,this);[this.a,this.b].each(function(B){
                ["morph","tween"].each(function(C){
                    if(this.retrieve(C)){
                        this.get(C).resume()
                        }
                    },B)
                });if(this.options.controller){
                this.slideshow.getElement("."+this.classes.pause).removeClass(this.classes.play)
                }
            }else{
            this.paused=true;this.delay=Number.MAX_VALUE;this.transition=0;$clear(this.timer);[this.a,this.b].each(function(B){
                ["morph","tween"].each(function(C){
                    if(this.retrieve(C)){
                        this.get(C).pause()
                        }
                    },B)
                });if(this.options.controller){
                this.slideshow.getElement("."+this.classes.pause).addClass(this.classes.play)
                }
            }
			 if(document.getElementById("player"))
			 {
				 if(IsLoop)
				 {
					 if(this.paused)
					 {
						  hiton();
						  fade(1);
					 }
					 else					
						hitoff();				
				 }
				 else
				 {					 
					 IsLoop = 1;
					 hitoff();
				 }
			}
        },
    next:function(A){
        var B=(A)?this.data.images.length-1:this.slide;this.go(B,"left")
        },
    last:function(){
		this.next(true)
        },
    load:function(C){
        this.firstrun=true;this.showed={
            array:[],
            i:0
        };if($type(C)=="array"){
            this.options.captions=false;C=new Array(C.length).associate(C.map(function(G,F){
                return G+"?"+F
                }))
            }this.data={
            images:[],
            captions:[],
            hrefs:[],
            thumbnails:[]
        };for(image in C){
            var D=C[image]||{};var B=(D.caption)?D.caption.trim():"";var A=(D.href)?D.href.trim():((this.options.linked)?this.options.hu+image:this.options.href);var E=(D.thumbnail)?D.thumbnail.trim():image.replace(this.options.replace[0],this.options.replace[1]);this.data.images.push(image);this.data.captions.push(B);this.data.hrefs.push(A);this.data.thumbnails.push(E)
            }if(this.options.thumbnails&&this.slideshow.retrieve("thumbnails")){
            this._thumbnails()
            }if(this.slideshow.retrieve("images")){
            [this.a,this.b].each(function(F){
                ["morph","tween"].each(function(G){
                    if(this.retrieve(G)){
                        this.get(G).cancel()
                        }
                    },F)
                });this.slide=this.transition=0;this.go(0)
            }return this.data.images.length
        },
    destroy:function(A){
        this.events.each(function(C,B){
            C.each(function(D){
                document.removeEvent(B,D)
                })
            });this.pause(1);if(this.options.loader){
            $clear(this.slideshow.retrieve("loader").retrieve("timer"))
            }if(this.options.thumbnails){
            $clear(this.slideshow.retrieve("thumbnails").retrieve("timer"))
            }this.slideshow.uid=Native.UID++;if(A){
            this.slideshow[A]()
            }
        },
    _preload:function(A){
        if(!this.preloader){
            this.preloader=new Asset.image(this.options.hu+this.data.images[this.slide],{
                onload:function(){
                    this.store("loaded",true)
                    }
                })
            }if(this.preloader.retrieve("loaded")&&$time()>this.delay&&$time()>this.transition){
            if(this.stopped){
                if(this.options.captions){
                    this.slideshow.retrieve("captions").get("morph").cancel().start(this.classes.get("captions","hidden"))
                    }this.pause(1);if(this.end){
                    this.fireEvent("end")
                    }this.stopped=this.end=false;return
            }this.image=(this.counter%2)?this.b:this.a;this.image.set("styles",{
                display:"block",
                height:"auto",
                visibility:"hidden",
                width:"auto",
                zIndex:this.counter
                });["src","height","width"].each(function(C){
                this.image.set(C,this.preloader.get(C))
                },this);this._resize(this.image);this._center(this.image);var B=this.image.getParent();if(this.data.hrefs[this.slide]){
                B.set("href",this.data.hrefs[this.slide])
                }else{
                B.erase("href")
                }if(this.data.captions[this.slide]){
                B.set("title",this.data.captions[this.slide].replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"'"))
                }else{
                B.erase("title")
                }if(this.options.loader){
                this.slideshow.retrieve("loader").fireEvent("hide")
                }if(this.options.captions){
                this.slideshow.retrieve("captions").fireEvent("update",A)
                }if(this.options.thumbnails){
				this.slideshow.retrieve("thumbnails").fireEvent("update",A)
                }this._show(A);this._loaded()
            }else{
            if($time()>this.delay&&this.options.loader){
                this.slideshow.retrieve("loader").fireEvent("show")
                }this.timer=(this.paused&&this.preloader.retrieve("loaded"))?null:this._preload.delay(100,this,A)
            }
        },
    _show:function(B){
		if(!this.image.retrieve("morph")){
            var C=(this.options.overlap)?{
                duration:this.options.duration,
                link:"cancel"
            }:{
                duration:this.options.duration/2,
                link:"chain"
            };$$(this.a,this.b).set("morph",$merge(C,{
                onStart:this._start.bind(this),
                onComplete:this._complete.bind(this),
                transition:this.options.transition
                }))
            }var E=this.classes.get("images",((this.direction=="left")?"next":"prev"));var F=this.classes.get("images","visible");var A=(this.counter%2)?this.a:this.b;if(B){
            A.get("morph").cancel().set(E);this.image.get("morph").cancel().set(F)
            }else{
            if(this.options.overlap){
                A.get("morph").set(F);this.image.get("morph").set(E).start(F)
                }else{
                var D=function(G,H){
                    this.image.get("morph").set(G).start(H)
                    }.pass([E,F],this);E=this.classes.get("images",((this.direction=="left")?"prev":"next"));A.get("morph").set(F).start(E).chain(D)
                }
            }
        },
    _loaded:function(){        
        this.counter++;
        this.delay=(this.paused)?Number.MAX_VALUE:$time()+this.options.duration+this.options.delay;
        this.direction="left";
        this.transition=(this.paused||this.options.fast)?0:$time()+this.options.duration;
        if(this.slide+1==this.data.images.length&&!this.options.loop&&!this.options.random){
            this.stopped=this.end=true;
            }if(this.options.random){
            this.showed.i++;if(this.showed.i>=this.showed.array.length){
                var A=this.slide;if(this.showed.array.getLast()!=A){
                    this.showed.array.push(A)
                    }while(this.slide==A){
                    this.slide=$random(0,this.data.images.length-1)
                    }
                }else{
                this.slide=this.showed.array[this.showed.i]
                }
            }else{
            this.slide=(this.slide+1)%this.data.images.length           
           CurrentSlide = this.slide;
		   if(document.getElementById("player"))
			{
				if(IsLoop){				
					if((CurrentSlide == 0)||(CurrentSlide == (this.data.images.length-1)))
					{				
						fade(0);			
					}
					if(CurrentSlide==0)
					{
						this.paused=true;
						IsLoop = 0;
						if(this.options.controller){
						this.slideshow.getElement("."+this.classes.pause).addClass(this.classes.play)
						if(document.getElementById("player")){
							 if(this.paused)								
								setTimeout("hiton()",3500);				
							}
						}
					}
				}
			}
            }if(this.preloader){
            this.preloader=this.preloader.destroy()
            }this._preload()
        },
    _center:function(A){
        if(this.options.center){
            var B=A.getSize();A.set("styles",{
                left:(B.x-this.width)/-2,
                top:(B.y-this.height)/-2
                })
            }
        },
    _resize:function(B){
        if(this.options.resize){
            var D=this.preloader.get("height"),A=this.preloader.get("width");var E=this.height/D,C=this.width/A,F;if(this.options.resize=="length"){
                F=(E>C)?C:E
                }else{
                F=(E>C)?E:C
                }B.set("styles",{
                height:Math.ceil(D*F),
                width:Math.ceil(A*F)
                })
            }
        },
    _start:function(){
        this.fireEvent("start")
        },
    _complete:function(){
        if(this.firstrun&&this.options.paused){
            this.firstrun=false;this.pause(1)
            }this.fireEvent("complete")
        },
    _captions:function(){
        if(this.options.captions===true){
            this.options.captions={}
            }var B=this.slideshow.getElement(this.classes.get("captions"));var A=(B)?B.empty():new Element("div",{
            "class":this.classes.get("captions").substr(1)
            }).inject(this.slideshow);A.set({
            events:{
                update:function(D){
                    var C=this.slideshow.retrieve("captions");var F=(this.data.captions[this.slide]==="");if(D){
                        var G=(F)?"hidden":"visible";C.set("html",this.data.captions[this.slide]).get("morph").cancel().set(this.classes.get("captions",G))
                        }else{
                        var E=(F)?$empty:function(H){
                            this.slideshow.retrieve("captions").set("html",this.data.captions[H]).morph(this.classes.get("captions","visible"))
                            }.pass(this.slide,this);C.get("morph").cancel().start(this.classes.get("captions","hidden")).chain(E)
                        }
                    }.bind(this)
                },
            morph:$merge(this.options.captions,{
                link:"chain"
            })
            });this.slideshow.store("captions",A)
        },
    _controller:function(){
        if(this.options.controller===true){
            this.options.controller={}
            }var E=this.slideshow.getElement(this.classes.get("controller")); var A=(E)?E.empty():new Element("div",{
            "class":this.classes.get("controller").substr(1)
            }).inject(this.slideshow);var C=new Element("ul").inject(A);$H({
            first:"Shift + Leftwards Arrow",
            prev:"Leftwards Arrow",
            pause:"P",
            next:"Rightwards Arrow",
            last:"Shift + Rightwards Arrow"
        }).each(function(J,I){
            var G=new Element("li",{
                "class":(I=="pause"&&this.options.paused)?this.classes.play+" "+this.classes[I]:this.classes[I]
                }).inject(C);var H=this.slideshow.retrieve(I,new Element("a",{
                title:((I=="pause")?this.classes.play.capitalize()+" / ":"")+this.classes[I].capitalize()+" ["+J+"]"
                }).inject(G));H.set("events",{
                click:function(K){                    
                    this[K]()
                    }.pass(I,this),
                mouseenter:function(K){                                        
                    this.addClass(K)
                        if (CurrentSlide == 0){                        
                            controlStatus = "visible";                
                        }
                        else {
                            controlStatus = "hidden";
                        }                        
                    }.pass(this.classes.active,H),
                mouseleave:function(K){                                                                                         
                     if (CurrentSlide == 0){                        
                            controlStatus = "visible";                
                        }
                        else {
                            //this.removeClass(K)
                            controlStatus = "hidden";
                        }    
                    }.pass(this.classes.active,H)
                })
            },this);A.set({            
            events:{                               
                hide:function(G){ 
                    //DEBUG
                    //window.status = new Date().getMilliseconds().toString() + " Hide " + controlStatus;
                    if(!this.retrieve("hidden")){ 
                            if (CurrentSlide != 0)
                            {                        
                                this.store("hidden",true).morph(G)
                               // pass(this.slideshow.retrieve("controller",A).fireEvent("show"));
                            }
                            /*if (CurrentSlide == 0)
                            {
                                this.store("visible",true).morph(G)
                            }*/
                        }
                    }.pass(this.classes.get("controller", StatusControl),A),
                show:function(G){   
                  //  window.status = new Date().getMilliseconds().toString() + " Show " + controlStatus;
                    if(this.retrieve("hidden")){         
                                       
                        this.store("hidden",false).morph(G)
                        }
                    }.pass(this.classes.get("controller","visible"),A)
                },
            morph:$merge(this.options.controller,{
                link:"cancel"
            })
            }).store("hidden",false);var B=function(H){
            if(["left","right","p"].contains(H.key)){
                var G=this.slideshow.retrieve("controller");
                if(G.retrieve("hidden")){
                    G.get("morph").set(this.classes.get("controller","visible"))
                    }switch(H.key){
                    case"left":this.slideshow.retrieve((H.shift)?"first":"prev").fireEvent("mouseenter");break;case"right":this.slideshow.retrieve((H.shift)?"last":"next").fireEvent("mouseenter");break;default:this.slideshow.retrieve("pause").fireEvent("mouseenter");break
                        }
                }
            }.bind(this);this.events.keydown.push(B);var F=function(H){
            if(["left","right","p"].contains(H.key)){
                var G=this.slideshow.retrieve("controller");
                if(G.retrieve("hidden")){
                    G.store("hidden",false).fireEvent("hide")
                    }switch(H.key){
                    case"left":this.slideshow.retrieve((H.shift)?"first":"prev").fireEvent("mouseleave");break;case"right":this.slideshow.retrieve((H.shift)?"last":"next").fireEvent("mouseleave");break;default:this.slideshow.retrieve("pause").fireEvent("mouseleave");break
                        }
                }
            }.bind(this);this.events.keyup.push(F);var D=function(H){
            var G=this.slideshow.retrieve("images").getCoordinates();if(H.page.x>G.left&&H.page.x<G.right&&H.page.y>G.top&&H.page.y<G.bottom){
                this.slideshow.retrieve("controller").fireEvent("show")
                }else{
                this.slideshow.retrieve("controller").fireEvent("hide")
                }
            }.bind(this);this.events.mousemove.push(D);document.addEvents({
            keydown:B,
            keyup:F,
            mousemove:D
        });this.slideshow.retrieve("controller",A).fireEvent("hide")
        },
    _loader:function(){
        if(this.options.loader===true){
            this.options.loader={}
            }var A=new Element("div",{
            "class":this.classes.get("loader").substr(1),
            morph:$merge(this.options.loader,{
                link:"cancel"
            })
            }).store("hidden",false).store("i",1).inject(this.slideshow.retrieve("images"));if(this.options.loader.animate){
            for(var B=0;B<this.options.loader.animate[1];B++){
                img=new Asset.image(this.options.loader.animate[0].replace(/#/,B))
                }if(Browser.Engine.trident4&&this.options.loader.animate[0].contains("png")){
                A.setStyle("backgroundImage","none")
                }
            }A.set("events",{
            animate:function(){
                var C=this.slideshow.retrieve("loader");
                var E=(C.retrieve("i").toInt()+1)%this.options.loader.animate[1];C.store("i",E);var D=this.options.loader.animate[0].replace(/#/,E);if(Browser.Engine.trident4&&this.options.loader.animate[0].contains("png")){
					C.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+D+'", sizingMethod="scale")'
                    }else{
					
                    C.setStyle("backgroundImage","url("+D+")")
                    }
                }.bind(this),
            hide:function(){
                var C=this.slideshow.retrieve("loader");
                //Display of controller in the End
               if(this.slide==this.data.images.length-1)
                {
                    this.slideshow.retrieve("controller",A).fireEvent("show");                 
                    
               }
                if(!C.retrieve("hidden")){
                    C.store("hidden",true).morph(this.classes.get("loader","hidden"));if(this.options.loader.animate){
                        $clear(C.retrieve("timer"))
                        }
                    }
                }.bind(this),
            show:function(){
                var C=this.slideshow.retrieve("loader");if(C.retrieve("hidden")){
                    C.store("hidden",false).morph(this.classes.get("loader","visible"));if(this.options.loader.animate){
                        C.store("timer",function(){
                            this.fireEvent("animate")
                            }.periodical(50,C))
                        }
                    }
                }.bind(this)
            });this.slideshow.retrieve("loader",A).fireEvent("hide")
        },
    _thumbnails:function(){
        if(this.options.thumbnails===true){
            this.options.thumbnails={}
            }var C=this.slideshow.getElement(this.classes.get("thumbnails"));var E=(C)?C.empty():new Element("div",{
            "class":this.classes.get("thumbnails").substr(1)
            }).inject(this.slideshow);E.setStyle("overflow","hidden");var A=new Element("ul",{
            tween:{
                link:"cancel"
            }
            }).inject(E);this.data.thumbnails.each(function(J,I){
            var F=new Element("li").inject(A);var G=new Element("a",{
                events:{
                    click:function(K){
                        this.go(K);return false
                        }.pass(I,this),
                    loaded:function(){
                        this.data.thumbnails.pop();if(!this.data.thumbnails.length){
                            var O=E.getCoordinates();var M=E.retrieve("props");var K=0,N=M[1],L=M[2];E.getElements("li").each(function(P){
                                var P=P.getCoordinates();if(P[N]>K){
                                    K=P[N]
                                    }
                                },this);E.store("limit",O[L]+O[M[0]]-K)
                            }
                        }.bind(this)
                    },
                href:this.options.hu+this.data.images[I],
                morph:$merge(this.options.thumbnails,{
                    link:"cancel"
                }),
                title:this.data.captions[I]
                }).inject(F);var H=new Asset.image(this.options.hu+J,{
                onload:function(){
                    this.fireEvent("loaded")
                    }.bind(G)
                }).inject(G)
            },this);E.set("events",{
            scroll:function(H,K){
                var F=this.getCoordinates();var L=this.getElement("ul").getPosition();var N=this.retrieve("props");var I=N[3],R,O=N[0],T=N[2],P;var S=this.getElement("ul").get("tween",{
                    property:O
                });if($chk(H)){
                    var Q=this.getElements("li")[H].getCoordinates();R=F[O]+(F[T]/2)-(Q[T]/2)-Q[O];P=(L[I]-F[O]+R).limit(this.retrieve("limit"),0);if(K){
                        S.set(P)
                        }else{
                        S.start(P)
                        }
                    }else{
                    var G=F[N[2]]/3,M=this.retrieve("page"),J=-0.2;if(M[I]<(F[O]+G)){
                        R=(M[I]-F[O]-G)*J
                        }else{
                        if(M[I]>(F[O]+F[T]-G)){
                            R=(M[I]-F[O]-F[T]+G)*J
                            }
                        }if(R){
                        P=(L[I]-F[O]+R).limit(this.retrieve("limit"),0);S.set(P)
                        }
                    }
                }.bind(E),
            update:function(F){
                var G=this.slideshow.retrieve("thumbnails");G.getElements("a").each(function(H,I){
                    if(I==this.slide){
                        if(!H.retrieve("active",false)){
                            H.store("active",true);var K=this.classes.get("thumbnails","active");if(F){
                                H.get("morph").set(K)
                                }else{
                                H.morph(K)
                                }
                            }
                        }else{
                        if(H.retrieve("active",true)){
                            H.store("active",false);var J=this.classes.get("thumbnails","inactive");if(F){
                                H.get("morph").set(J)
                                }else{
                                H.morph(J)
                                }
                            }
                        }
                    },this);if(!G.retrieve("mouseover")){
                    G.fireEvent("scroll",[this.slide,F])
                    }
                }.bind(this)
            });var D=E.getCoordinates();E.store("props",(D.height>D.width)?["top","bottom","height","y"]:["left","right","width","x"]);var B=function(F){
            var G=this.getCoordinates();if(F.page.x>G.left&&F.page.x<G.right&&F.page.y>G.top&&F.page.y<G.bottom){
                this.store("page",F.page);if(!this.retrieve("mouseover")){
                    this.store("mouseover",true);this.store("timer",function(){
                        this.fireEvent("scroll")
                        }.periodical(50,this))
                    }
                }else{
                if(this.retrieve("mouseover")){
                    this.store("mouseover",false);$clear(this.retrieve("timer"))
                    }
                }
            }.bind(E);this.events.mousemove.push(B);document.addEvent("mousemove",B);this.slideshow.store("thumbnails",E)
        }
    });