var zaEffectDone = true;

/*	Leek me handig om een soort van globale settings maken: */
var ovm	= {
	settings : {
		kavel_sluit_latency:	5000	//	5 seconden
	}
};

Effect.ScrollTo = function(element) {
  var options = arguments[1] || {},
    scrollOffsets = document.viewport.getScrollOffsets(),
    elementOffsets = $(element).cumulativeOffset(),
		max = document.viewport.getHeight() - 55;

  if (options.offset) elementOffsets[1] += options.offset;

  return new Effect.Tween(null,
    scrollOffsets.top,
    Math.max(elementOffsets[1], max),
    options,
    function(p){ scrollTo(scrollOffsets.left, p.round()) }
  );
};

var Favorieten = Class.create({

	observeAnchors : function (container) {
	if (!container) var container = document.body;
		$(container).select('a.addtofavorites').each(function (item) {
			item.observe('click', this.clickAnchor.bindAsEventListener(this));
		}.bind(this));
	},

	clickAnchor : function (event) {
		event.stop();
		var element = Event.element(event);
		new Ajax.Request(element.href, {
			method : 'post',
			onSuccess : function (transport) {
				// Notify user
				var div = new Element('div');
				var p = new Element('p');
				p.innerHTML = 'Kavel toegevoegd aan favorieten';
				div.appendChild(p);

				// Highlight message
				element.replace(div);
				new Effect.Highlight(div);
			}
		});
	}

});

var Countdown = Class.create({

	initialize : function () {
		this.observeKavels();
	},

	run : function (element) {
		
		//	Aantal resterende seconden ophalen uit element
		if (!element.ovm_countdown) element.ovm_countdown = element.readAttribute('ovm:countdown');
		
		if (element.ovm_countdown == 'CLOSED')
			milsecleft = 0;
		else
			milsecleft	= element.ovm_countdown * 1000;
		
		//	Als er nog meer dan 15 seconden over zijn; tellertje maken
		if (milsecleft >= ovm.settings.kavel_sluit_latency) {
			milsecleft -= ovm.settings.kavel_sluit_latency;	//	Tijd 15 seconden laten afwijken ivm latency (Feature #33017: 5 seconden)
			var day  = Math.floor(milsecleft/(60*60*1000*24)*1);
			var hour = Math.floor((milsecleft%(60*60*1000*24))/(60*60*1000)*1);
			var min  = Math.floor(((milsecleft%(60*60*1000*24))%(60*60*1000))/(60*1000)*1);
			var sec  = Math.floor((((milsecleft%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1);

			if ((day <= 0 && hour <= 0 && min <= 0 && sec < 1) == false) {
				var content = '';
				if (day != 0)
					content += " <strong>" + day + "</strong> " + ( day == 1 ? "dag" : "dagen" );
				if (hour != 0 || day != 0 )
					content += " <strong>" + hour + "</strong> " + ( hour == 1 ? "uur" : "uren" );
				if (min != 0 || hour != 0 || day != 0 )
					content += " <strong>" + min + "</strong> " + ( min == 1 ? "minuut" : "minuten" );
				if (sec != 0 || min != 0 || hour != 0 || day != 0 )
					content += " <strong>" + sec + "</strong> " + ( sec == 1 ? "seconde" : "seconden" );
				element.innerHTML = content;
			}

			milsecleft = milsecleft+ovm.settings.kavel_sluit_latency-1000;
			element.ovm_countdown = milsecleft/1000;
			setTimeout(function () {
				this.run(element);
			}.bind(this), 1000);
		
		//	Als er nog minder dan 15 seconden over zijn, maar meer dan 0, doen alsof we de boel sluiten:
		//	Feature #33017: bezig met sluiten --> tijd teruggeschroefd naar 5 seconden
		} else if ( milsecleft > 0 ) {
			element.innerHTML = '<span class="bold oranje">Bezig met sluiten kavel...</span>';

			if ( element.next( 'div.bieden-op-kavel-wrapper' ) )
				element.next( 'div.bieden-op-kavel-wrapper' ).hide();
				
			milsecleft = milsecleft-1000;
			
			if (milsecleft>0) {
				element.ovm_countdown = milsecleft/1000;
				
				setTimeout(function () {
					this.run(element);
				}.bind(this), 1000);
				
			} else {
				document.location.reload(true);
			}
		
		//	gesloten!
		} else {
			element.innerHTML = '<span class="bold rood">Kavel gesloten</span>';
		}
	},

	observeKavels : function () {
		$$('td[ovm:countdown], span[ovm:countdown]').each (function (item) {
			if ( item.readAttribute('ovm:observed') != '1' ) {
				item.writeAttribute( 'ovm:observed' , '1' );	/* Administratie; bij uitgeklapte zaken wordt er nu niet dubbel observed */
				this.run(item);
			}
		}.bind(this));
	}

});

var KavelRefresher = Class.create({

	initialize: function() {
	
		this.minimalRefreshRate = 5;		// Minimale snelheid van refreshen.
		this.maximalRefreshRate = 30;		// Maximale snelheid van refreshen.
		this.increaseRefreshRateAfter = 5;  // Na deze tijd het refreshen vertragen.
		this.increaseRefreshRateBy = 5;		// Zoveel seconden vertragen.
		this.refreshRate = 5;				// De huidige refresh snelheid in secondes.
		this.resetAfter = 15000; 			// Als de gebruiker weer actief wordt na deze tijd wordt er meteen gerefreshed (milliseconden).
		
		this.periodicalExecuter = null;
		this.isStillRefreshing = false;		// We willen niet refreshen als er nog gewacht wordt op een response.
		this.data = null;
		this.lastActivity = new Date().getTime();
		this.lastRefresh = new Date().getTime();
		
		this.biedstappenFocus = false;
		
		this.debug = false;
	
		var kavelBlok = $("js-kavel-refresher");

		if(kavelBlok != null) {
			// Oke, refresher id is te vinden op de pagina. Dan gaan we los. 
			this.restartPeriodicalExecuter();
			
			//if(this.debug) console.log("Observing window");
			Event.observe(window, 'mousemove', function(event) {
				var newActivity = new Date().getTime();
				if(newActivity - this.lastActivity > this.resetAfter) {
					this.resetPeriodicalExecuter();
				}
				
				this.lastActivity = newActivity;
			}.bind(this));
			
			// Als de biedstappen focus hebben dan niet refreshen.
			var biedstappen = $("manualBiedingsWaarde");
			if(biedstappen) {
				
				biedstappen.observe('focus', function(event) {
					this.biedstappenFocus = true;
				}.bind(this));

				/*
				biedstappen.observe('blur', function(event) {
					this.biedstappenFocus = false;
				}.bind(this));
				*/
			}

		}

	},
	
	/**
	 * Reset de PeriodicalExecuter, haal meteen nieuwe biedgegevens op en zet
	 * de refresh rate op de minimale mogelijke snelheid.
	 */
	resetPeriodicalExecuter: function() {
		this.refreshBiedGeschiedenis();
		this.refreshRate = this.minimalRefreshRate;
		this.restartPeriodicalExecuter();
	},
	
	/**
	 * Start de PeriodicalExecuter opnieuw met de huidige refreshrate.
	 */
	restartPeriodicalExecuter: function() {
		//if(this.debug) console.log("PeriodicalExecuter started!");
		if(this.periodicalExecuter != null) {
			this.periodicalExecuter.stop();
			this.periodicalExecuter = null;
		}
		this.periodicalExecuter = new PeriodicalExecuter(this.requestKavelDetails.bind(this), this.refreshRate);
	},
	
	/**
	 * Refresh de kavel details (aantal biedingen, huidig bod, verhoging) met 
	 * de gegevens uit this.data.
	 */
	refreshKavelDetails: function() {
		if(this.data != null) {
			// Simpele dingetjes vervangen.
			$("js-aantal").update(this.data['aantal']);
			if(this.data['huidig'] == 0) {
				$("js-huidig").update('-');
			} else {
				$("js-huidig").update('€&nbsp;' + Math.round(this.data['huidig']) + '.-');
			}
			$("js-verhoging").update('€&nbsp;' + this.data['verhoging'] + '.-');					
		}
	},
	
	/**
	 * Refresh de biedstappen met de gegevens uit this.data.
	 */
	refreshBiedStappen: function() {

		if(this.data != null && !this.biedstappenFocus) {
			
			// Biedstappen vervangen.
			var biedStappen = $("manualBiedingsWaarde");
			if(biedStappen != null) {
				
				// Verwijder alle huidige biedstappen.
				var optionsArray = biedStappen.descendants();
				optionsArray.each(function(element){element.remove();});

				// En zet de nieuwe er in.
				this.data["biedbedragen"].each(function(stap){
					var option = new Element('option', {'value': stap});
					option.update('€&nbsp;' + parseInt(stap) + '.-');
					biedStappen.insert(option);
				});
			}
		}
	},
	
	/**
	 * Refresh de biedgeschiedenis met de gegevens uit this.data.
	 */
	refreshBiedGeschiedenis: function() {
		if(this.data != null) {
			
			// Biedingen vervangen.
			var biedingen = $('js-biedingen');
			if(biedingen != null) {
				
				var tbody = biedingen.down('tbody'); 
				var rows = tbody.childElements();
				
				// Alle huidige biedingen weghalen.
				rows.each(function(element){element.remove();});
				
				// Opnieuw vullen.
				this.data["biedingen"].each(function(bod, i){
					var tr = new Element('tr', {
						'class': (i % 2 == 0) ? 'oneven' : 'even' // Verkeerd maar toch ook goed.
					});
					var th = new Element('th', {'class': 'rechts', 'scope': 'row'}).update('€&nbsp;' + bod['waarde'] + '.-');
					var tdDatum = new Element('td').update(bod['datum']);
					var tdGebruiker = new Element('td').update(bod['gebruiker']);
					
					tr.insert(th);
					tr.insert(tdDatum);
					tr.insert(tdGebruiker);
					
					tbody.insert(tr);
				});
			}			
		}
	},
	
	/**
	 * Check of de gebruiker nog actief is. Als de tijd sinds this.lastAcivity 
	 * hoger is dan this.increaseRefreshRateAfter dan verhogen we de huidige
	 * this.refreshRate met this.increaseRefreshRateBy. Net zo lang tot 
	 * this.maximalRefreshRate bereikt is. 
	 */
	checkActivity: function() {
		var inactivity = Math.ceil(Math.abs((new Date().getTime() - this.lastActivity) / 1000));
		//if(this.debug) console.log('Inactive for: ' + inactivity);

		if(inactivity > this.increaseRefreshRateAfter) {
			this.refreshRate = this.refreshRate + this.increaseRefreshRateBy;
			if(this.refreshRate > this.maximalRefreshRate) {
				this.refreshRate = this.maximalRefreshRate;
			}
			//if(this.debug) console.log('Increased refresh rate to: ' + this.refreshRate);
			this.restartPeriodicalExecuter();
		}

	},
	
	/**
	 * Vraag de kavel gegevens aan de server en handel de response af. 
	 */
	requestKavelDetails: function() {

		if(!this.isStillRefreshing) {
			//if(this.debug) console.log('requestKavelDetails');
			this.isStillRefreshing = true;

			var url = window.location.pathname.replace('kavel', 'ajaxgetkaveldetails');
			
			new Ajax.Request(url, {
				method: 'get',
				parameters: {ajax: 1},
				onSuccess: function(response) {
					//if(this.debug) console.log('refreshing');
					this.data = response.responseText.evalJSON();

					this.refreshKavelDetails();
					this.refreshBiedStappen();
					this.refreshBiedGeschiedenis();
					
					this.checkActivity();

					this.isStillRefreshing = false;
				}.bind(this),
				
				onFailure: function(response) {
					this.isStillRefreshing = false;
				}.bind(this)
			});
		}
	}

});

document.observe("dom:loaded",  function() {

	/*
	 * Favorieten toevoegen (non-obtrusive using existing anchors)
	 */
	var favorieten = new Favorieten();
	favorieten.observeAnchors();

	/*
	 * Kavel Countdown
	 */
	new Countdown();
	
	/*
	 * 
	 */
	new KavelRefresher();

	/*
	 * Behaviour inlogveld
	 */
	if ($('loginEmail')) {
		Event.observe($('loginEmail'), 'focus', function() {
			if (this.value == 'e-mail...') {
				this.value = '';
			}
		});

		Event.observe($('loginEmail'), 'blur', function() {
			if (this.value == '') {
				this.value = 'e-mail...';
			}
		});

		if ($('loginErrors')) {
			$('loginEmail').focus();
		}
	}
	
	/*
	 * Behaviour naamveld nieuwsbrief.
	 */
	if ($('nieuwsbriefNaam')) {
		Event.observe($('nieuwsbriefNaam'), 'focus', function() {
			if (this.value == 'naam...') {
				this.value = '';
			}
		});

		Event.observe($('nieuwsbriefNaam'), 'blur', function() {
			if (this.value == '') {
				this.value = 'naam...';
			}
		});

		if ($('nieuwsbrief-errors')) {
			$('nieuwsbrief-errors').focus();
		}
	}
	
	/*
	 * Behaviour emailveld nieuwsbrief.
	 */
	if ($('nieuwsbriefEmail')) {
		Event.observe($('nieuwsbriefEmail'), 'focus', function() {
			if (this.value == 'e-mail...') {
				this.value = '';
			}
		});

		Event.observe($('nieuwsbriefEmail'), 'blur', function() {
			if (this.value == '') {
				this.value = 'e-mail...';
			}
		});
	}

	/*
	 * Behaviour wachtwoordveld
	 */
	if ($('loginWachtwoord')) {
		Event.observe($('loginWachtwoord'), 'focus', function() {
			if (this.value == 'wachtwoord...') {
				this.value = '';
			}
		});

		Event.observe($('loginWachtwoord'), 'blur', function() {
			if (this.value == '') {
				this.value = 'wachtwoord...';
			}
		});
	}

	/*
	 * Behaviour zoekenveld
	 */
	if ($('qZoeken')) {
		Event.observe($('qZoeken'), 'focus', function() {
			if (this.value == 'zoeken...') {
				this.value = '';
			}
		});

		Event.observe($('qZoeken'), 'blur', function() {
			if (this.value == '') {
				this.value = 'zoeken...';
			}
		});
	}
	
	/*
	 * Behaviour stuur-door
	 */
	
	$$('#stuur-door input[type="text"]').each(function (s, i) {
		s.origValue = s.getAttribute('value');
		s.observe('focus', function () {
			this.setAttribute('value', '');
		}.bind(s));
		s.observe('blur', function () {
			if (this.value=='')
				this.setAttribute('value', this.origValue);
		}.bind(s));
	});

	/*
	 * Sluit het detail venster
	 */
	if ($('kavelDetailWindow') && window.location.href.indexOf('expand=') == -1) {
		$('kavelDetailWindow').style.display = 'none';
		$('openDetailWindow').style.display = 'block';
	}

	/*
	 * Open detail venster (nuindeveiling)
	 */
	if ($('openDetailWindow')) {
		Event.observe($('openDetailWindow'), 'click', function() {
			if ($('kavelDetailWindow').visible()) {
				Effect.BlindUp($('kavelDetailWindow'));
			}
			else {
				new Effect.ScrollTo('kavelDetailWindow');
				Effect.BlindDown($('kavelDetailWindow'), {duration:0});
			}
			return false;
		});
	}

	/*
	 * Sluit detailvenster (nuindeveiling)
	 */
	if ($('closeDetailWindow')) {
		Event.observe($('closeDetailWindow'), 'click', function() {
			Effect.BlindUp($('kavelDetailWindow'));
			return false;
		});
	}

	$$('input.money').each(function(item) {
		Event.observe(item, 'focus', function(e) {
			this.value = '';
		});

		Event.observe(item, 'blur', function(e) {
			if (this.value.match(/^\d+$/)) {
				this.value = '€ ' + this.value + ',-';
			}
			else if (this.value.match(/^\d+[,.]\d{0,2}/)) {
				str = this.value.replace(',','.');
				str2 = '€ ' + Math.round(parseInt(str) + '.' + (Math.round((str % 1) * 100))) + ',-';
				if (Math.round((str % 1) * 100) == 0) {
					str2 = str2.substring(-2, str2.length -1);
					str2 += '-';
				}
				this.value = str2;
			}
			else if (!this.value.length) {
				this.value = '€ ...';
			}
		});
	});

	$$('ul.tabs').each(function (item) { if (!item.hasClassName('nojs')) { new TabSet(item);}} );

	if($('type-p')) {
		var bedrijfsvelden = ['factuurgegevens','bedrijfsnaam','kvk','btw','factuuradres','factuurpostcode','factuurplaats'];

		if ($('type-p').checked) {
			bedrijfsvelden.each(function (item) {
				$(item).up('li').hide();
			});
		}

		Event.observe($('type-p'), 'click', function(e) {
			if (this.checked)
				bedrijfsvelden.each(function (item) {
					new Effect.BlindUp($(item).up('li'), {duration: .4})
				});
			bedrijfsvelden.each(function (item) { $(item).value = ''; });
		});
		Event.observe($('type-z'), 'click', function(e) {
			if (this.checked && zaEffectDone)
				zaEffectDone = false;
				bedrijfsvelden.each(function (item) {
					new Effect.BlindDown($(item).up('li'), {duration: .4, afterFinish : function() {zaEffectDone = true}  });
				});
		});
	}
	
//	<td>'s in tr.kavel-summary andere kleur onhover
	$$('tr.kavel-summary').each( function(el) {
		var anchors = el.select('a');
		var anchor = false;
		/*anchors.each( function(hyperlink) {
			if( hyperlink.href != '#' ) {
				anchor = hyperlink;
				return;
			}
		});*/
		
		// Als er een <a> gevonden is, gaan geven we de <tr> een classname
		// Bovendien gaan we onclick naar de pagina waar die link naar verwijst
		if( anchor ) {
			el.addClassName('pointer');
			el.observe( 'click', function(event) {
				window.location = anchor;
			});
		}
		
		var nextRij = el.next();
		var nextRijBijhorend = nextRij && nextRij.hasClassName('no-border-top') ? true : false;
		
		el.observe( 'mouseover', function(event) {
			el.addClassName('hover');
			if( nextRijBijhorend ) {
				nextRij.addClassName('hover');
			}
		});
		
		el.observe( 'mouseout', function(event) {
			el.removeClassName('hover');
			if( nextRijBijhorend ) {
				nextRij.removeClassName('hover');
			}
		});
	});

	/*
	 * Kavel detail links in lijsten...
	 * Zie: http://github.com/madrobby/scriptaculous/wikis/effect-blindup
	 * Werkt dus niet lekker met table-elementen. Dus omgezet naar een div binnen een tr.
	 */
	$$('tr.kavel-summary a.kavel-get-details').each(function (item) {
		Event.observe(item, 'click', function(e) {						
			
			// Verberg andere details
			$$('tr.kavel-details').each( function ( element ) {
				if ( item != element && element.visible() ) {
					new Effect.BlindUp( element , { afterFinish: function () { element.remove(); } });					
				}
			}.bind(item));

			// Toon samenvattingen weer
			$$('tr.kavel-summary').invoke('show');

			if ($('kavel-details-' + item.getAttribute('ovm:kavelid'))) {
				// Deze info is er nog wel
				new Effect.BlindDown('kavel-details-' + item.getAttribute('ovm:kavelid'));
			}
			else {
				// Haal nieuwe details
				if (document.body.className == 'mijnovm') {
					url = '/nl/mo/ajaxgetkaveldetails/' + item.getAttribute('ovm:kavelid') + '?combikavel=' + item.getAttribute('ovm:combikavel');
				}
				else /* if(document.body.className == 'listKavels') */ {
					//url = '/nl/nuindeveiling/ajaxgetkaveldetails/' + item.getAttribute('ovm:kavelid');
					url = '/nl/veiling/ajaxgetkaveldetails/' + item.getAttribute('ovm:kavelid');
				}

				new Ajax.Updater(
						$(item).up('tr'),
						url,
						{
							method: 	'get',
							insertion:  'after',
							onComplete: function() {
								$('kavel-details-' + item.getAttribute('ovm:kavelid')).hide();
								new Effect.BlindDown('kavel-details-' + item.getAttribute('ovm:kavelid'));
								
								//	Lightbox herinitialiseren:
								initLightbox ();
								
								//	Countdown herinitialiseren:
								new Countdown ();
								
								//	Sluitknop actie geven:
								$$('div.kavel-details a.sluiten').each( function ( item ) {
									item.observe( 'click' , function( event ) {
										event.stop();
										var element = item.up('div.kavel-details');
										new Effect.BlindUp( element , { 
											afterFinish: function () { 
												element.up('tr.kavel-details').remove(); 
											} 
										});
									});
								});
																
							}
						}
					);
			}			
			
			// Verberg deze samenvatting
			if ($(this).up('tr.needshiding')) {
				$(this).up('tr.needshiding').hide();
			}
			e.stop();
		})
	});

	/*
	 * Komende veilingen uitklapgedrag
	 */
	//$$('a.veiling-get-details').each(function (item) {
	//	Event.observe(item, 'click', function(e) {
	//		$$('tr.veiling-summary').invoke('show');
	//	
	//		$$('tr.veiling-details').each(function(item) {
	//			if (item.visible()) {
	//				new Effect.BlindUp(item);
	//			}
	//		});
	//		
			//	De bovenliggende tr zoeken:
	//		var tr = this.up('tr.veiling-summary');
	//		
	//		tr.hide();
	//		new Effect.BlindDown(tr.next('tr.veiling-details'));
	//
	//		e.stop();
	//	});
	//});
	
	$$('a.veiling-get-details').each(function (item) {
		Event.observe(item, 'click', function(e) {
			//	De bovenliggende tr zoeken:
			var tr = this.up('tr.veiling-summary');
			
			tr.next('tr.veiling-details').toggleClassName('invisible');
			
			e.stop();
		});
	});

	//	Sluitknop actie geven:
	$$('div.kavel-details a.sluiten').each( function ( item ) {
		item.observe( 'click' , function( event ) {
			event.stop();
			var element = item.up('div.kavel-details');
			new Effect.BlindUp( element , { 
				afterFinish: function () { 
					element.up('tr.kavel-details').remove(); 
				} 
			});
		});
	});
	
	//	Doorsturen spul
	var doorsturen = null;
	if( doorsturen = $('doorsturen') ) {
		doorsturen.observe( 'click' , function ( event ) {
			event.stop();
			
			if ( $('stuur-door-container') != null ) {
			
				$('stuur-door-container').remove();
				
			} else {
			
				var div = new Element('div', {'id': 'stuur-door-container'});
				$('extra-opties').insert( div );
			
				new Ajax.Updater(
					'stuur-door-container', 
					$('doorsturen').readAttribute( 'href' ), 
					{
						'method' : 'get',
						'onComplete' : function () {
							$('stuur-door').observe ( 'submit' , function ( ev ) {
								ev.stop();
								new Ajax.Updater(
									'stuur-door-container',
									$('stuur-door').readAttribute( 'action' ),
									{ 
										'parameters' : $('stuur-door').serialize() ,
										'onComplete' : function () { $('stuur-door-closer').observe( 'click' , function (e) { e.stop(); $('stuur-door-container').remove(); }); }
									}
								);
							});
						}
					});
				
			}
		});
	}
	
	//	Jump to kavel:
	if ( $('jump-to-kavel') != null ) {
		$('jump-to-kavel-kavel_nummer').observe( 'change' , function (e) {
			var url = $('jump-to-kavel').readAttribute( 'action' ) + '/' + $('jump-to-kavel-veiling_url').getValue() + '/' + $('jump-to-kavel-kavel_nummer').getValue() + '#kavel-' + $('jump-to-kavel-kavel_nummer').getValue();
			window.location = url;
		});
	}
	
	// Jump to page:
	$$('.jump-to-pagina').each( function(jtp) {
		jtp.down('select').observe( 'change' , function (e) {
			jtp.submit();
		});		
	});
	
	//	Als er een ander land wordt gekozen dan Nederland (waarde 646) dan
	//	de provincie op nvt. zetten:
	if( $('kies-land') != null && $('kies-provincie') != null ) {
		$('kies-land').observe( 'change' , function (event) {
			if ( $('kies-land').getValue() == '646' ) {
				//$('kies-provincie').childElements()[1].writeAttribute( 'selected' , 'selected' );
				$('kies-provincie').value = 'GR';
			} else {
				//$('kies-provincie').childElements()[0].writeAttribute( 'selected' , 'selected' );
				$('kies-provincie').value = '';
			}
		});
	}
	
	// Alle links met een class 'externe-link' openen in een nieuw venster
	$$('a.externe-link').each( function(el) {
		el.target =  '_blank';
	});
	
	//	Alle links met de class 'open-in-popup' openen in een popup
	$$('a.open-in-popup').each( function(el) {
		el.observe( 'click' , function (event) {
			Event.stop( event );
			window.open(el.href, '', 'width=500,height=600');
		});
	});
	
	//	Alle links met de class 'print' openen in een popup
	$$('a.print').each( function(el) {
		el.observe( 'click' , function (event) {
			Event.stop( event );
			window.open(el.href, '', 'width=720, height=700, top=100, left=100, toolbar=0, resizable=1, scrollbars=1, status=0.menubar=0, location=0, directories=0');
		});
	});
	
	//	Blok met 'Mijn OVM gegevens' inklappen en uitklappen bij click op knop
	var blok_mijn_gegevens = null;
	if( blok_mijn_gegevens = $('js_mijn-ovm-gegevens') ) {
		blok_mijn_gegevens.addClassName('invisible');
	}
	
	var knop_mijn_gegevens = null;
	if( knop_mijn_gegevens = $('js_bekijk-mijn-ovm-gegevens') ) {
		knop_mijn_gegevens.observe( 'click', function(event) {
			var knop = Event.element(event);
			knop.toggleClassName('omhoog');
			$('js_mijn-ovm-gegevens').toggleClassName('block');
			return false;
		});
	}
	
});

function TabSet(tabsElement) {
	var tabsElement = tabsElement;

	/*
	 * Maak referentie in de scope naar dit object, want de variabele this is
	 * straks niet meer beschikbaar omdat we steeds anonieme functies gebruiken.
	 */
	var gsc = this;

	tabs = tabsElement.select('a').each(function(item) {
		Event.observe(item, 'click', function(e) {
			matchingTab = $(gsc.getTabNameFromHref(this.href));
			if (matchingTab) {
				gsc.hideAllTabs();
				this.addClassName('active');
				matchingTab.show();
			}
			e.stop();
		})
	});

	this.hideAllTabs = function() {
		tabsElement.select('a').each(function(item) {
			item.removeClassName('active');
			$(gsc.getTabNameFromHref(item.href)).hide();
		});
	}

	this.getTabNameFromHref = function(hrefContent) {
		return hrefContent.substring(hrefContent.indexOf('#') + 1);
	}
}

/*

// bijwerken van de biedingen op de mijnovm pagina
new PeriodicalExecuter
(
	function(pe)
	{
		// store this element-search somewhere, as a cache.
		// prevents intensive DOM-search that eats processor cycles in browser
		if (!document.kavelUpdaterElements)
			document.kavelUpdaterElements = $$('tr [ovm:kavelupdaterid], div.bieden [ovm:kavelupdaterid]');
		
  		k = document.kavelUpdaterElements;
  		
  		if (k.length == 0) {
  			pe.stop();
  			return;
  		}
  		
  		if (!document.kavelUpdaterElementIds) {
  		
	  		var ids = new Array();
	  		for(i = 0; i < k.length; ++i) {
	  			
	  			k[i].tr = k[i].up('tr');
	  			k[i].divbieden = k[i].up('div.bieden');
	  			
	  			ids[i] = k[i].attributes.getNamedItem('ovm:kavelupdaterid').value;
	  		};
	
	  		document.kavelUpdaterElementIds  = ids.uniq().sort();
  		}
  		ids = document.kavelUpdaterElementIds;

  		var json = Object.toJSON(ids);
  		new Ajax.Request('/nl/ajax/updatebedragen', {
  			parameters: {
  				ids :  json,
  				timestamp : new Date().getTime()		//	om caching tegen te gaan, belangrijk dus!!
  			},
  			method: 'get',
			onSuccess: function(response) {
  				k = document.kavelUpdaterElements;
				var values = eval('(' + response.responseText + ')');
				for(i = 0; i < k.length; ++i) {
					value = values[k[i].attributes.getNamedItem('ovm:kavelupdaterid').value];
					if (value != undefined) {
						var field = k[i].attributes.getNamedItem('ovm:kavelfield');
						if (field.value == 'highestbid') {
							k[i].innerHTML = value.highestbid;
						}
						if (field.value == 'highest_bid') 
							k[i].innerHTML = value.highestbid;
						if ( field.value == 'minimale_verhoging' )
							k[i].innerHTML = value.minimale_verhoging;
						if (field.value == 'sluitingstijd')
							k[i].innerHTML = value.sluitingstijd;
						if ( field.value == 'resterendetijd')
							k[i].ovm_countdown = value.resterendetijd<1 ? 'CLOSED' : value.resterendetijd;
//							k[i].writeAttribute('ovm:countdown',value.resterendetijd);
						if ( field.value == 'aantalbiedingen' )
							k[i].innerHTML = value.aantalbiedingen;
						//	Status:						
						if ( value.status && ( k[i].tr || k[i].divbieden ) ) {
							
							if ( k[i].tr )
								var tr	= k[i].tr;
							else
								var tr	= k[i].divbieden;
							
							if (!tr.huidigeStatus || tr.huidigeStatus != value.status) {
								
								if ( tr.hasClassName( 'hoogste_bieder' ) && value.status == 'overboden' ) {
									//	Rood laten blinken:
									new Effect.Highlight( tr , { startcolor: '#fff' , endcolor: '#f11f09' } );
								}
								
								tr.removeClassName( 'hoogste_bieder' ); 
								tr.removeClassName( 'overboden' );
								tr.removeClassName( 'default' );
								tr.removeClassName( 'aan_het_sluiten' );
								tr.addClassName( value.status );
								
								tr.huidigeStatus = value.status;
								
							}
							
						}
					}
				}
			}
		});
	}
	, 5
);

*/

