﻿

var AssetImageQuickView = Class.create();
AssetImageQuickView.prototype = {
    mstrName: '',
    mstrClientId: '',
    mControl: null,
    mintCurrent: 1,
    mintStartIndex: 1,
    mintTotal: 0,
    mintImageCount: 3,
    mImg: [],
    mArgs: null,
    mInProcess: false,
    mPeriodicalExecuter: null,
    mPaging: [],

    initialize: function(strName, strClientID, args) {
        this.mstrName = strName;
        this.mstrClientId = strClientID;
        this.mArgs = args;
        this.mintCurrent = args.imgIndex;
        this.mintStartIndex = args.imgIndex;
        this.mintTotal = args.imgList.length;
        this.mintImageCount = args.imgCount;
        this.mImg = [];
        this.mControl = $(strClientID);
        for (var imgI = 1; imgI <= this.mintImageCount; imgI++) {
            this.mImg.push($(strClientID + '_' + imgI.toString()));
        }
        if (args.slideShowDelay > 0) {
            var fn = this.NextImage.bind(this, false);
            mPeriodicalExecuter = new PeriodicalExecuter(fn, args.slideShowDelay);
        }
        this.mPaging = this.mControl.select('.pageImage');
    },

    NextImage: function(blnIsUser) {
        this.mintCurrent++;
        this.setActiveImage(null, blnIsUser);
    },
    PrevImage: function(blnIsUser) {
        this.mintCurrent--;
        this.setActiveImage(null, blnIsUser);
    },

    setActiveImage: function(intCurrent, blnIsUser) {
        var intImageIndex = 0;
        var intPageCount;
        var classNames;
        var className;
        if (this.mInProcess == false) {
            this.mInProcess = true;
            if (!((typeof (intCurrent) == 'undefined') || (intCurrent == null))) {
                this.mintCurrent = intCurrent;
            }
            this.mintCurrent = this.getImageIndex(this.mintCurrent, this.mintTotal);
            intImageIndex = this.getImageIndex(this.mintCurrent - this.mintStartIndex, this.mintTotal);
            for (var imgI = 0; imgI < this.mintImageCount; imgI++) {
                this.mImg[imgI].src = this.mArgs.imgList[intImageIndex].src;
                this.mImg[imgI].alt = this.mArgs.imgList[intImageIndex].alt;
				
				/* begin exesight custom */
				if(this.mImg[imgI].up(1).hasClassName('elImageBannerView'))
				{
					this.mImg[imgI].up(1).className = 'elImageBannerView';
					this.mImg[imgI].up(1).addClassName(' Is' + this.mArgs.imgList[intImageIndex].src.match('black') + ' ' + this.mArgs.imgList[intImageIndex].src.match('opaque') + ' ' + this.mArgs.imgList[intImageIndex].src.match('transparent') + ' ' + this.mArgs.imgList[intImageIndex].src.match('white'));
				}
				if(this.mControl.hasClassName('elGalleryView'))
				{
				//
					var obj = this.mControl.select('span.imageRef')[0];
					if(obj)
					{
						obj.innerHTML = this.mImg[imgI].alt;
					}
				}
				
				//this.mImg[imgI].up(1).select('h1')[0].innerHTML = this.mImg[imgI].alt;
				/* end exesight custom */
                intImageIndex++;
                intImageIndex = this.getImageIndex(intImageIndex, this.mintTotal);
            }
            intPageCount = this.mPaging.length;
            className = 'pagingItem' + this.mintCurrent.toString();
            for (var imgPage = 0; imgPage < intPageCount; imgPage++) {
                this.mPaging[imgPage].removeClassName('selected');
                if (this.mPaging[imgPage].className.startsWith(className + ' ') == true) {
                    this.mPaging[imgPage].addClassName('selected');
                }
            }

            if (this.mArgs.slideShowDelay > 0) {
                var fn = this.NextImage.bind(this, false);
                mPeriodicalExecuter.stop();
                mPeriodicalExecuter = new PeriodicalExecuter(fn, this.mArgs.slideShowDelay);
            }
            this.mInProcess = false;
        }
    },

    getImageIndex: function(intCurrent, intLength) {
        if (intCurrent < 0)
            return intLength + intCurrent;
        if (intCurrent >= intLength)
            return intLength - intCurrent;
        return intCurrent;
    }

};



