//VARIABLES
var serviceButton = new Array('.pastProjects', '.more', '.pipeCracking', '.slipLining', '.cctv', '.pipeCleaning','.cipp', '.jointSealing', '.patchLining', '.roboticCutting', '.gallery', '.projects');
var slideDest = new Array ( null, 0, -960, -1920, -2880, -3840, -4800, -5760, -6720, null, null);
slider = true;
currentPos = 0;

//MOUSE CURSOR TO POINTER FUNCTION
function pointer(objects){
    j$(objects).css('cursor', 'pointer');
}

//FIND ARRAY INDEX OF AN ITEM
function getIndex(search, array){
    for(k=0; k<array.length; k++){
        if(search == array[k]){
            return k;
        }
    }
}

//REMOVES CHARACTERS MATCHED TO A REGEX
function regexRemove(string, expression){
    return string.replace(expression, '');
}

//JQUERY HORIZONTAL SLIDETO FUNCTION
function slideTo(destination){
    j$(".image_reel").animate({
        left: destination
    }, 2000 );

    return destination;
}

//HIDE PREVIOUS BUTTON IF ON SCENE 1, HIDE NEXT BUTTON IF ON SCENE 8
function prev_next_switch(){
    if(currentPos == 0){
        j$('#prev').hide();
    }else{
        j$('#prev').show();
    }

    if(currentPos == -6720){
        j$('#next').hide();
    }else{
        j$('#next').show();
    }
}

//NAVIGATION CONTROLS
function splice_hide_show_push(target){
    spliceIndex = getIndex('.' + target, serviceButton); //FIND INDEX OF ITEM TO SPLICE FROM ARRAY

    serviceButton.splice(spliceIndex, 1); //SPLICE SAID ITEM FROM ARRAY

    if(slider == true){ //CONDITIONAL SWITCH TO DETERMINE IF A CONTENT IS ALREADY SHOWING OR NOT THEN...
        j$('#' + target + '_div').slideDown(); //SLIDE CONTENT DOWN IF NO CONTENT IS SHOWING OR..
    }else{
        j$('#' + target + '_div').show(); //SHOW CONTENT IF NOT
    }

    //SET CONTENT CONDITIONAL SWITCH TO FALSE 
    slider = false;

    //LOOP THROUGH REMIANING ITEMS IN THE ARRAY AND HIDE THIER CONTENT DIVS
    for(j=0; j<serviceButton.length; j++){
        strippedClassName = regexRemove(serviceButton[j], /[^a-z]/gi);
        j$('#' + strippedClassName + '_div').hide();
    }         

    serviceButton.push('.' + target); //PUSH CLICKED ITEM BACK INTO DIV
}

j$(function(){
    //NAVIGATION CONTROL EVENT HANDLERS
    j$('.serviceDivs').hide();
    prev_next_switch();
    
    j$('#prev').mouseup(function(){
        goTo = currentPos + 960
        currentPos = goTo;
        
        switch (goTo)
        {
            case 0:
                splice_hide_show_push('pipeCracking');
                break;
            case -960:
                splice_hide_show_push('slipLining');
                break;
            case -1920:
                splice_hide_show_push('cctv');
                break;
            case -2880:
                splice_hide_show_push('pipeCleaning');
                break;
            case -3840:
                splice_hide_show_push('cipp');
                break;
            case -4800:
                splice_hide_show_push('jointSealing');
                break;
            case -5760:
                splice_hide_show_push('patchLining');
                break;
            case -6720:
                splice_hide_show_push('roboticCutting');
                break;
        }
        
        slideTo(goTo);
        prev_next_switch();
    })

    j$('#next').mouseup(function(){
        goTo = currentPos - 960
        currentPos = goTo;
        
        switch (goTo)
        {
            case 0:
                splice_hide_show_push('pipeCracking');
                break;
            case -960:
                splice_hide_show_push('slipLining');
                break;
            case -1920:
                splice_hide_show_push('cctv');
                break;
            case -2880:
                splice_hide_show_push('pipeCleaning');
                break;
            case -3840:
                splice_hide_show_push('cipp');
                break;
            case -4800:
                splice_hide_show_push('jointSealing');
                break;
            case -5760:
                splice_hide_show_push('patchLining');
                break;
            case -6720:
                splice_hide_show_push('roboticCutting');
                break;
        }
                
        slideTo(goTo);
        prev_next_switch();
    })
    
    for(i=0; i< serviceButton.length; i++){
        j$(serviceButton[i]).mouseenter(function(){
            pointer(this);
        })
        
        j$(serviceButton[i]).mouseup(function(){
            thisclass = j$(this).attr("class");
            
            switch (thisclass)
            {
                case 'pipeCracking':
                    currentPos = slideTo(0);                    
                    break;
                case 'slipLining':
                    currentPos = slideTo(-960);
                    break;
                case 'cctv':
                    currentPos = slideTo(-1920);
                    break;
                case 'pipeCleaning':
                    currentPos = slideTo(-2880);
                    break;
                case 'cipp':
                    currentPos = slideTo(-3840);
                    break;
                case 'jointSealing':
                    currentPos = slideTo(-4800);
                    break;
                case 'patchLining':
                    currentPos = slideTo(-5760);
                    break;
                case 'roboticCutting':
                    currentPos = slideTo(-6720);
                    break;
            }
            
            prev_next_switch();
            splice_hide_show_push(thisclass);
        })
    }
});
