var map;
var polys = [];
var labels = [];
var player = []
var rules= {
	
	'#map' : function(el) {
		map = new GMap2($("map"));
  		map.setMapType(G_HYBRID_MAP);
  		map.disableDragging();
  		map.disableDoubleClickZoom();
  		map.disableContinuousZoom();
    	map.setCenter(new GLatLng( 53.585493, 10.012560), 18);
 		window.setTimeout(function(){GDownloadUrl("getap.js", parseJSON);},1);
		GEvent.addListener(map, "click", function(overlay,point) {
        if (!overlay) {
          for (var i=0; i<polys.length; i++) {
            if (polys[i].Contains(point)) {
         			var mp3 = '/mm/wlanmusik/' + labels[i] + '.mp3';
         			if (player[i] == true)  {
         				$('player_' +i).innerHTML = '';
         				player[i] = false;
         				Element.hide('plwrap_'+i);
						polys[i].opacity=0.6;
         				polys[i].redraw(true); 
         				
         			} else {
         				polys[i].opacity=.3;
         				polys[i].redraw(true); 
         				Effect.Appear('plwrap_'+i);
						var so = new SWFObject('lib/player.swf','player_'+i,'190','18','8'); 
						so.addVariable('file',mp3);
						so.addVariable('width','190');
						so.addVariable('height','18');
						so.addVariable('autostart','true');
						so.addVariable('backcolor','FF7700');
		 				so.addVariable('frontcolor','000066');
		  				so.addVariable('lightcolor','009900');
		  				so.addVariable('icons','false');
		  				so.addVariable('stretching','exactfit');
						so.write('player_' + i);         
						player[i] = true;
					}
             }
          }
        }
      });
	
	
	
	}
};


Event.observe(window, 'load', init_app);
Event.observe(window, 'unload', GUnload);

function init_app(event) {
 	Behaviour.register(rules);
 	Behaviour.apply(rules);
}


parseJSON = function(doc,code) {
	var data = eval("(" + doc + ")");
	for (var i=0; i<data.length; i++) {
    	var item = data[i];
    	var mp3 = 'http://mm.webmasterei.com/wlanmusik/' + item.name + '.mp3';
    	var latlng = item.latlng.split(',');
    	var point = new GLatLng(latlng[0],latlng[1]);
  	 	polys[i] = point.drawKmCircle({radius:item.rad/1000,polygon:true,fillColor:item.color});
      	labels[i] = item.name;
      	var div = document.createElement('div');
		div.setAttribute('id', 'plwrap_' +i);

		div.setAttribute('style', 'display:none;');
		
		var pl = document.createElement('div');
		pl.setAttribute('id', 'player_' +i);
		var txt = document.createTextNode(item.title);
		div.setAttribute('class', 'playertitle');
		$('playerwrap').appendChild(div);
		$('playerwrap').appendChild(pl);
    	div.appendChild(txt); 
	
    	map.addOverlay(polys[i]); 
    }
    $$('.playertitle').each(function(el) {
		el.onclick = function() {
		var i = el.id.split('_')[1];
		$('player_' +i).innerHTML = '';
		player[i] = false;
        Element.hide('plwrap_'+i);
        	polys[i].opacity=0.6;
         polys[i].redraw(true); 
         			
		}
	});    
}          

/**
* GLatLng.drawKmCircle() method
* Returns a GPolyline or GPolygon rectangle representing 
* optional parameter is an object with radius, quality and style properties {radius, nodes, liColor, liWidth, liOpa, fillColor, fillOpa, polygon}
* {polygon:true} switches the return object from GPolyline to GPolygon
* @author Esa 2006, 2008
 */
GLatLng.prototype.drawKmCircle =function (opt_options){
  var pnts = [];
  var opts = opt_options||{};
  var radius = 1*opts.radius||1;
  var step = parseInt(360/opts.nodes)||1;
  var latConv = this.distanceFrom(new GLatLng(this.lat()+0.1, this.lng()))/100;
  var lngConv = this.distanceFrom(new GLatLng(this.lat(), this.lng()+0.1))/100;
  for(var i=0; i<=360; i+=step)
    { // @author Esa 2006, 2008
    var pint = new GLatLng(this.lat() + (radius/latConv * Math.cos(i * Math.PI/180)), 
      this.lng() + (radius/lngConv * Math.sin(i * Math.PI/180)));
    pnts.push(pint);
  }
  var fillColor = opts.fillColor||opts.liColor||"#0055ff";
  var liWidth = opts.liWidth||1;
  if(opts.polygon){
    var poly = new GPolygon(pnts,'#dddddd',0,opts.liOpa,fillColor,'.6',{clickable:false});
  }else{
    var poly = new GPolyline(pnts,opts.liColor,liWidth,opts.liOpa);
  }
  return poly;
}
  


