﻿////
// Sample Page
function samplesHasClassName(node, tempClass) { if (typeof (node.className) != 'undefined') { return node.className.match(new RegExp('(\\s|^)' + tempClass + '(\\s|$)')); } return false; }
function samplesAddClassName(node, tempClass) { if (typeof (node.className) != 'undefined' && !samplesHasClassName(node, tempClass)) { node.className += " " + tempClass; } }
function samplesRemoveClassName(node, tempClass) { if (samplesHasClassName(node, tempClass)) { var tempExp = new RegExp('(\\s|^)' + tempClass + '(\\s|$)'); node.className = node.className.replace(tempExp, ''); } }

/**********/
/**Mini Carousel
- DO NOT CHANGE-**/
/// <summary>
/// Usage is as follows:
/// mainElm,elmWidth,numInView,numToMove,nextElm,prevElm,listOfElms,startElm,animTime
/// EXAMPLE: var uniqueMiniCarObj = new MiniCarouselObj({ 'mainElm': document.getElementById('uniqueMiniCar'), 'elmWidth': 164, 'numInView': 1, 'nextElm': document.getElementById('uniqueNextElm'), 'prevElm': document.getElementById('uniquePrevElm') });
/// </summary>
function MiniCarouselObj(listOfParams) {
    //mainElm,elmWidth,numInView,numToMove,nextElm,prevElm,listOfElms,startElm,animTime
    this.mainElm = typeof (listOfParams.mainElm) == 'undefined' ? false : listOfParams.mainElm;
    this.elmWidth = typeof (listOfParams.elmWidth) == 'undefined' ? 100 : listOfParams.elmWidth;
    this.numInView = typeof (listOfParams.numInView) == 'undefined' ? 1 : listOfParams.numInView;
    this.numToMove = typeof (listOfParams.numToMove) == 'undefined' ? this.numInView : listOfParams.numToMove;
    this.nextElm = typeof (listOfParams.nextElm) == 'undefined' ? false : listOfParams.nextElm;
    this.prevElm = typeof (listOfParams.prevElm) == 'undefined' ? false : listOfParams.prevElm;
    this.listOfElms = typeof (listOfParams.listOfElms) == 'undefined' ? [] : listOfParams.listOfElms;
    this.currElmInView = typeof (listOfParams.startElm) == 'undefined' ? 0 : listOfParams.startElm - 1;
    this.animTime = typeof (listOfParams.animTime) == 'undefined' ? 1000 : listOfParams.animTime;
    this.prevElmInView = this.currElmInView;
    this.isAnimating = false;
    this.animFunc = false;
    this.animStart = 0;
    var thisRef = this;
    this.showNext = function() {
        //if(this.isAnimating){return;}
        if (this.currElmInView + this.numInView >= this.listOfElms.length) {
            this.setCurrElmInView(this.listOfElms.length - this.numInView);
            samplesAddClassName(this.nextElm, 'nextOff');
        } else {
            samplesRemoveClassName(this.prevElm, 'prevOff');
            if (this.currElmInView + this.numInView + this.numToMove > this.listOfElms.length) {
                this.setCurrElmInView(this.listOfElms.length - this.numInView);
            } else {
                this.setCurrElmInView(this.currElmInView + this.numToMove);
            }
            this.animStart = new Date().getTime();
            this.animAllElmPos();
        }
    };
    this.showPrev = function() {
        //if(this.isAnimating){return;}
        if (this.currElmInView <= 0) {
            this.setCurrElmInView(0);
            samplesAddClassName(this.prevElm, 'prevOff');
        } else {
            samplesRemoveClassName(this.nextElm, 'nextOff');
            if (this.currElmInView - this.numToMove < 0) {
                this.setCurrElmInView(0);
            } else {
                this.setCurrElmInView(this.currElmInView - this.numToMove);
            }
            this.animStart = new Date().getTime();
            this.animAllElmPos();
        }
    };
    this.animAllElmPos = function() {
        this.isAnimating = true;
        var timeDiff = new Date().getTime() - this.animStart;
        var timePerc = timeDiff / this.animTime;
        if (timePerc >= 1) {
            this.isAnimating = false;
            this.setAllElmPos();
        } else {
            var currPos = this.getAmtToChange(timePerc);
            for (var aIndex = 0; aIndex < this.listOfElms.length; aIndex++) {
                this.listOfElms[aIndex].style.left = ((aIndex * this.elmWidth) - ((this.currElmInView - (this.currElmInView - this.prevElmInView)) * this.elmWidth) - ((this.currElmInView - this.prevElmInView) * currPos)) + 'px';
            }
            this.animFunc = setTimeout(function() { thisRef.animAllElmPos(); }, 0);
        }
    };
    this.setAllElmPos = function() {
        if (this.currElmInView <= 0) {
            this.setCurrElmInView(0);
            samplesAddClassName(this.prevElm, 'prevOff');
        } else {
            samplesRemoveClassName(this.prevElm, 'prevOff');
        }
        if (this.currElmInView + this.numInView >= this.listOfElms.length) {
            this.setCurrElmInView(this.listOfElms.length - this.numInView);
            samplesAddClassName(this.nextElm, 'nextOff');
        } else {
            samplesRemoveClassName(this.nextElm, 'nextOff');
        }
        for (var aIndex = 0; aIndex < this.listOfElms.length; aIndex++) {
            this.listOfElms[aIndex].style.left = ((aIndex * this.elmWidth) - (this.currElmInView * this.elmWidth)) + 'px';
        }
    };
    this.setCurrElmInView = function(newElmNum) {
        this.prevElmInView = this.currElmInView;
        this.currElmInView = newElmNum;
    };
    this.getAmtToChange = function(timePerc) {
        return (-Math.pow(2, -10 * timePerc) + 1) * this.elmWidth;
    };
    this.autoInit = function() {
        if (!this.mainElm) {
            return;
        }
        if (!this.listOfElms.length) {
            var numOfCarMiniElms = 0;
            var listOfChildNodes = this.mainElm.childNodes;
            for (var bIndex = 0; bIndex < listOfChildNodes.length; bIndex++) {
                if (samplesHasClassName(listOfChildNodes[bIndex], 'CarMiniElm')) {
                    this.listOfElms.push(listOfChildNodes[bIndex]);
                    numOfCarMiniElms = numOfCarMiniElms + 1;
                }
            }
        }
        if (this.numInView > this.listOfElms.length) { this.numInView = this.listOfElms.length; }
        this.mainElm.style.width = (this.elmWidth * this.numInView) + 'px';
        this.setAllElmPos();
        if (this.nextElm) {
            this.nextElm.miniCarObj = thisRef;
            this.nextElm.onclick = function() {
                this.miniCarObj.showNext();
            };
        }
        if (this.prevElm) {
            this.prevElm.miniCarObj = thisRef;
            this.prevElm.onclick = function() {
                this.miniCarObj.showPrev();
            };
        }
    };
    this.autoInit();
}

var uniqueMiniCarObj;
function newCarousel(prodCatId) {
    if (!uniqueMiniCarObj)
        uniqueMiniCarObj = new Array();
    uniqueMiniCarObj[prodCatId] = new MiniCarouselObj({ 'mainElm': document.getElementById('uniqueMiniCar' + prodCatId), 'elmWidth': 164, 'numInView': 4, 'nextElm': document.getElementById('uniqueNextElm' + prodCatId), 'prevElm': document.getElementById('uniquePrevElm' + prodCatId) });
}
//
////
