function urlencode (str) {
	// http://kevin.vanzonneveld.net
	// +   original by: Philip Peterson
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +	  input by: AJ
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: Brett Zamir (http://brett-zamir.me)
	// +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +	  input by: travc
	// +	  input by: Brett Zamir (http://brett-zamir.me)
	// +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: Lars Fischer
	// +	  input by: Ratheous
	// +	  reimplemented by: Brett Zamir (http://brett-zamir.me)
	// %		  note 1: This reflects PHP 5.3/6.0+ behavior
	// *	 example 1: urlencode('Kevin van Zonneveld!');
	// *	 returns 1: 'Kevin+van+Zonneveld%21'
	// *	 example 2: urlencode('http://kevin.vanzonneveld.net/');
	// *	 returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
	// *	 example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
	// *	 returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'
 
	var hexStr = function (dec) {
		return '%' + dec.toString(16).toUpperCase();
	};
 
	var ret = '',
			unreserved = /[\w.-]/; // A-Za-z0-9_.- // Tilde is not here for historical reasons; to preserve it, use rawurlencode instead
	str = (str+'').toString();
 
	for (var i = 0, dl = str.length; i < dl; i++) {
		var ch = str.charAt(i);
		if (unreserved.test(ch)) {
			ret += ch;
		}
		else {
			var code = str.charCodeAt(i);
			// Reserved assumed to be in UTF-8, as in PHP
			if (code === 32) {
				ret += '+'; // %20 in rawurlencode
			}
			else if (code < 128) { // 1 byte
				ret += hexStr(code);
			}
			else if (code >= 128 && code < 2048) { // 2 bytes
				ret += hexStr((code >> 6) | 0xC0);
				ret += hexStr((code & 0x3F) | 0x80);
			}
			else if (code >= 2048 && code < 65536) { // 3 bytes
				ret += hexStr((code >> 12) | 0xE0);
				ret += hexStr(((code >> 6) & 0x3F) | 0x80);
				ret += hexStr((code & 0x3F) | 0x80);
			}
			else if (code >= 65536) { // 4 bytes
				ret += hexStr((code >> 18) | 0xF0);
				ret += hexStr(((code >> 12) & 0x3F) | 0x80);
				ret += hexStr(((code >> 6) & 0x3F) | 0x80);
				ret += hexStr((code & 0x3F) | 0x80);
			}
		}
	}
	return ret;
}

function  anwb_search_term(term) {
	var out = '';
	zipregex = /^ *\d{4} *[a-zA-Z]{2} *$/;
	if (term.match(zipregex)) {
		out = '&zip1=' + urlencode(term);
	} else {
		commapos = term.indexOf(',');
		var street = '';
		var city = '';
		if (-1 == commapos) {
			out = '&city1=' + urlencode(term);
		} else {
			out = '&street1='+ urlencode(term.substr(0, commapos)) + '&city1=' + urlencode(term.substr(commapos+1, term.length-commapos));
		}
	}
	return out;
}

function  tomtom_search_term(term) {
	var out = '';
	out = urlencode(term) + '/' + urlencode(parkings.lat + ',' + parkings.lng);
	return out;
}

window.addEvent('domready', function() {

	var typelegend = $('typelegend');
	if (typelegend != null) {
		var legendpop = $('legendpop');
		typelegend.getElements('div.typelegenditem').each(function(item, index){
		
			var aTag = item.getElement('a');
			var imgSrc = aTag.getElement('img').getProperty('src');
			var imgTag = '<img border="0" width="27" height="27" alt="" src="' + imgSrc + '"/>';
			var position = aTag.getPosition(typelegend);
			var rel = aTag.getProperty('rel');
			
			aTag.addEvent('mouseover', function(evt){
				evt.stop();
				legendpop.set({
					'html': imgTag + '<p>' + rel + '</p>',
					'styles': {
						'display': 'block',
						'left':position['x']-118
					}
				});
			});
			
			aTag.addEvent('mouseout', function(evt){
				legendpop.setStyle('display', 'none');
			});
			
		});
	}

	var parkingList = $('parking-list');
	if (parkingList != null) {
		parkingList.getElements('div.list-item-content').each(function(item, index){
			var a = item.getElement('a.list-item-link');
			if (a) {
				a.addEvents({
					'mouseover': function(evt){
						item.addClass('act');
					},
					'mouseout': function(evt){
						item.removeClass('act');
					}
				});
			}	
		});
	}
	
	var tabscontainer  = $('tabscontainer');
	var panelcontainer = $('panelcontainer');
	if (tabscontainer != null) {
		tabscontainer.getElements('a.tablink').each(function(aTag, index){
			
			aTag.addEvent('click', function(evt){
				evt.stop();		//Prevents the browser from following the link.
				panelcontainer.getElements('div.tabpanel').each(function(item, index){
					item.setStyle('display','none');
				});
				panelcontainer.getElement('div.' + this.getProperty('rel')).setStyles({
					'display':'block',
					'position':'relative',
					'left':'0px',
					'top':'0px'
				});
				if (this.getProperty('rel') == 'tab_e') {
					load('detailcanvas');
				}
				
				tabscontainer.getElements('div.tab').each(function(item, index){
					item.removeClass('selectedtab');
				});
				this.getParent('div.tab').addClass('selectedtab');
			});
		});
	}
	
	var routeformcontainer = $('routeformcontainer');
	if (routeformcontainer != null) {
		
		var routeformcontaineropen = false;
		
//		routeformcontainer.getElement('a').addEvent('click', function (evt){
//			evt.stop();
//			$('routeform').setStyle('display', routeformcontaineropen ? 'none' : 'block');
//			//$('saddr').selectRange(2, 4);
//			routeformcontaineropen = ! routeformcontaineropen;
//		});
		
		var google_route_url = 'http://maps.google.nl/maps?f=d&source=s_d&hl=nl&mra=ls&daddr=';
		google_route_url += parkings.address.replace('/', ', ') + ', ' + parkings.zip + ' ' + urlencode(parkings.city)/* + ' (' + parkings.name + ')'*/;
		google_route_url += '&saddr=';

		var anwb_route_url = 'http://route.anwb.nl/routeplanner/servlet/rp?action=0';
		anwb_route_url += '&name2=' + urlencode(parkings.name + ', ' + parkings.city) + '&lat2=' + parkings.lat + '&lon2=' + parkings.lng;

		var tomtom_route_url = 'http://route.tomtom.com/route/';

		var route_url = anwb_route_url;

		$('saddr').addEvent('focus', function(evt){
			if ('value', 'vertrek postcode of adres...' == this.value ||'value', 'vertrek postcode of straat, stad...' == this.value) {
				this.value = '';
			}
		});
		
		$('routeformlink').addEvent('click', function (evt){
			var service = $('sservice').getSelected().getProperty('value');
			if ('google' == service) {
				route_url = google_route_url  + urlencode($('saddr').getProperty('value'));
			} else if ('anwb' == service) {
				route_url = anwb_route_url + anwb_search_term($('saddr').getProperty('value'));
			} else if ('tomtom' == service) {
				route_url = tomtom_route_url + tomtom_search_term($('saddr').getProperty('value'));
			}
			$('routeformlink').setProperty('href', route_url);
		});
		$('routeform').addEvent('submit', function(evt) {
			evt.stop();
		});
		
	}
});