var plain = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";
var matchers = ['éè', 'åäæ', 'ÅÄÆ', 'öøœ', 'ÖØŒ' ];
var replacers = ['e', 'a', 'A', 'o', 'O'];

var convert = function(str) {
	var result = "";
	for (var i = 0; i < str.length; i++) {
		result += convert_char(str.charAt(i));
	}
	return result;
}

var convert_char = function(c) {
	if (plain.indexOf(c) !== -1) {
		return c;
	}
	for (var m = 0; m < matchers.length; m++) {
		if (matchers[m].indexOf(c) !== -1) {
			return replacers[m];
		}
	}
	return '_';
}

function generate(data) {
	var str = "";
	data.each(function(document) {
		var event = document.data;
		if (!event.title) { event.title = event.url };
		if (!event.description) { event.description = ""; }
		var moreUrl = "/event/" + convert(event.title) + "-" + event._id + "/";

		str += "<div class='event'>";
		str += "<div class='title'>" +
		"<a href='" + moreUrl + "'><span class='title'>" + event.title + "</span></a> " +
		"<a href='" + event.url + "'>#</a>" + 
		"</div>";
		str += "<div class='body'>";
		str += "<div class='description'>" + event.description + "</div>";
		str += "<div class='when'>" + event.startDate + "</div>";
		str += "<div class='where'>" + event.location + "</div>";
		str += "</div>";
		str += "</div>";
	});
	document.getElementById('events').innerHTML = str;
}
Array.prototype.each = function(fn, scope) {
	for (var i = 0; i < this.length; i++) {
		fn.call(scope||window, this[i]);
	}
}
Ext.Ajax.disableCaching = false;
var store = new Ext.ux.data.CouchStore({
	db: 'db',
	view: 'events/all?startkey="2009-06-04"',
	fields: [
		{name: '_id'},
		{name: '_rev'},
		{name: 'title'},
		{name: 'url'},
		{name: 'description'},
		{name: 'startDate'},
		{name: 'location'}
	]
});
var today = new Date().format("Y-m-d");
store.proxy.conn.url = '/db/_design/events/_view/all?startkey="' + today + '"';
store.on('load', generate, store);
Ext.onReady(store.load, store);

var showSuggestionBox = function() {
	var box = Ext.get('suggestion');
	if (box.isVisible()) {
		box.toggle({ 
			useDisplay: true,
			callback: function() {
				box.setDisplayed(false);
			}
		});
	} else {
		box.slideIn();
		//box.toggle(true);
	}
}

var submitSuggestion = function() {
	Ext.fly('sugg-header').dom.innerHTML = 'Skickar in tipset ...'
	Ext.Ajax.request({
		url: '/suggestion/',
		method: 'GET',
		params: {
			url: document.getElementById('event_url').value 
		},
		success: function(xhr) {
			Ext.fly('sugg-header').dom.innerHTML = 'Tack för ditt tips!'
			showSuggestionBox();
		},
		failure: function() {
			Ext.fly('sugg-header').dom.innerHTML = 'Oväntat fel - det gick inte att ta emot ditt tips. Försök igen eller skicka in till info@devconf.se.'
		}
	}); 
}
