/*************************************************************************
  This code is from Dynamic Web Coding at www.dyn-web.com
  Copyright 2003-4 by Sharon Paine 
  See Terms of Use at www.dyn-web.com/bus/terms.html
  regarding conditions under which you may use this code.
  This notice must be retained in the code as is!
*************************************************************************/

/*
  dw_glide.js - requires dw_lib.js
  version date July 2004 
*/

var hasPageLoaded=false;
var leftLayer=null;
var rightLayer=null;
var displayLayer=null;

function init() {
    leftLayer = new dynObj('movableLayerA','A',-730,0,730,500);
    displayLayer = new dynObj('movableLayerB', 'B', 0, 0, 730, 500);
    rightLayer = new dynObj('movableLayerC', 'C', 730, 0, 730, 500);
	displayLayer.show();
	rightLayer.show();
	leftLayer.show();
	hasPageLoaded=true;
}
function MM_findObj(n, d) { //v4.01
    var p, i, x; if (!d) d = document; if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
        d = parent.frames[n.substring(p + 1)].document; n = n.substring(0, p);
    }
    if (!(x = d[n]) && d.all) x = d.all[n]; for (i = 0; !x && i < d.forms.length; i++) x = d.forms[n];
    for (i = 0; !x && d.layers && i < d.layers.length; i++) x = MM_findObj(n, d.layers.document);
    if (!x && d.getElementById) x = d.getElementById(n); return x;
}

function left() {
    if (!hasPageLoaded) return;

    if (zoomOpen || zoomActive[theID]) {
        if (!zoomActive[theID])
            zoomOut(this, null);
        setTimeout('left()',100);
        return;         
    }

    if (leftLayer.isActive() || displayLayer.isActive() || rightLayer.isActive()) return;
    displayLayer.slideTo(-730, 0, 1000, -1);
    rightLayer.slideTo(0,0,1000,-1);
    leftLayer.shiftTo(730, 0);
    temp = leftLayer;
    leftLayer = displayLayer;
    displayLayer = rightLayer;
    rightLayer = temp;

    var currentPage = Number(document.getElementsByName('ctl00$ContentPlaceHolder1$Gallery' + displayLayer.layerLetter + '$currentPage')[0].value);
    MM_findObj('ctl00_ContentPlaceHolder1_Gallery' + rightLayer.layerLetter + '_currentPage').value = currentPage;
    MM_findObj('ctl00_ContentPlaceHolder1_Gallery' + rightLayer.layerLetter + '_newPage').value = 'left';
    MM_findObj('ctl00_ContentPlaceHolder1_Gallery' + rightLayer.layerLetter + '_refresh').click();
}
function right(e) {
    if (!hasPageLoaded) return;

    if (zoomOpen || zoomActive[theID]) {
        if (!zoomActive[theID])
            zoomOut(this, null);
        setTimeout('right()',100);
        return;         
    }

    if (leftLayer.isActive() || displayLayer.isActive() || rightLayer.isActive()) return;
    displayLayer.slideTo(730, 0, 1000, -1);
    leftLayer.slideTo(0,0,1000,-1);
    rightLayer.shiftTo(-730, 0);
    temp = rightLayer;
    rightLayer = displayLayer;
    displayLayer = leftLayer;
    leftLayer=temp;
    
    var currentPage = Number(document.getElementById('ctl00_ContentPlaceHolder1_Gallery' + displayLayer.layerLetter + '_currentPage').value);
    document.getElementById('ctl00_ContentPlaceHolder1_Gallery' + leftLayer.layerLetter + '_currentPage').value=currentPage;
    document.getElementById('ctl00_ContentPlaceHolder1_Gallery' + leftLayer.layerLetter + '_newPage').value='right';
    document.getElementById('ctl00_ContentPlaceHolder1_Gallery' + leftLayer.layerLetter + '_refresh').click();
}

function IsActive()
{
    return this.sliding;
}

// acc is number between -1 and 1 ( -1 full decelerated, 1 full accelerated, 0 linear, i.e. no acceleration)
dynObj.prototype.slideTo = function (destX,destY,slideDur,acc,endFn) {
  if (!document.getElementById) return;
  this.slideDur = slideDur || .0001; var acc = -acc || 0;
  if (endFn) this.onSlideEnd = endFn;
  // hold destination values (check for movement on 1 axis only)
 	if (destX == null) this.destX = this.x;	else this.destX = destX;
  if (destY == null) this.destY = this.y; else this.destY = destY;
  this.startX = this.x; this.startY = this.y;
	this.st = new Date().getTime();
	// control points for bezier-controlled slide (see www.youngpup.net accelimation)
  this.xc1 = this.x + ( (1+acc) * (this.destX-this.x)/3 );
	this.xc2 = this.x + ( (2+acc) * (this.destX-this.x)/3 );
  this.yc1 = this.y + ( (1+acc) * (this.destY-this.y)/3 );
	this.yc2 = this.y + ( (2+acc) * (this.destY-this.y)/3 );
	this.sliding = true;
  this.onSlideStart();
  dw_Animation.add(this.animString + ".doSlide()");
}

dynObj.prototype.jumpTo = function (x,y) {
    this.moveTo(x,y)
}

dynObj.prototype.doSlide = function() {
	if (!this.sliding) return;	
	var elapsed = new Date().getTime() - this.st;
	if (elapsed < this.slideDur) {
    var x = dw_Bezier.getValue(elapsed/this.slideDur, this.startX, this.destX, this.xc1, this.xc2);
    var y = dw_Bezier.getValue(elapsed/this.slideDur, this.startY, this.destY, this.yc1, this.yc2);
		this.shiftTo( Math.round(x) ,Math.round(y) );
		this.onSlide();
	} else {	// if time's up
    dw_Animation.remove(this.animString + ".doSlide()");
		this.shiftTo(this.destX,this.destY);
		this.onSlide();
		this.sliding = false;
		this.onSlideEnd();
	}
}

dynObj.prototype.slideBy = function(dx,dy,slideDur,acc,endFn) {
	var destX=this.x+dx; var destY=this.y+dy;
	this.slideTo(destX,destY,slideDur,acc,endFn);
}

dynObj.prototype.isActive = IsActive
dynObj.prototype.onSlideStart = function () {}
dynObj.prototype.onSlide = function () {}
dynObj.prototype.onSlideEnd = function () { if (this.el) this.el = null; }