A review of my jQuery Slider
Here are some general things you should be doing differently. These suggestions don't change the functionality of your slider, and are suggestions you can apply to your future projects.

First and most important

var wrapper = $('.portfolio-inner-wrapper');
//As a rule of thumb, if you use a selector more than once, you should cache it.
    //Now use 'wrapper' everywhere you used $('portfilo...') instead.
    //Cache it outside if you want to use it in other functions as well.
//Ex:
wrapper.css('width', sliderWidth);


Next:

if (autoSlide) { //Don't need == 1. Zero is a falsy value.
    setInterval(function() {
        slide_right();
    }, slideDuration); //You don't need setInterval either. jQuery has a built in queue.
}


When you have multiple 'animate' calls, jQuery puts them in a queue to execute them one by one. This goes for the rest of your slider as well.

Save function calls. Do it like this:

$('a.next').on('click', function() {
        if ( (sliderWidth - Math.abs(marginLeft)) &gt; containerWidth ) {
           wrapper.stop().animate({
            'margin-left': '+=-' + containerWidth
           }, slideSpeed, function() {
            marginLeft += -containerWidth;
        });
     } else {
        wrapper.stop().animate({
            'margin-left': '0' //Zero doesn't need a unit of measure (ie. px, em, %, etc)
        }, slideSpeed, function() {
            marginLeft = 0;
        });
    }
});


When you use the .click() method, jQuery calls the .on() method. Then if you still call another function inside that, that's three function calls that could be spared if you simply used this:

$('a').on('click', function() {
    do.stuff
});


Finally, I'll be happy to answer any other questions you might have.