// gallery wheel

var wheel = {
	start: function() {
		this.target = $('gallery-overflow');
		this.set = this.target.getFirst();
		this.width = this.set.getStyle('width').toInt();
		$(this.set).clone().injectAfter(this.set);
		this.animate();
	},
	animate: function() {
		var margin = this.target.getStyle('marginLeft').toInt() || 0;
		var newMargin = margin - 2;
		if((newMargin * -1) < this.width) this.target.setStyle('marginLeft', newMargin);
		else this.target.setStyle('marginLeft', 0);		
		wheel.timer = setTimeout('wheel.animate()', 25);
	},
	pause: function() {
		clearTimeout(wheel.timer);
		wheel.timer = 0;
		if(wheel.timerResume) clearTimeout(wheel.timerResume);
	},
	resume: function() {
		if(!this.timer) wheel.timerResume = setTimeout('wheel.animate()', 100);
	}
}

// photo swap

var photo = {
	swap: function() {
		for(var i = 0; i < photo.thumbs.length; i ++) {
			if($(photo.thumbs[i]).hasClass('selected')) $(photo.thumbs[i]).removeClass('selected');
		}
		this.addClass('selected');
		photo.caption = this.getFirst().getNext() ? this.getFirst().getNext().getText() : '';
		var overlay = new Element('img', {'src': this.href, 'class': 'overlay'});
		overlay.injectBefore('viewer');
		overlay.setStyle('opacity', 0);
		photo.overlay = overlay;
		$('caption').setText('Loading Image...');
		photo.check();
		this.blur();
	},
	check: function() {
		if(photo.overlay.complete || (window.webkit && photo.overlay.width > 0)) setTimeout('photo.fade()', 100);
		else setTimeout('photo.check()', 500);
	},
	fade: function() {
		photo.overlay.effect('opacity', {duration: 6000}).start(0, 100);
		$('caption').setText(photo.caption);
	}
}


// car of the week

var week = {
	swap: function() {
		var overlay = new Element('img', {'src': this.href, 'class': 'overlay'});
		overlay.injectBefore('week-images-main');
		overlay.setStyle('opacity', 0);
		week.overlay = overlay;
		week.check();
		this.blur();
	},
	check: function() {
		if(week.overlay.complete || (window.webkit && week.overlay.width > 0)) setTimeout('week.fade()', 100);
		else setTimeout('week.check()', 500);
	},
	fade: function() {
		week.overlay.effect('opacity', {duration: 6000}).start(0, 100);
	}
}

// tab effect

var tab = {
	up: function() {
		this.getParent().effect('marginTop', {duration: 200}).start(5, 0);
	},
	down: function() {
		this.getParent().effect('marginTop', {duration: 200}).start(0, 5);
	}
}

// thumbnail pagination

var pages = {
	offset: 0,
	up: function() {
		if(pages.current > 1) {
			pages.offset = pages.offset + 360;
			pages.current --;
			pages.update();
		}	
	},
	down: function() {
		if(pages.current < pages.total) {
			pages.offset = pages.offset - 360;
			pages.current ++;
			pages.update();
		}
	},
	update: function() {
		var container = $('vehicle-thumbs-offset'); 
		var margin = container.getStyle('marginTop').toInt();
		container.effect('marginTop', {duration: 200}).start(margin, pages.offset);
		$('page-display').setText('Page ' + pages.current + ' of ' + pages.total);
		if(pages.current == pages.total) $('page-down').className = 'down-disabled';
		else $('page-down').className = 'down';
		if(pages.current == 1) $('page-up').className = 'up-disabled';
		else $('page-up').className = 'up';
	}
}

window.addEvent('domready', function() {
									 
	// initialize gallery wheel
	
	if($('gallery-wheel')) {
		$('gallery-wheel').addEvent('mouseover', wheel.pause);
		$('gallery-wheel').addEvent('mouseout', wheel.resume);
		wheel.start();
	}
	
	// or initialize tabs
	
	else if($('vehicle-tabs')) {
		var tabs = $('vehicle-tabs').getElements('a');
		for(var i = 0; i < tabs.length; i ++) {
			if($(tabs[i]) && ($(tabs[i]).getParent().className != 'selected')) {
				$(tabs[i]).addEvent('mouseenter', tab.up.bindWithEvent(tabs[i]));
				$(tabs[i]).addEvent('mouseleave', tab.down.bindWithEvent(tabs[i]));
			}
		}
	}
	
	// initialize thumbnails

	if($('vehicle-thumbs')) {
		photo.thumbs = $('vehicle-thumbs').getElements('a');
		for(var i = 0; i < photo.thumbs.length; i ++) {
			if($(photo.thumbs[i])) {
				$(photo.thumbs[i]).addEvent('click', photo.swap.bindWithEvent(photo.thumbs[i]));
				$(photo.thumbs[i]).onclick = function() { return false; };
				if(window.webkit) {
					$(photo.thumbs[i]).setStyles({
						'font-family': 'arial, helvetica, sans-serif', 
						'font-size': '9px'
					});
				}
			}
		}
		if($('page-display')) {
			$('vehicle-thumbs').setStyle('height', 355);
			if(photo.thumbs.length > 9) {
				pages.total = Math.ceil(photo.thumbs.length / 9);
				pages.current = 1;
				$('page-display').setText('Page 1 of ' + pages.total);
				$('page-up').addEvent('click', pages.up);
				$('page-up').onclick = function() { $('page-up').blur(); return false; };
				$('page-down').addEvent('click', pages.down);
				$('page-down').onclick = function() { $('page-down').blur(); return false; };
				$('page-down').className = 'down';
			}
		}
	}
	
	
	// car of the week
	
	if($('week-images-thumbs')) {
		week.thumbs = $('week-images-thumbs').getElements('a');
		for(var i = 0; i < week.thumbs.length; i ++) {
			if($(week.thumbs[i])) {
				$(week.thumbs[i]).addEvent('click', week.swap.bindWithEvent(week.thumbs[i]));
				$(week.thumbs[i]).onclick = function() { return false; };
			}
		}
	}
	
	
});

