
var photocontest_slideshow = Class.create();
    photocontest_slideshow.prototype = {
        initialize : function(obj, count, relpath){
              (count != null) ? this.count = count-1 : this.count = 0;
            (relpath != null) ? this.relpath = relpath : this.relpath = "images/slideshows/"; 
            //initiating arrays to stick values into see obj.each right after it
            aAward=[];
            filename=[];
            aText=[];
            aTitle=[]; 
            aPhotog=[]; 
            aLocation=[];
            aRelrecipetext=[];
            aRelrecipe=[];
            aRelslideshow=[];
            aRelslideshowtext=[];
            aRelwinep=[];
            aRelwineptext=[];
            
            obj.each(function(value, index){
                                              aAward[index]=value.award;
                                            filename[index]=value.filename;
                                              aTitle[index]=value.image;
                                             aPhotog[index]=value.photographer;
                                           aLocation[index]=value.location;
                                          aRelrecipe[index]=value.relrecipe
                                      aRelrecipetext[index]=value.relrecipetext;
                                       aRelslideshow[index]=value.relslideshow;
                                   aRelslideshowtext[index]=value.relslideshowtext;
                                           aRelwinep[index]=value.relwinep;
                                       aRelwineptext[index]=value.relwineptext;
                                              });
                 this.aAward = aAward;
                 this.aImage = filename;
                 this.aTitle = aTitle;
                this.aPhotog = aPhotog;
              this.aLocation = aLocation;
                this.aPhotog = aPhotog;
             this.aRelrecipe = aRelrecipe;
         this.aRelrecipetext = aRelrecipetext;
          this.aRelslideshow = aRelslideshow;
      this.aRelslideshowtext = aRelslideshowtext;
              this.aRelwinep = aRelwinep;
          this.aRelwineptext = aRelwineptext;
            this.totalslides = obj.length-1;

                this.preloader();
                this.startListener();
                this.positionmarker();
                this.checkhistory();  
        },
        checkhistory: function(){
        var hrefPattern = /slidenr/;
        if(!hrefPattern.test(location.href)){
        var cookieMix = /slideposition=(\d{1,2})/;
        if(!cookieMix.test(document.cookie)){
            return false;
        } else {
            var arrayMatch = cookieMix.exec(document.cookie)
            this.count = arrayMatch[1]-1;
            this.changeattributes(0);
            }
         }
        },
        startListener : function(){
                this.controls = $$("a.slidecontroller");
                    for(var i=0; i<this.controls.length; i++){
                        var direction = this.controls[i].toString().replace(/(http:\/\/.*slide=)(.*)(&.*)/, "$2");          
                        switch(direction){
                        case "next":
                        this.controls[i].onclick = this.slidenext.bindAsEventListener(this);
                        break;
                        case "prev":
                        this.controls[i].onclick = this.slideprev.bindAsEventListener(this);
                        break;
                        case "first":
                        this.controls[i].onclick = this.slidefirst.bindAsEventListener(this);
                        break;
                        case "last":
                        this.controls[i].onclick = this.slidelast.bindAsEventListener(this);
                        break;
                        }
                    }
        },
        slidefirst : function(){
            this.count = 0;
            this.changeslide();
            this.preloader();
            return false;
        },
        slidelast : function(){
            this.count = this.totalslides;
            this.changeslide();
            this.preloader();
            return false;
        },
        slidenext : function(){
            this.count++;
            if(this.count > this.totalslides) {
                this.count = 0;
                }
            this.changeslide();
            this.preloader();
             return false;
        },
        slideprev : function(){
            this.count--;
            if(this.count < 0) {
                this.count = this.totalslides;
                }

            this.changeslide();
            this.preloader();
            return false;
        },
        preloader : function(){
             aPreloding = [this.count + 1,this.count - 1]

            if(aPreloding[0] > this.totalslides){
                aPreloding[0] = 0;
                }
            var nextImg = new Image();
                nextImg.src = this.relpath+this.aImage[aPreloding[0]]+".jpg";
            if(aPreloding[1] < 0) {
                aPreloding[1] = this.totalslides;
                }
            var prevImage = new Image();
                prevImage.src = this.relpath+this.aImage[aPreloding[1]]+".jpg";
            return false;
        },
        positionmarker : function(){
            //$javaConsole("ok");
            var currentSlidePosition = this.count+1;
            $("wbapid").onclick = function(){
            document.cookie ="slideposition="+currentSlidePosition;
            }
        },

        changeattributes : function(fade){
            refreshThumg(this.count);
            if(this.aAward[this.count] == ""){
                $("winner").style.display = "none";
            } else {
                $("winner").style.display = "block";
                Element.update("winner",this.aAward[this.count]);
            }
            newimage = this.relpath+this.aImage[this.count]+".jpg";
            $("image").setAttribute("alt",this.aTitle[this.count]);
            $("image").setAttribute("title",this.aTitle[this.count]);
            Element.update("title", this.aTitle[this.count]);
            Element.update("location", this.aLocation[this.count]);
            Element.update("photographer", this.aPhotog[this.count]);
            Element.update("relrecipe",this.aRelrecipetext[this.count]);
            $("relrecipe").setAttribute("href", "/recipes/"+this.aRelrecipe[this.count]);
            
            Element.update("relslideshow",this.aRelslideshowtext[this.count]);
            $("relslideshow").setAttribute("href", "/slideshows/"+this.aRelslideshow[this.count]);
            
            Element.update("relwinep",this.aRelwineptext[this.count]);
            $("relwinep").setAttribute("href", this.aRelwinep[this.count]);
            
            this.positionmarker();
            document.cookie ="slideposition="+parseInt(this.count+1);                   
            Element.update("slidenumber", this.count+1+" of "+parseInt(this.totalslides+1));
            
            
            
            if(fade == "1"){
                Effect.Appear($('image'),
                {  
                   from: 1, to: 0,
                   duration: 0.2,
                   afterFinishInternal: function(){
                       $("image").setAttribute("src",newimage);
                       Effect.Fade($('image'),{duration: 0.3, from: 0, to: 1}); }
                });
            } else {
                $("image").setAttribute("src", newimage);
            }
        },
        changeslide : function() {
            this.changeattributes(1);
            return false;
        }
}
//END wbaslideshow class


function listener(){
    thumb = document.getElementById("thumbnails").getElementsByTagName("img");
    thumbBTN = $$("a.thumbBTN");
    pattern = /http.*\=/;
       for(var i=0; i<thumbBTN.length; i++){
            thumbBTN[i].onclick = function(){slideshow.count = parseInt(this.href.replace(pattern, ""))-1; slideshow.changeattributes(20); return false};
        }
    }

function refreshThumg(nr){
    for(var i=0; i<thumb.length; i++){
        thumb[i].className="";
        if(i == nr){
            thumb[i].className = "active";
        }
    }
}

addLoadEvent(listener);
