Event.observe(window, 'load', function() {

	if($('poi')) $('poi').hide();
	if($('chair-lab')) $('chair-lab').hide();
	if($('vitrapoint')) $('vitrapoint').hide();

	var rollovers = document.getElementsByClassName('poi-logo').toArray().concat(document.getElementsByClassName('chairlab-logo').toArray().concat(document.getElementsByClassName('vitrapoint-logo').toArray()));
	for(var i = 0; i < rollovers.length; i++) {

		rollovers[i].onclick = showExtendedInformation;
	}

	var map = $('dealer-map-container');
	if(map) {

		new Clicker('dealer-map-container', {topelement: 'dealer-spacer', bottomelement: 'dealer-list', padding: 5});

		if(GBrowserIsCompatible() && $('dealer-map')) {
			var map;
			var lastClicked;
			var lastClickedID;
			var map = new GMap2(document.getElementById('dealer-map'));
			var point = new GLatLng(48.77723402298075, 9.180536270141602);
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
			map.addControl(new GScaleControl());
			map.addControl(new GOverviewMapControl());
			map.setCenter(new GLatLng(48.77723402298075, 9.180536270141602), 14);

			var bounds = new GLatLngBounds();

			var baseIcon = new GIcon();
			baseIcon.iconSize = new GSize(68, 33);
			baseIcon.iconAnchor = new GPoint(50, 32);
			baseIcon.infoWindowAnchor = new GPoint(50, 12);
			baseIcon.shadow = '/_images/dealer/map-shadow.png';
			baseIcon.shadowSize = new GSize(71, 36);

			var starIcon = new GIcon();
			starIcon.iconSize = new GSize(37, 32);
			starIcon.iconAnchor = new GPoint(18, 31);
			starIcon.infoWindowAnchor = new GPoint(50, 12);
			starIcon.shadow = '/_images/dealer/map-star-shadow.png';
			starIcon.shadowSize = new GSize(40, 34);


			for(var i = 0; i < DEALERS.length; i++) {

				var point = new GLatLng(DEALERS[i][0], DEALERS[i][1]);

				if(DEALERS[i][4] == 1) {

					var icon = new GIcon(baseIcon);
					icon.image = "/_images/dealer/map-cold.png";
				} else {
					var icon = new GIcon(starIcon);
					icon.image = "/_images/dealer/map-star-cold.png";
				}

				var marker = new GMarker(point, {icon:icon, title: DEALERS[i][2].name});
				var dealer = DEALERS[i];

				GEvent.addListener(marker, 'click', function(event, thedealerid) {

					var detailnodeid = 'dealer-detail-' + thedealerid[3];

					if(lastClicked) {

						var lastClickedIcon = lastClicked.getIcon();

						if(lastClickedIcon.image == '/_images/dealer/map-cold.png') {

							lastClicked.setImage('/_images/dealer/map-cold.png');
						} else {

							lastClicked.setImage('/_images/dealer/map-star-cold.png');
						}

						lastClicked = null;

						var lastclickednode = lastClickedID;

						if ($(lastclickednode)) {

							var cleannodes = $(lastclickednode).getElementsByClassName('detail-border-left');
							if (cleannodes) {
								cleannodes.each(function(n) {n.removeClassName('detail-border-left'); });
							}

							cleannodes = $(lastclickednode).getElementsByClassName('detail-border-top');
							if (cleannodes) {
								cleannodes.each(function(n) {n.removeClassName('detail-border-top'); });
							}

							cleannodes = $(lastclickednode).getElementsByClassName('detail-border-right');
							if (cleannodes) {
								cleannodes.each(function(n) {n.removeClassName('detail-border-right'); });
							}

							var nextdetailnode = $(lastclickednode).next('tr');
							if (nextdetailnode) {
								cleannodes = nextdetailnode.getElementsByClassName('detail-border-bottom');
								if (cleannodes) {
									cleannodes.each(function(n) {n.removeClassName('detail-border-bottom'); });
								}
							}
						}

					}

					var currentIcon = this.getIcon();

					if(currentIcon.image == '/_images/dealer/map-cold.png') {

						this.setImage('/_images/dealer/map-hot.png');
					} else {

						this.setImage('/_images/dealer/map-star-hot.png');
					}

					lastClicked = this;
					lastClickedID = detailnodeid;

					if ($(detailnodeid)) {
						var detailchildnode = $(detailnodeid).down();
						if (detailchildnode) {
							detailchildnode.addClassName('detail-border-left');
						}

						detailchildnode = detailchildnode.next('td');
						if (detailchildnode) {
							detailchildnode.addClassName('detail-border-top');
						}

						detailchildnode = detailchildnode.next('td');
						if (detailchildnode) {
							detailchildnode.addClassName('detail-border-right');
						}

						var nextdetailnode = $(detailnodeid).next('tr');
						if ( nextdetailnode ) {
							detailchildnode = nextdetailnode.down();
							if (detailchildnode) {
								detailchildnode.addClassName('detail-border-bottom');
							}
						}

						new Effect.ScrollTo($(detailnodeid).down(), {offset: -5});
					}


				}.bindAsEventListener(marker, dealer));

				map.addOverlay(marker);
				bounds.extend(point);
			}

			map.setZoom(map.getBoundsZoomLevel(bounds)-1);
			map.setCenter(bounds.getCenter());
		}
	}

	/* Because IE6 doesn't understand the :hover pseudo-class on anything but
	'a' elements, we need to double-implement the rollover */
	var dealerButton = $('dealer-submit-button');
	if(dealerButton) {

		Event.observe(dealerButton, 'mouseover', function() { this.addClassName('dealer-submit-button-hover');  }.bindAsEventListener(dealerButton));
		Event.observe(dealerButton, 'mouseout', function() { this.removeClassName('dealer-submit-button-hover');  }.bindAsEventListener(dealerButton));
	}
});



function showExtendedInformation()
{
	if(!$('dealer-extended-information')) {

		var containingRow = this.up('tr');

		var overlay = Builder.node('div', {id: 'dealer-extended-information'});

		if(this.hasClassName('poi-logo')) {
			overlay.innerHTML = $('poi').innerHTML;
		} else if(this.hasClassName('vitrapoint-logo')) {
			overlay.innerHTML = $('vitrapoint').innerHTML;
		} else {
			overlay.innerHTML = $('chair-lab').innerHTML;
		}

		$(overlay).setStyle({
			height: containingRow.down('td').getHeight() + containingRow.next('tr').down('td').getHeight() - 40 + 'px',
			backgroundColor: containingRow.getStyle('backgroundColor'),
			left: Position.positionedOffset(this.up('td'))[0] + 'px',
			top: Position.positionedOffset(this.up('td'))[1] + 'px'
		});

		this.up('div').appendChild(overlay);

		$('dealer-list-container').setStyle({
				zIndex: 100
		});

		new Effect.Move('dealer-extended-information', {
					x: -445,
					y: 0,
					mode: 'relative',
					queue: {
						position: 'end',
						scope: 'extendedscope',
						limit: 2
					},
					afterFinish: function() {

						this.addClassName('extended-active');
						this.onclick = hideExtendedInformation;
					}.bind(this)
		});
	}

	return false;
}



function hideExtendedInformation()
{
	if($('dealer-extended-information')) {

		new Effect.Move('dealer-extended-information', {
				x: 445,
				y: 0,
				mode: 'relative',
				queue: {
					position: 'end',
					scope: 'extendedscope',
					limit: 2
				},
				afterFinish: function() {

					if($('dealer-extended-information'))
						$('dealer-extended-information').remove();

					$('dealer-list-container').setStyle({
							zIndex: 50
					});

					this.removeClassName('extended-active');
					this.onclick = showExtendedInformation;
				}.bind(this)
		});
	}

	return false;
}