/*
 * Slides, A Slideshow Plugin for jQuery
 * Intructions: http://slidesjs.com
 * By: Nathan Searles, http://nathansearles.com
 * Version: 1.1.8
 * Updated: June 1st, 2011
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
(function(A) {
  A.fn.slides = function(B) {
    B = A.extend( {} , A.fn.slides.option , B );
    return this.each( function() {
      A( "." + B.container , A( this ) ).children().wrapAll( '<div class="slides_control"/>' );
      var V = A( this ),J = A( ".slides_control" , V ),Z = J.children().size(),Q = J.children().outerWidth(),M = J.children().outerHeight(),D = B.start - 1,L = B.effect.indexOf( "," ) < 0 ? B.effect : B.effect.replace( " " , "" ).split( "," )[0],S = B.effect.indexOf( "," ) < 0 ? L : B.effect.replace( " " , "" ).split( "," )[1],O = 0,N = 0,C = 0,P = 0,U,H,I,X,W,T,K,F;
      function E(c , b , a) {
        if ( !H && U ) {
          H = true;
          B.animationStart( P + 1 );
          switch ( c ) {case"next":N = P;O = P + 1;O = Z === O ? 0 : O;X = Q * 2;c = -Q * 2;P = O;break;case"prev":N = P;O = P - 1;O = O === -1 ? Z - 1 : O;X = 0;c = 0;P = O;break;case"pagination":O = parseInt( a , 10 );N = A( "." + B.paginationClass + " li." + B.currentClass + " a" , V ).attr( "href" ).match( "[^#/]+$" );if ( O > N ) {
            X = Q * 2;
            c = -Q * 2;
          }
          else {
            X = 0;
            c = 0;
          }P = O;break;
          }
          if ( b === "fade" ) {
            if ( B.crossfade ) {
              J.children( ":eq(" + O + ")" , V ).css( {zIndex:10} ).fadeIn( B.fadeSpeed , B.fadeEasing , function() {
                if ( B.autoHeight ) {
                  J.animate( {height:J.children( ":eq(" + O + ")" , V ).outerHeight()} , B.autoHeightSpeed , function() {
                    J.children( ":eq(" + N + ")" , V ).css( {display:"none",zIndex:0} );
                    J.children( ":eq(" + O + ")" , V ).css( {zIndex:0} );
                    B.animationComplete( O + 1 );
                    H = false;
                  } );
                }
                else {
                  J.children( ":eq(" + N + ")" , V ).css( {display:"none",zIndex:0} );
                  J.children( ":eq(" + O + ")" , V ).css( {zIndex:0} );
                  B.animationComplete( O + 1 );
                  H = false;
                }
              } );
            }
            else {
              J.children( ":eq(" + N + ")" , V ).fadeOut( B.fadeSpeed , B.fadeEasing , function() {
                if ( B.autoHeight ) {J.animate( {height:J.children( ":eq(" + O + ")" , V ).outerHeight()} , B.autoHeightSpeed , function() {J.children( ":eq(" + O + ")" , V ).fadeIn( B.fadeSpeed , B.fadeEasing );} );}
                else {J.children( ":eq(" + O + ")" , V ).fadeIn( B.fadeSpeed , B.fadeEasing , function() {if ( A.browser.msie ) {A( this ).get( 0 ).style.removeAttribute( "filter" );}} );}
                B.animationComplete( O + 1 );
                H = false;
              } );
            }
          }
          else {
            J.children( ":eq(" + O + ")" ).css( {left:X,display:"block"} );
            if ( B.autoHeight ) {
              J.animate( {left:c,height:J.children( ":eq(" + O + ")" ).outerHeight()} , B.slideSpeed , B.slideEasing , function() {
                J.css( {left:-Q} );
                J.children( ":eq(" + O + ")" ).css( {left:Q,zIndex:5} );
                J.children( ":eq(" + N + ")" ).css( {left:Q,display:"none",zIndex:0} );
                B.animationComplete( O + 1 );
                H = false;
              } );
            }
            else {
              J.animate( {left:c} , B.slideSpeed , B.slideEasing , function() {
                J.css( {left:-Q} );
                J.children( ":eq(" + O + ")" ).css( {left:Q,zIndex:5} );
                J.children( ":eq(" + N + ")" ).css( {left:Q,display:"none",zIndex:0} );
                B.animationComplete( O + 1 );
                H = false;
              } );
            }
          }
          if ( B.pagination ) {
            A( "." + B.paginationClass + " li." + B.currentClass , V ).removeClass( B.currentClass );
            A( "." + B.paginationClass + " li:eq(" + O + ")" , V ).addClass( B.currentClass );
          }
        }
      }
      function R() {clearInterval( V.data( "interval" ) );}
      function G() {
        if ( B.pause ) {
          clearTimeout( V.data( "pause" ) );
          clearInterval( V.data( "interval" ) );
          K = setTimeout( function() {
            clearTimeout( V.data( "pause" ) );
            F = setInterval( function() {E( "next" , L );} , B.play );
            V.data( "interval" , F );
          } , B.pause );
          V.data( "pause" , K );
        }
        else {R();}
      }
      if ( Z < 2 ) {return;}
      if ( D < 0 ) {D = 0;}
      if ( D > Z ) {D = Z - 1;}
      if ( B.start ) {P = D;}
      if ( B.randomize ) {J.randomize();}
      A( "." + B.container , V ).css( {overflow:"hidden",position:"relative"} );
      J.children().css( {position:"absolute",top:0,left:J.children().outerWidth(),zIndex:0,display:"none"} );
      J.css( {position:"relative",width:(Q * 3),height:M,left:-Q} );
      A( "." + B.container , V ).css( {display:"block"} );
      if ( B.autoHeight ) {
        J.children().css( {height:"auto"} );
        J.animate( {height:J.children( ":eq(" + D + ")" ).outerHeight()} , B.autoHeightSpeed );
      }
      if ( B.preload && J.find( "img:eq(" + D + ")" ).length ) {
        A( "." + B.container , V ).css( {background:"url(" + B.preloadImage + ") no-repeat 50% 50%"} );
        var Y = J.find( "img:eq(" + D + ")" ).attr( "src" ) + "?" + (new Date()).getTime();
        if ( A( "img" , V ).parent().attr( "class" ) != "slides_control" ) {T = J.children( ":eq(0)" )[0].tagName.toLowerCase();}
        else {T = J.find( "img:eq(" + D + ")" );}
        J.find( "img:eq(" + D + ")" ).attr( "src" , Y ).load( function() {
          J.find( T + ":eq(" + D + ")" ).fadeIn( B.fadeSpeed , B.fadeEasing , function() {
            A( this ).css( {zIndex:5} );
            A( "." + B.container , V ).css( {background:""} );
            U = true;
            B.slidesLoaded();
          } );
        } );
      }
      else {
        J.children( ":eq(" + D + ")" ).fadeIn( B.fadeSpeed , B.fadeEasing , function() {
          U = true;
          B.slidesLoaded();
        } );
      }
      if ( B.bigTarget ) {
        J.children().css( {cursor:"pointer"} );
        J.children().click( function() {
          E( "next" , L );
          return false;
        } );
      }
      if ( B.hoverPause && B.play ) {
        J.bind( "mouseover" , function() {R();} );
        J.bind( "mouseleave" , function() {G();} );
      }
      if ( B.generateNextPrev ) {
        A( "." + B.container , V ).after( '<a href="#" class="' + B.prev + '">Prev</a>' );
        A( "." + B.prev , V ).after( '<a href="#" class="' + B.next + '">Next</a>' );
      }
      A( "." + B.next , V ).click( function(a) {
        a.preventDefault();
        if ( B.play ) {G();}
        E( "next" , L );
      } );
      A( "." + B.prev , V ).click( function(a) {
        a.preventDefault();
        if ( B.play ) {G();}
        E( "prev" , L );
      } );
      if ( B.generatePagination ) {
        if ( B.prependPagination ) {V.prepend( "<ul class=" + B.paginationClass + "></ul>" );}
        else {V.append( "<ul class=" + B.paginationClass + "></ul>" );}
        J.children().each( function() {
          A( "." + B.paginationClass , V ).append( '<li><a href="#' + C + '">' + " " + "</a></li>" );
          C++;
        } );
      }
      else {
        A( "." + B.paginationClass + " li a" , V ).each( function() {
          A( this ).attr( "href" , "#" + C );
          C++;
        } );
      }
      A( "." + B.paginationClass + " li:eq(" + D + ")" , V ).addClass( B.currentClass );
      A( "." + B.paginationClass + " li a" , V ).click( function() {
        if ( B.play ) {G();}
        I = A( this ).attr( "href" ).match( "[^#/]+$" );
        if ( P != I ) {E( "pagination" , S , I );}
        return false;
      } );
      A( "a.link" , V ).click( function() {
        if ( B.play ) {G();}
        I = A( this ).attr( "href" ).match( "[^#/]+$" ) - 1;
        if ( P != I ) {E( "pagination" , S , I );}
        return false;
      } );
      if ( B.play ) {
        F = setInterval( function() {E( "next" , L );} , B.play );
        V.data( "interval" , F );
      }
    } );
  };
  A.fn.slides.option = {preload:false,preloadImage:"../images/highlightsHomepageHeader/preload.gif",container:"slides_container",
    generateNextPrev:false,next:"next",prev:"prev",pagination:true,generatePagination:true,prependPagination:false,
    paginationClass:"pagination",currentClass:"current",fadeSpeed:350,fadeEasing:"",slideSpeed:350,slideEasing:"",
    start:1,effect:"slide",crossfade:false,randomize:false,play:0,pause:0,hoverPause:true,autoHeight:false,
    autoHeightSpeed:350,bigTarget:false,animationStart:function() {},animationComplete:function() {},slidesLoaded:function() {}};
  A.fn.randomize = function(C) {
    function B() {return(Math.round( Math.random() ) - 0.5);}
    return(A( this ).each( function() {
      var F = A( this );
      var E = F.children();
      var D = E.length;
      if ( D > 1 ) {
        E.hide();
        var G = [];
        for ( i = 0 ; i < D ; i++ ) {G[G.length] = i;}
        G = G.sort( B );
        A.each( G , function(I , H) {
          var K = E.eq( H );
          var J = K.clone( true );
          J.show().appendTo( F );
          if ( C !== undefined ) {C( K , J );}
          K.remove();
        } );
      }
    } ));
  };
})( jQuery );
