var __index = 0;
var __p = 1;
var ____p = 0;
var __global;

var carousel = {};
carousel = {
    name: "#carousel",
    buttons: {
        left: "#right",
        right: "#left",
        control: ".control"
    },
    value: 0,
    create: function() {
        $( carousel.name + " ul li" ).css( { width: $( carousel.name ).width(), height: $( carousel.name ).height() } );
        $( carousel.name + " ul" ).css( { width: $( carousel.name + " ul li" ).size() * $( carousel.name ).width() + "px" } );
        carousel.interaction();
    },
    interaction: function() {
        $( carousel.buttons.left ).click( function() {
            if ( carousel.value + 1 < $( carousel.name + " ul li" ).size() )
            {
                carousel.value += 1;
                ____p = carousel.value;
                $( carousel.name + " ul" ).animate( { left: -( carousel.value * $( carousel.name + " ul li" ).width() ) }, { duration: 500, queue: true, easing: "easeOutExpo" } );
            }
            else
            {
                $( carousel.name + " ul" ).animate( { left: -( carousel.value * $( carousel.name + " ul li" ).width() + 100 ) }, { duration: 250, queue: false, easing: "easeInExpo",
                    complete: function() {
                        $( carousel.name + " ul" ).animate( { left: -( carousel.value * $( carousel.name + " ul li" ).width() ) }, { duration: 500, queue: false, easing: "easeOutExpo" } );
                    }
                });
            }
        });
        $( carousel.buttons.right ).click( function() {
            if ( carousel.value > 0 )
            {
                carousel.value -= 1;
                ____p = carousel.value;
                $( carousel.name + " ul" ).animate( { left: -( carousel.value * $( carousel.name + " ul li" ).width() ) }, { duration: 500, queue: true, easing: "easeOutExpo" } );
            }
            else
            {
                $( carousel.name + " ul" ).animate( { left: -( carousel.value * $( carousel.name + " ul li" ).width() - 100 ) }, { duration: 250, queue: false, easing: "easeInExpo",
                    complete: function() {
                        $( carousel.name + " ul" ).animate( { left: -( carousel.value * $( carousel.name + " ul li" ).width() ) }, { duration: 500, queue: false, easing: "easeOutExpo" } );
                    }
                });
            }
        });
        $( carousel.buttons.control ).click( function() {
            carousel.value = parseInt( $( this ).attr( "rel" ) );
            if ( carousel.value > $( carousel.name + " ul li" ).size() )
            {
                carousel.value = $( carousel.name + " ul li" ).size() - 1;
            }
            if ( carousel.value < 0 )
            {
                carousel.value = 0;
            }
            $( carousel.name + " ul" ).animate( { left: - ( carousel.value * $( carousel.name + " ul li" ).width() ) }, { duration: 500, queue: true, easing: "easeOutExpo" } );
        });
    }
}

$( document ).ready( function() {
    carousel.create();
    __global = setInterval( "changeslide()", 8000 );
    $( "#carousel ul li, #left, #right" ).hover( function() {
        clearInterval( __global );
    }, function() {
        __global = setInterval( "changeslide()", 8000 );
    });
});

function changeslide()
{
    if ( __index == $( "#carousel ul li" ).size() - 1 ) __p = -1;
    else if ( __index == 0 ) __p = +1;
    if ( ____p == $( "#carousel ul li" ).size() - 1 ) __p = -1;
    else if ( ____p == 0 ) __p = +1;
    if ( __p == -1 ) $( "#left" ).click();
    else $( "#right" ).click();
    __index = __index + __p;
}
