
var dall = false;
var dlay = false;
var deid = false;

//image folder
var designs = './';
var sliderImagePrefix = 'sliderImageObject';
var arrowLeft = designs + 'content/images/slider/left.gif';
var arrowLeftHover = designs + 'content/images/slider/leftHover.gif';
var arrowLeftActive = false;
var arrowLeftEnabled = true;

var arrowRight = designs + 'content/images/slider/right.gif';
var arrowRightHover = designs + 'content/images/slider/rightHover.gif';
var arrowRightActive = false;
var arrowRightEnabled = true;

var sliderWidth = 380;

//set if round-sliding is enabled or not
var infiniteSliding = true;

var elementWidth = 72;
var elementSpacer = 4;
var elementCount = 15;
var elementColumns = Math.floor( sliderWidth / elementWidth );

//speed of sliding. higher is slower
//see also sliderTimerReq for speed adjustment

//possible values: 6,12,24,36,48,72,144
var slideStepVal = 12;
var slideStep = Math.floor(elementWidth/slideStepVal);

//smoothness of moving. smaller means higher CPU usage
var sliderTimerReq = 50;

var slideValue = 0;
var firstSlideImage = 0;
var lastSlideImage = 14;

var initFirstSlideImage;
var initLastSlideImage;

var slideCount = 0;
var activeSlideLeft = false;
var activeSlideRight = false;

var activeAddLeftImage = 0;
var activeAddRightImage = 14;

var infiniteSlideRight = false;
var infiniteSlideLeft = false;

var sliderDebug = false;



function init(){
        initSlider();
        checkUriHash();
        if(document.all) dall = true;
        else{
                if(document.layers) dlay = true;
                else{
                        if(document.getElementById) deid = true;
                }
        }
}

function initSlider(){
        if( sliderDebug ){
                document.body.innerHTML = document.body.innerHTML + '<' + 'div id="debugTxt">' + '<' + '/div>';
        }
        initFirstSlideImage = firstSlideImage;
        initLastSlideImage = lastSlideImage;
        document.getElementById('sliderImageContent').style.width = (elementCount * ( elementWidth + 4 ) ) + 'px';
        if( ( parseInt( slideCount ) > parseInt( firstSlideImage ) && activeSlideRight == false ) == false )
                disableLeftArrow();
        if( ( parseInt( slideCount ) <= parseInt( lastSlideImage - elementColumns ) && activeSlideLeft == false ) == false )
                disableRightArrow();
}

function sliderNavHover(arrow){
        if( arrow == 'left_arrow' && arrowLeftEnabled ){
                if( arrowLeftActive ){
                        arrowLeftActive = false;
                        document.getElementById(arrow).src = arrowLeft;
                }else{
                        arrowLeftActive = true;
                        document.getElementById(arrow).src = arrowLeftHover;
                }
        }else if( arrow == 'right_arrow' && arrowRightEnabled ){
                if( arrowRightActive ){
                        arrowRightActive = false;
                        document.getElementById(arrow).src = arrowRight;
                }else{
                        arrowRightActive = true;
                        document.getElementById(arrow).src = arrowRightHover;
                }
        }

}

function getSliderImage(originalID,newID){
        data = document.getElementById(sliderImagePrefix + originalID.toString()).innerHTML;
        if( sliderDebug ) document.getElementById('debugTxt').innerHTML = data + '<' + 'div>' + '(' + originalID + ' / ' +  newID + ')<' + '/div>';
        return '<div id="' + sliderImagePrefix + newID + '" class="sliderImage">' + data + '</div>';
}

function addSliderImageRight(){
        originalID = getActiveRightImage();
        newID = lastSlideImage+1;
        lastSlideImage++;

        elementCount++;
        data = getSliderImage(originalID,newID) + document.getElementById('sliderImageContent').innerHTML;
        document.getElementById('sliderImageContent').innerHTML = data;
        document.getElementById('sliderImageContent').style.width = parseInt( document.getElementById('sliderImageContent').style.width ) + ( elementWidth + 4 ) + 'px';
}

function addSliderImageLeft(){
        originalID = getActiveLeftImage();
        newID = firstSlideImage-1;

        lastSlideImage++;
        elementCount++;
        data = document.getElementById('sliderImageContent').innerHTML + getSliderImage(originalID,newID);
        document.getElementById('sliderImageContent').innerHTML = data;
        document.getElementById('sliderImageContent').style.width = parseInt( document.getElementById('sliderImageContent').style.width ) + ( elementWidth + 4 ) + 'px';

        slideCount++;
        slideValue = ( parseInt( slideValue ) - ( elementWidth ) );
        document.getElementById('sliderImageContent').style.marginLeft = ( slideValue - slideCount*elementSpacer ).toString() + "px";
}

function getActiveLeftImage(){
        res = activeAddLeftImage;
        activeAddLeftImage++;
        if( activeAddLeftImage > initLastSlideImage )
                activeAddLeftImage = initFirstSlideImage;
        return res;
}

function getActiveRightImage(){
        res = activeAddRightImage;
        activeAddRightImage--;
        if( activeAddRightImage < initFirstSlideImage )
                activeAddRightImage = initLastSlideImage;
        return res;
}

function enableRightArrow(){
        arrowRightEnabled = true;
        arrowRightActive = true;
        sliderNavHover('right_arrow');
}

function enableLeftArrow(){
        arrowLeftEnabled = true;
        arrowLeftActive = true;
        sliderNavHover('left_arrow');
}

function disableRightArrow(){
        if( infiniteSliding == false ){
                arrowRightActive = true;
                sliderNavHover('right_arrow');
                arrowRightEnabled = false;
        }else{
                addSliderImageRight();
        }
}

function disableLeftArrow(){
        if( infiniteSliding == false ){
                arrowLeftActive = true;
                sliderNavHover('left_arrow');
                arrowLeftEnabled = false;
        }else{
                addSliderImageLeft();
        }
}

function setSlideRight(){
        if( parseInt( slideCount ) > parseInt( firstSlideImage ) && activeSlideRight == false ){
                activeSlideRight = true;
                infiniteSlideRight = true;
                slideCount--;
                enableRightArrow();
                doSlideRight();
        }else if( activeSlideRight == false ) disableLeftArrow();
}

function setSlideLeft(){
        if( parseInt( slideCount ) <= parseInt( lastSlideImage - elementColumns ) && activeSlideLeft == false ){
                activeSlideLeft = true;
                infiniteSlideLeft = true;
                slideCount++;
                enableLeftArrow();
                doSlideLeft();
        }else if( activeSlideLeft == false ) disableRightArrow();
}

function slideRight(){
        if( parseInt( slideCount ) > parseInt( firstSlideImage ) && activeSlideRight == false && infiniteSlideRight == false ){
                activeSlideRight = true;
                slideCount--;
                enableRightArrow();
                doSlideRight();
        }else if( activeSlideRight == false && infiniteSlideRight == false ) disableLeftArrow();
        infiniteSlideRight = false;
}

function slideLeft(){
        if( parseInt( slideCount ) <= parseInt( lastSlideImage - elementColumns ) && activeSlideLeft == false && infiniteSlideLeft == false ){
                activeSlideLeft = true;
                slideCount++;
                enableLeftArrow();
                doSlideLeft();
        }else if( activeSlideLeft == false && infiniteSlideLeft == false ) disableRightArrow();
        infiniteSlideLeft = false;
}

function doSlideRight(){
        if( activeSlideLeft ){
                activeSlideRight = false;
                return;
        }
        slideValue = ( parseInt( slideValue ) + slideStep );
        document.getElementById('sliderImageContent').style.marginLeft = ( slideValue - slideCount*elementSpacer ).toString() + "px";
        if(  Math.abs(slideValue/slideCount) != ( elementWidth  ) && slideValue != 0 )
                setTimeout("doSlideRight()",sliderTimerReq);
        else{
                activeSlideRight = false;
                if( ( parseInt( slideCount ) > parseInt( firstSlideImage ) && activeSlideRight == false ) == false ){
                        disableLeftArrow();
                        if( infiniteSliding == false ) return;
                }
                if( infiniteSlideRight ){
                        slideCount--;
                        setTimeout("doSlideRight()",sliderTimerReq);
                }
        }
}

function doSlideLeft(){
        if( activeSlideRight ) {
                activeSlideLeft = false;
                return;
        }
        slideValue = ( parseInt( slideValue ) - slideStep );
        document.getElementById('sliderImageContent').style.marginLeft = ( slideValue - slideCount*elementSpacer ).toString() + "px";
        if(  Math.abs(slideValue/slideCount) != ( elementWidth  ) && slideValue != 0  )
                setTimeout("doSlideLeft()",sliderTimerReq);
        else{
                activeSlideLeft = false;
                if( ( parseInt( slideCount ) <= parseInt( lastSlideImage - elementColumns ) && activeSlideLeft == false ) == false ){
                        disableRightArrow();
                        if( infiniteSliding == false ) return;
                }
                if( infiniteSlideLeft ){
                        slideCount++;
                        setTimeout("doSlideLeft()",sliderTimerReq);
                }
        }
}
