(function(){
	
window.wdws = {
	settings: {
		DEFAULT_MAP_ZOOM: 11,
		MONTH_NAMES: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
		DAY_NAMES: ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So']
	},
	init: function(){
		if(Prototype.Browser.IE){
			if(navigator.appVersion.substring(0, 1) == "6"){
				alert('Sie verwenden einen veralteten Browser.');
			}
		}
		var links = $A(document.getElementsByTagName('a'))
		for(var i=0;i<links.length;i++){
			var a = links[i];
			if( a.href.startsWith('http') 
			&& !a.href.startsWith('http://wedowebsphere.') 
			&& !a.href.startsWith('http://www.wedowebsphere.')
			&& !a.href.startsWith('http://localhost')
			&& !a.href.startsWith('http://127.')){
				a.target = '_blank';
				Element.addClassName(a, 'external');
			}
		}
		var icon = new GIcon();
		icon.image = '/static/chrome/wedowebsphere-blob.png';
		icon.iconSize = new GSize(16, 15);
		icon.iconAnchor = new GPoint(8, 8);
		this.mapIcon = icon;
		
		var taxonomyTagInputs = $$('.field > .taxonomy_group > .tag > input');
		taxonomyTagInputs.each(function(tagInput){
			var childList = $(tagInput.parentNode).select('.children')[0] || null;			
			if(childList){
				var childInputs = childList.select('.tag > input');
				tagInput.observe('click', function(){
					if(!tagInput.checked){
						childInputs.each(function(child){
							child.checked = false;
						});
						//childList.hide();
					}
					else{
						//childList.show();
					}
				});
				childInputs.each(function(child){
					child.observe('click', function(){
						if(child.checked){
							tagInput.checked = true;
						}
					})
				});
			}
		});				
		
		var giftTokenDisplays = $$('.gift_token_display');
		giftTokenDisplays.each(function(tokenDisplay){
			var a = tokenDisplay.select('a')[0];
			a.observe('click', function(e){
				new Ajax.Request(a.href, {
					onSuccess: function(response){
						tokenDisplay.innerHTML = 'Gutscheincode: ' + response.responseText;
					}
				});
				e.stop();
			});
		});
		
		var premiumFields = $$('form .premium-fields .field');
		premiumFields.each(function(field){
			field.addClassName('disabled');
			field.select('input, select, textarea').each(function(input){
				input.disabled = "disabled";
			});
		});
	},
	
	initGoogleMap: function(element, lat, lng, descr){
		if(GBrowserIsCompatible()){
			var map = new GMap2($(element));
			map.addControl(new GSmallMapControl());
			/*map.disableDragging();*/
			if(lat && lng){
				var point = new GLatLng(lat, lng);
				map.setCenter(point, wdws.settings.DEFAULT_MAP_ZOOM);
				var marker = new GMarker(point, {icon: wdws.mapIcon});
				map.addOverlay(marker);
				GEvent.addListener(marker, "click", function() {
					var el = document.createElement('div');
					el.innerHTML = descr || "unbekannt";
					map.openInfoWindow(map.getCenter(), el);
				});
			}
			return map;
		}
		return null;
	},
	
	preview: function(formId){
		var f = $(formId);
		var previewWindow = $('previewWindow');
		var descr = f.description ? f.description.value : f.text.value;
		$('previewDescription').innerHTML = descr;
		$('previewTitle').innerHTML = f.title.value;
		$('previewSubtitle').innerHTML = f.subtitle ? f.subtitle.value : '';
		previewWindow.show();
	},
	
	confirmDeleteEntry: function(id){
		if(confirm('Wollen Sie den Eintrag wirklich Löschen?')){
			window.location = '/news/'+id+'/delete/';
		}
	},
	
	recommend: function(a, via){
		var url = window.location.href;
		var title = document.title;
		if(via == 'delicious'){
			a.target = '_blank';
			a.href = 'http://del.icio.us/post?url=' + url + '&title=' + title;
		}
		else if(via == 'wong'){
			a.target = '_blank';
			a.href = 'http://www.mister-wong.de/index.php?action=addurl&bm_url=' + url + '&title=' + title;
		}
		else if(via == 'twitter'){
			a.target = '_blank';
			a.href = 'http://twitter.com/home/?status=' + url;
		}
		else if(via == 'email'){
			a.href = 'recommend-via-email/';
		}
	},
	
	createCalendarPicker: function(element, year, month, startDate, endDate){
		element = $(element);		
		element.innerHTML = '';		
		var h = document.createElement('h3');				
		element.appendChild(h);

		var prevLink = $(document.createElement('a'));
		prevLink.innerHTML = '&lt;';
		prevLink.addClassName('prev');
		prevLink.observe('click', function(){
			wdws.createCalendarPicker(element, year, month - 1, startDate, endDate);
		});		
		h.appendChild(prevLink);
		
		var label = document.createElement('span');
		label.innerHTML = wdws.settings.MONTH_NAMES[month] + ' ' + year;
		h.appendChild(label);
		
		var nextLink = $(document.createElement('a'));
		nextLink.innerHTML = '&gt;';
		nextLink.addClassName('next');
		nextLink.observe('click', function(){
			wdws.createCalendarPicker(element, year, month + 1, startDate, endDate);
		});		
		h.appendChild(nextLink);
		
		var dayDate = new Date(year, month, 1);
		var offset = (dayDate.getDay() + 6) % 7;		
		var first = true;

		for(var i=0;i<wdws.settings.DAY_NAMES.length;i++){
			var span = $(document.createElement('span'));
			span.innerHTML = wdws.settings.DAY_NAMES[i];
			var el = document.createElement('div');
			el.appendChild(span);
			element.appendChild(el);
		}
		while(dayDate.getMonth() == month){
			var el = $(document.createElement('div'));
			if(first){
				el.setStyle({'marginLeft': 3*offset + 'em'});
				first = false;
			}
			if(startDate && (dayDate >= startDate) && (!endDate || dayDate<endDate)){
				el.addClassName('range');
			}
			var a = $(document.createElement('a'));
			a.innerHTML = dayDate.getDate() + '.';
			var makeClickListener = function(t){
				var end = new Date(t.getTime()+7*24*60*60*1000);
				return function(){
					document.location = '?startdate=' + t.getDate() + '.' + (t.getMonth()+1) + '.' + t.getFullYear()
						+ '&enddate=' + end.getDate() + '.' + (end.getMonth()+1) + '.' + end.getFullYear();
				};
			};
			var delta = (dayDate.getDay() + 6) % 7;
			var t = new Date(dayDate.getTime() - 1000*60*60*24*delta)
			a.observe('click', makeClickListener(t));
			//a.href = 'javascript:void(alert('+(dayDate.getDate()-d)+'+\' - \'+'+(dayDate.getDate()-d+7)+'))';
			el.appendChild(a);
			element.appendChild(el);
			dayDate.setTime(dayDate.getTime() + 1000*60*60*24);
		}
		var clearing = $(document.createElement('div'));
		clearing.addClassName('clear');
		element.appendChild(clearing);
	}
};

Event.observe(window, 'load', function(){
	wdws.init();
});

})();