var reasons=[];
reasons[G_GEO_SUCCESS]="Success";
reasons[G_GEO_MISSING_ADDRESS]="fehlende Adresse";
reasons[G_GEO_UNKNOWN_ADDRESS]="unbekannte Adresse";
reasons[G_GEO_UNAVAILABLE_ADDRESS]="Unavailable Address:  The geocode for the given address cannot be returned due to legal or contractual reasons.";
reasons[G_GEO_BAD_KEY]="Bad Key: The API key is either invalid or does not match the domain for which it was given";
reasons[G_GEO_TOO_MANY_QUERIES]="Too Many Queries: The daily geocoding quota for this site has been exceeded.";
reasons[G_GEO_SERVER_ERROR]="Server error: The geocoding request could not be successfully processed.";
var ballontexte = {};
    
var map;
var geo;

var calrules = {
	'.clink' : function(e) {
		e.style.cursor= 'pointer';
		e.onclick = function() {
			Element.hide($('termineedit'));
			var paras = e.getAttribute('rel').split('_');
			getCalendar(paras[2], paras[0] + '_' + paras[1]);	
		}
	},
	'.moretime' : function(e) {
		e.onclick = function() {
			var event = e.getAttribute('rel');
			var strip = '<div><input id="z_'+event+'" class="termininp" /> Uhr</div>'
				+ '<div><input class="moretime" rel="' + event +'" type="button" disabled="disabled" style="width:90px" value="neuer Termin"/></div>';
			e.parentNode.replace(strip);	
			Behaviour.apply(calrules);
		}
	},
	'.calclick' : function(e) {
		e.style.cursor='pointer';
		e.onclick = function() {
			$$('.calclick').each(function(c) {Element.removeClassName(c,'active');});
			Element.addClassName(e,'active');
			var te = $('termineedit');
			var posi = Position.cumulativeOffset(e)[0] 
				+ Element.getDimensions(e).width 
				- Position.cumulativeOffset($('termine'))[0]
				- Element.getDimensions(te).width; 
			te.style.left = posi + 'px';
			var datum = e.id.split('_')[1].split('-');
			var event = e.id.split('_')[2];
			new Ajax.Request('./lib/seminare.class.php?getzeitbydate', { 
				parameters:'getzeitbydate='+ e.id.split('_')[1] + '&event=' + event,
				onLoading: function() {te.innerHTML='<img src="sp.gif" />'},
				onSuccess:function(res) { 
					te.innerHTML='';
					var termine = eval("(" + res.responseText + ")");
					for (var i in termine) {
							if (termine[i].beginn) {
								var strip = '<div><input rel="z_'+ event + '_' + i +'" class="termininp" value="'+termine[i].beginn+'"/> Uhr</div>';
								te.innerHTML += strip;
						}
					}
					
					te.innerHTML += '<div><input class="moretime" rel="' + event +'_'+ datum+'"  type="button" style="width:90px" value="neuer Termin"/></div>';
					Element.show(te);
					Behaviour.apply(calrules);
				}
			});
		
		}
	}
};	


getCalendar = function(event,monat) {
	e = $('termine');
	new Ajax.Updater(e,'./lib/seminare.class.php?getcal', { 
		parameters:'calendar='+ monat + '&event=' + event,
		evalScripts:true,
		onComplete:function() { 
			Behaviour.apply(calrules);
			}});
}

setMap = function(lat,lng,title) {
	if (!map) {
		map=new GMap($('map'));
		map.addControl(new GSmallZoomControl());
	}
	//	map.setMapType(G_HYBRID_MAP);
	$('verschiebertext').innerHTML= 'Der rote Markierer kann verschoben werden &hellip;';
	map.setCenter(new GLatLng(lat,lng),15);
	map.clearOverlays();
	var b = new GMarker(new GLatLng(lat,lng), {draggable:true});
	map.addOverlay(b);
	GEvent.addListener(b,"dragend",function() {
		$('gps').innerHTML = b.getPoint().lat()+', '+b.getPoint().lng()
		$('lat').value = b.getPoint().lat();
		$('lng').value = b.getPoint().lng();
		$('saveloc').disabled=null;
		$('geocode').disabled='disabled';
	
	});

}


fillEventSelect = function(e,id,widthnew) {
	new Ajax.Request('./lib/seminare.class.php?listevents',{parameters:'list=events',onSuccess:function(res) {
		var options = eval("(" + res.responseText + ")"); 
		while (e.length) e.options[0] = null;
		if (widthnew) e.options[0] = new Option('neue Veranstaltung','',true);
		for (var i in options) {
			var selected = (i==id) ? true : false;
			e.options[e.length] = new Option(options[i].title,i,selected);
		}
	}});
}
fillLocSelect = function(e,id,widthnew) {
	$$('.min5').each(function(el){Element.addClassName(el,'sp');});
	new Ajax.Request('./lib/seminare.class.php?listlocs',{parameters:'list=locs',onSuccess:function(res) {
		var options = eval("(" + res.responseText + ")"); 
		while (e.length) e.options[0] = null;
		if (widthnew) e.options[0] = new Option('neue Lokalität','',true);
		for (var i in options) {
			var selected = (i==id) ? true : false;
			e.options[e.length] = new Option(options[i].title,i,selected);
		}
		$$('.min5').each(function(el){Element.removeClassName(el,'sp');});
	
	}});
}

var rules = {
	'.panel' : function(e) {
		e.style.zIndex='999';	
	},
	'#map' : function(el) {
			geo=new GClientGeocoder();
	},
	
	'#eventliste' : function(e) {
		e.onchange = function() {
			Element.hide($('termineedit'));
		    if ($F(e.id) != '')  {
		   		 //	fillLocSelect($('eventlocliste'),$F(e.id),false);
				getCalendar($F(e.id));
		        // bei Aenderung Restform ausfuellen:
				new Ajax.Request( './lib/seminare.class.php?getevent',{parameters:'getevent='+e.value,onSuccess:function(res) {
					var datas = eval("(" + res.responseText + ")"); 
					$('eventtitle').value= datas.title;
					$('eventtxt').value= datas.txt;
				
				}});
		   } else { // neuer Eintrag:
				$('eventtitle').value= '';
				$('eventtxt').value= '';
				getCalendar(null);
		   }
		}  // of onchange
	},
	'.evented' : function(e) {
		e.onchange,e.onblur = function() {
			if ($F('eventtitle').length <3) {
			 Element.addClassName($('eventtitle'),'error');
			} else {
			 	Element.removeClassName($('eventtitle'),'error');
				$('saveevent').disabled = null;
			}
		}
	},
	'#locliste' : function(e) {
		e.onchange = function() {
		    if ($F(e.id) != '')  {
		    	fillLocSelect($('eventlocliste'),$F(e.id),false);
	
		        // bei Aenderung Restform ausfuellen:
				new Ajax.Request('./lib/seminare.class.php',{ parameters:'getloc='+e.value,onSuccess:function(res) {
					var datas = eval("(" + res.responseText + ")"); 
					$('street').value= datas.street;
					$('city').value= datas.city;
					$('title').value= datas.title;
					$('txt').value= datas.txt;
					$('lng').value= datas.lng;
					$('lat').value= datas.lat;
					setMap(datas.lat,datas.lng); }});
				
				}  else { // neuer Eintrag:
				  $('street').value= '';
					$('city').value= '';
					$('title').value= '';
					$('txt').value= '';
					$('gps').innerHTML = '?';
			}
		}  // of onchange
	},
	'#saveloc' : function(e) {
		e.disabled= 'disabled';
		e.autocomplete= 'off';
		e.onclick = function() {
			if ($F('title').length<5) {
				Element.addClassName($('title'),'error');
				Effect.Pulsate($('title'),{pulses:2,duration:1});
				return;
			}
			$('saveloc').disabled='disabled';
			new Ajax.Request('./lib/seminare.class.php',{ 
				parameters: $('locform').serialize(true), 
				onSuccess:function(res) {
					var id = res.responseText;
					fillLocSelect($('locliste'),id,true);
				}});
		}
	},
	'.min5' : function(e) {
		e.onkeyup = function() {
			if (e.value.length > 5) Element.removeClassName(e,'error');
			else Element.addClassName(e,'error');
		
		},
		e.onchange = function() {$('saveloc').disabled=null;					$('geocode').disabled=null;
	}


	},
	'.nac' : function(e) {
		e.setAttribute('autocomplete','off');
		e.setAttribute('name',e.id);
//		
	},

	'#geocode':function(f) {
		f.onclick=function() {
			var d=true;
			if($F('street').length<3) {
				Element.addClassName($('street'),'error');
				d=false
			}
			else Element.removeClassName($('street'),'error');
			if($F('city').length<6) {
				Element.addClassName($('city'),'error');
				d=false
			}
			else Element.removeClassName($('city'),'error');
			if(d)
				{
				var e = $F('street')+' ' +$F('city')+', Germany';
				geo.getLocations(e,function(a) {
					if(a.Status.code==G_GEO_SUCCESS) {
						$('saveloc').disabled=null;
						var items = a.Placemark[0].address.split(', ');
						var p=a.Placemark[0].Point.coordinates;
						setMap(p[1],p[0]);
						$('lat').value = p[1];
						$('lng').value = p[0];
						$('street').value = items[0];
						$('city').value   = items[1];
						$('gps').innerHTML = p[1]+', '+p[0];
						
					}
					else
						{
						var c="Code "+a.Status.code;
						if(reasons[a.Status.code])
							{
							c=reasons[a.Status.code]
						}
						alert('Kann "'+e+'" nicht auflösen.')
					}
				}
				)
			}
		}
	}
	

};
Event.observe(window, 'load', function () {
	getCalendar(null);
	fillLocSelect($('eventlocliste'),'',false);
	fillEventSelect($('eventliste'),'',true);
	fillLocSelect($('locliste' ),'',true);
		
	Behaviour.register(rules);
	Behaviour.register(calrules);
	new Fabtabs('tabs'); },false);
	
	 
///////////////////////////////////////////////////////	 



