window.addEvent('domready', function(){
	$$('.opacity').each(function(el, i) {
		el.addEvent('mouseenter', function() {
			el.set('opacity','.6');
		});
		el.addEvent('mouseleave', function() {
			el.set('opacity','1');
		});
	});

	var naabsterImgId = $('naabsterImg');
	if (naabsterImgId) {
		var addNaabsterImg = function(jsonObj) {
			naabsterImgId.removeClass('loadingbig');
			//var name = new Element('h3', {'html': jsonObj.title}).inject(naabsterImgId);
			jsonObj.items.each(function(image) {
				var el = new Element('a', {'href': image.link});
				var img = new Element('img', {'src': image.thumbnail, 'alt': image.title, 'title': image.title}).inject(el);
				el.inject(naabsterImgId);
				img.addEvent('mouseenter', function() {
					img.set('opacity','.6');
				});
				img.addEvent('mouseleave', function() {
					img.set('opacity','1');
				});
			});
		};
		
		var naabsterImg = new Request.JSON({
			url: '/ajax.php?do=1&number=1',
			onComplete: function(jsonObj) {
				addNaabsterImg(jsonObj);
			}
		}).send();
	}
	
});

var Asset = {

	javascript: function(source, properties){
		properties = $extend({
			onload: $empty,
			document: document,
			check: $lambda(true)
		}, properties);

		var script = new Element('script', {src: source, type: 'text/javascript'});

		var load = properties.onload.bind(script), check = properties.check, doc = properties.document;
		delete properties.onload; delete properties.check; delete properties.document;

		script.addEvents({
			load: load,
			readystatechange: function(){
				if (['loaded', 'complete'].contains(this.readyState)) load();
			}
		}).set(properties);

		if (Browser.Engine.webkit419) var checker = (function(){
			if (!$try(check)) return;
			$clear(checker);
			load();
		}).periodical(50);

		return script.inject(doc.head);
	},

	css: function(source, properties){
		return new Element('link', $merge({
			rel: 'stylesheet', media: 'screen', type: 'text/css', href: source
		}, properties)).inject(document.head);
	},

	image: function(source, properties){
		properties = $merge({
			onload: $empty,
			onabort: $empty,
			onerror: $empty
		}, properties);
		var image = new Image();
		var element = document.id(image) || new Element('img');
		['load', 'abort', 'error'].each(function(name){
			var type = 'on' + name;
			var event = properties[type];
			delete properties[type];
			image[type] = function(){
				if (!image) return;
				if (!element.parentNode){
					element.width = image.width;
					element.height = image.height;
				}
				image = image.onload = image.onabort = image.onerror = null;
				event.delay(1, element, element);
				element.fireEvent(name, element, 1);
			};
		});
		image.src = element.src = source;
		if (image && image.complete) image.onload.delay(1);
		return element.set(properties);
	},

	images: function(sources, options){
		options = $merge({
			onComplete: $empty,
			onProgress: $empty,
			onError: $empty,
			properties: {}
		}, options);
		sources = $splat(sources);
		var images = [];
		var counter = 0;
		return new Elements(sources.map(function(source){
			return Asset.image(source, $extend(options.properties, {
				onload: function(){
					options.onProgress.call(this, counter, sources.indexOf(source));
					counter++;
					if (counter == sources.length) options.onComplete();
				},
				onerror: function(){
					options.onError.call(this, counter, sources.indexOf(source));
					counter++;
					if (counter == sources.length) options.onComplete();
				}
			}));
		}));
	}

};