var addthis_config = {
	'services_compact': 'blogger, facebook, gmail, myspace, wordpress, delicious, email, favorites, hyves, twitter, print'
};

var SabrinaStarke = SabrinaStarke || {};

SabrinaStarke.initializeBehaviors = function () {
	var lightboxLinks, ajaxLinks, links = $$('a'), testElm,
		 blogFilter, blogFilterSubmit, blogFilterSelect,
		 formData, field, help, fieldMissing;
	
	//Initialize the addthis buttons
	addthis.button($$('.social .addthis'));

	// Initialize the track stuff
	if (SabrinaStarke.tracks) {
		for (var i=0; i<SabrinaStarke.tracks.length; i++) {
			if ($(SabrinaStarke.tracks[i].id))
				AudioPlayer.embed(SabrinaStarke.tracks[i].id, {'soundFile': SabrinaStarke.tracks[i].file, 'titles': SabrinaStarke.tracks[i].name});
		}
		SabrinaStarke.tracks = null;
	}

	// make external links open in a new window
	$$('a[rel=external]').addEvent('click', function (e) {
		window.open(this.href);
		e.stop();
	});

	// Initialize the lightbox functionality for links with rel=lightbox
	if (!/android|iphone|ipod|series60|symbian|windows ce|blackberry/i.test(navigator.userAgent)) {
		lightboxLinks = links.filter(function (el) {
			return el.rel && el.rel.test(/^lightbox/i);
		});

		lightboxLinks.slimbox({}, null, function (el) {
			return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
		});
	}

	//determine which links should be rewritten
	ajaxLinks = links.filter(function (el) {
		var returnValue = true,
			 domainName = 'http://' + document.location.hostname;
			 rel = el.get('rel') || '', href = el.get('href') || '';

		if (rel.test(/lightbox/) || rel == 'external') {
			returnValue = false;
		} else if (href.test(/\.[a-z]{3}$/) && !href.test(/^http\:\/\//)) {
			returnValue = false;
		} else if (el.hasClass('addthis')) {
			returnValue = false;
		} else if (href.substr(0, domainName.length) != domainName && href.test(/^http\:\/\//)) {
			returnValue = false;
		}

		return returnValue;
	});

	// rewrite each link
	ajaxLinks.each(function (el) {
		var href = el.get('href') || '',
			 domainName = 'http://' + document.location.hostname;;

		if (href.substr(0, domainName.length) == domainName) {
			href = href.substring(domainName.length);
		}

		if (href.substring(0,3) == '/nl' || href.substring(0,3) == '/en') {
			el.set('href', href.substring(0,3) + '#' + href.substring(3));
		}
	});

	// enrich the inputs with placeholder attributes
	testElm = new Element('input', {'type': 'text'});
	if (!('placeholder' in testElm)) {
		$$('input[placeholder]', 'textarea[placeholder]').each(function (el) {
			new Driebit.placeholder(el);
		});
	}

	if ($('blog-filter')) {
		blogFilter = $('blog-filter');
		blogFilterSubmit = blogFilter.getElement('button');
		blogFilterSelect = blogFilter.getElement('select');

		if (blogFilterSubmit)
			blogFilterSubmit.destroy();

		blogFilterSelect.addEvent('change', function () {
			var parameters = blogFilter.toQueryString();
			SabrinaStarke.doRequest(blogFilter.get('action') + '?' + parameters);
		});
	}

	// if there is form data, fill the form with it
	if (window.name != '' && $$('form').length > 0) {
		formData = JSON.decode(window.name);
		fieldMissing = false;

		for (var i=0; i<formData.length; i++) {
			if (!document.id(formData[i].id)) {
				fieldMissing = true;
			}
		}

		if (!fieldMissing) {
			for (var i=0; i<formData.length; i++) {
				field = document.id(formData[i].id);
				help  = new Element('span', {'class': 'help'});

				field.set('value', formData[i].value);

				if (formData[i].error != undefined) {
					help.inject(field, 'before');
					help.set('html', formData[i].error);
					field.addClass('error');
				}
			}

			window.name = '';
		}
	}
}

SabrinaStarke.doRequest = function (url, method, parameters) {
	var paramsString = '', keysValues;
	method = method || 'get';

	SabrinaStarke.ajax.setOptions({'url': url});

	if (typeof parameters == 'string') {
		paramsString = parameters;

		parameters = {};
		keysValues = paramsString.split('&');
		keysValues.each(function (combo) {
			var comboSplit = combo.split('=');

			parameters[comboSplit[0]] = decodeURIComponent(comboSplit[1]) || '';
		});
	}

	if (method == 'get') {
		SabrinaStarke.ajax.get();

	} else if (method == 'post') {
		SabrinaStarke.ajax.post(parameters);
	}
}

window.addEvent('domready', function () {
	SabrinaStarke.ajax = new Request.HTML({
		'update': $('site'),
		'onComplete': function () {
			SabrinaStarke.initializeBehaviors();
		},
		'onFailure': function (xhr) {
			$('site').set('html', xhr.responseText);
		}
	});

  SabrinaStarke.initializeBehaviors();
});

SWFAddress.addEventListener('change', function (evt) {
	var lang = $$('html')[0].get('lang');
	SabrinaStarke.doRequest('/' + lang + evt.path);
});
