Event.observe(window, 'load', function()
{
	var nederland = new country(53,267,496,597);  // PIXELS AANPASSEN AAN PLAATSEN (x middelburg, y middelburg, x winschoten, y winschoten) vanaf linksonder
	nederland.retrieveCities();
	nederland.MaakCodePlaatsen();
});

/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////

var city = Class.create(
{
	initialize: function(id, x, y, city, name, link, imagethumb, image, description, usefunction, thumb_width, thumb_height) 
	{
		this.id 			= id;
		this.x 				= x;
		this.y 				= y;
		this.name 			= name;				
		this.link 			= link;
		this.city 			= city;
		
		this.imagethumb 	= (imagethumb == null) ? './images/point.png' : imagethumb;
		this.image 			= (image == null) ? null : image;
		this.description 	= description;
		this.usefunction 	= usefunction;
		
		this.thumb_width	= (parseInt(thumb_width) > 0) ? parseInt(thumb_width) : 0;
		this.thumb_height	= (parseInt(thumb_height) > 0) ? parseInt(thumb_height) : 0;
	}
});


var country = Class.create(
{
	initialize: function(xpixmiddelburg, ypixmiddelburg, xpixwinschoten, ypixwinschoten)
	{
		this.xpixmiddelburg = xpixmiddelburg;
		this.ypixmiddelburg = ypixmiddelburg;
		this.xpixwinschoten = xpixwinschoten;
		this.ypixwinschoten = ypixwinschoten;
		
		this.jsontempcities = new Array;
		
		this.xabsmiddelburg = 31865;		// OFFICIELE COORDINATEN
		this.yabsmiddelburg = 391583;		// OFFICIELE COORDINATEN
		
		this.xabswinschoten = 265189;		// OFFICIELE COORDINATEN
		this.yabswinschoten = 574213;		// OFFICIELE COORDINATEN
	},
	
	retrieveCities: function()
	{
		// hier komt mijn ajax request en ik return een variabele array die ik gebruik in mijn initialize
		var url = '/ajax/landmap?kind=company&type=action';
        var self = this;
        
	    var AllOptions = 
	    {
	        method: 'get',
	        asynchronous: false,
	        parameters: { }, 
	        onSuccess: function(oXHR, oJson)
	        {	         
	            var jsobj     		= oXHR.responseText.evalJSON();
	            self.jsontempcities = jsobj;
	        },
	        onFailure: function(oXHR, oJson)
	        {
	            alert('error helaas geen succes');
	        }
	    }
	    
        var myAjax = new Ajax.Request(url, AllOptions);
	    
	    this.makeReadyCities();
		
	},
	
	makeReadyCities: function()
	{
		var tempcities = new Array();
		
		this.jsontempcities.each(function(cityeach)
		{
			var dottedcity = new city(cityeach.id,cityeach.x,cityeach.y,cityeach.city,cityeach.name,cityeach.link,cityeach.imagethumb,cityeach.image,cityeach.description,cityeach.usefunction,cityeach.thumb_width,cityeach.thumb_height);
			tempcities.push(dottedcity);
		}.bind(this));
		
		this.cities = tempcities;
	},
	
	coorperpixel: function(pixwin,pixmid,abswin,absmid)
	{
		diffrel = pixwin - pixmid;
		diffabs = abswin - absmid;
		return pixel = diffrel/diffabs;
	},
				
	xpositiebepalen: function(x) //returned de x pixelwaarde van het punt t o v middelburg
	{
		xdiffrel = x - this.xabsmiddelburg;
		xcpp = this.coorperpixel(this.xpixwinschoten, this.xpixmiddelburg, this.xabswinschoten, this.xabsmiddelburg);
		xrel = xdiffrel*xcpp;
		return (this.xpixmiddelburg + xrel);
	},

	ypositiebepalen: function(y) //returned de y pixelwaarde van het punt t o v middelburg
	{
		ydiffrel = y - this.yabsmiddelburg;
		ycpp = this.coorperpixel(this.ypixwinschoten, this.ypixmiddelburg, this.yabswinschoten, this.yabsmiddelburg);
		yrel = ydiffrel*ycpp;
		return (this.ypixmiddelburg + yrel);
	},
	
	ArrayMetPixels: function()	
	{	
		var citiespixel = new Array();
		for (var i = 0; i < this.cities.length; ++i) 
		{
			  var q = new city(this.cities[i].id,this.xpositiebepalen(this.cities[i].x),this.ypositiebepalen(this.cities[i].y),this.cities[i].city,this.cities[i].name,this.cities[i].link,this.cities[i].imagethumb,this.cities[i].image,this.cities[i].description,this.cities[i].usefunction,this.cities[i].thumb_width,this.cities[i].thumb_height);
			  citiespixel[i] = q;
		}
		return citiespixel;
	},
	
	MaakCodePlaatsen: function()
	{
		var citiespixel = this.ArrayMetPixels();
		var image		= new Array();

		
		for(var i = 0; i < citiespixel.length; i++)
		{
			
			x = citiespixel[i].x;
			y = citiespixel[i].y;  
			image[i] = Builder.node('img', {
				src: citiespixel[i].imagethumb,
				id: citiespixel[i].id,
				style: 'display:none;',
				className: (citiespixel[i].imagethumb == './images/point.png' ? 'point': ''),
				alt: citiespixel[i].city + ' - ' + citiespixel[i].name,
				title: citiespixel[i].city + ' - ' + citiespixel[i].name
			});
			
			if(citiespixel[i].link != null)
			{
			
				var rlink = Builder.node('a', { 
					//href: citiespixel[i].link,
					title: citiespixel[i].city + ' - ' + citiespixel[i].name
					}, image[i]);

				
				$('points').appendChild(rlink);	
			}
								
			else
			{
				$('points').appendChild(image[i]);
			}	
			
			// als we niets hebben meegegeven in de initialisatie proberen we het op deze manier
			if (citiespixel[i].thumb_height == 0 && citiespixel[i].thumb_width == 0)
			{
				var dimensions = $(citiespixel[i].id).getDimensions();
				
				citiespixel[i].thumb_height	= parseInt(dimensions.height);
				citiespixel[i].thumb_width	= parseInt(dimensions.width);
			}
			
			// setten van de image dimensions and positioning
			
			$(citiespixel[i].id).setStyle({
				'bottom'	: Math.round((y - citiespixel[i].thumb_height / 2)) + 'px',
				'left'		: Math.round((x - citiespixel[i].thumb_width / 2)) + 'px',
				'height'	: citiespixel[i].thumb_height + 'px',
				'width'		: citiespixel[i].thumb_width + 'px',
				'display'	: 'inline'
			});
			
			if(citiespixel[i].usefunction)
			{
				Event.observe(citiespixel[i].id, 'click', this.PointClicked.bindAsEventListener(this,citiespixel[i]));
			}
			
			Event.observe(citiespixel[i].id, 'mouseover', this.MoveToFront.bindAsEventListener(this,citiespixel[i].id));
			Event.observe(citiespixel[i].id, 'mouseout', this.MoveToBack.bindAsEventListener(this,citiespixel[i].id));
			
		}
	},
	
	PointClicked: function()
	{
		var data = $A(arguments);
		data.shift();
		$('landkaartsubmit').addClassName('dontdisplay');
		$('landkaartdetail').removeClassName('dontdisplay');
		$('landkaartdetail').addClassName('display');
		$('ld_title').update(data[0].name);
		$('ld_city').update(data[0].city);
//		alert(data[0].description);
		$('ld_description').update(data[0].description);
//		alert(data[0].image);
		$('ld_detailimg').src = data[0].image;
	},
	
	MoveToFront: function()
	{
		var data = $A(arguments);
		data.shift();
		$(data[0]).setStyle({
			zIndex: 2
		});	
	},
	
	MoveToBack: function()
	{
		var data = $A(arguments);
		data.shift();
		$(data[0]).setStyle({
			zIndex: 1
		});	
	}
});
