var BROETJE = Class.create({
	initialize: function() {
		this.ajaxPath = './ajax/getCraftsmen.php';
		this.craftsmen = null;
		this.currentPage = 0;
		this.displayedPages = 7;
		this.totalPages = 0;
		this.displayedCraftsmenProPage = 10;
		
		this.zipID = 'zip';
		this.headlineID = 'searchResultHeadline';
		this.pagingID = 'pagingTop';
		this.searchResultID = 'searchResult';
	},
	
	clear: function() {
		if($(this.headlineID.toString())) $(this.headlineID.toString()).update('');
		if($(this.pagingID.toString())) $(this.pagingID.toString()).update('');
		if($(this.searchResultID.toString())) $(this.searchResultID.toString()).update('');
	},
	
	getCraftsmen: function() {
		var _self = this;
		if($F(this.zipID.toString()).length >= 3) {
			new Ajax.Request(this.ajaxPath, {
				method: 'get',
				parameters: 'zip=' + $F(this.zipID.toString()),
				onSuccess: function(transport) {
					if(transport.responseText.isJSON()) {
						_self.craftsmen = transport.responseText.evalJSON(true);
						_self.totalPages = Math.ceil(_self.craftsmen.length / _self.displayedCraftsmenProPage) - 1;
						_self.updateHeadline();
						_self.showPage(0);
					}
				}
			});
		} else this.clear();
	},
	
	updateHeadline: function() {
		if($(this.headlineID.toString())) $(this.headlineID.toString()).update('<span class="rotbold">Gefunden: ' + this.craftsmen.length + ' Handwerksbetrieb/e</span>');
	},
	
	showPage: function(page) {
		this.currentPage = page;
		this.updatePaging();
		
		if($(this.searchResultID.toString())) $(this.searchResultID.toString()).update('');
		
		var maxCraftsmen = (this.currentPage + 1) * this.displayedCraftsmenProPage;
		if(maxCraftsmen > this.craftsmen.length) maxCraftsmen = this.craftsmen.length
		
		for(var i = (this.currentPage * this.displayedCraftsmenProPage); i < maxCraftsmen; i++) {
			this.showCraftsman(i);
		}
	},
	
	updatePaging: function() {
		var pagesText = '';
		if(this.totalPages < this.displayedPages) {
			for(var i = 0; i <= this.totalPages; i++) {
				if(i == this.currentPage) pagesText += '<span class="rotbold" style="cursor:pointer;" "onclick="broetje.showPage(' + i + ');">&raquo;&nbsp;' + (i + 1) + '&nbsp;</span>';
				else pagesText += '<span class="rotbold" style="cursor:pointer;" onclick="broetje.showPage(' + i + ');">&raquo;&nbsp;' + (i + 1) + '&nbsp;</span>';
			}
		} else {
			var range = new Array();
			for(var i = -(parseInt(this.displayedPages / 2)); i <= (parseInt(this.displayedPages / 2)); i++) range[range.length] = this.currentPage + i;
			while(range[0] < 0) for(var i = 0; i < range.length; i++) range[i]++;
			while(range[range.length - 1] > this.totalPages) for(var i = 0; i < range.length; i++) range[i]--;
			for(var i = 0; i < range.length; i++) {
				if(range[i] == this.currentPage) pagesText += '<span class="rotbold" style="cursor:pointer;" onclick="broetje.showPage(' + range[i] + ');">&raquo;&nbsp;' + (range[i] + 1) + '&nbsp;</span>';
				else pagesText += '<span class="rotbold" style="cursor:pointer;" onclick="broetje.showPage(' + range[i] + ');">&raquo;&nbsp;' + (range[i] + 1) + '&nbsp;</span>';
			}
		}
		if($(this.pagingID.toString())) $(this.pagingID.toString()).update(pagesText);
	},
	
	showNextPage: function() {
		if((this.currentPage + 1) <= this.totalPages) this.showPage(++this.currentPage);
	},
	
	showPreviousPage: function() {
		if((this.currentPage - 1) > 0) this.showPage(--this.currentPage);
	},
	
	showCraftsman: function(indx) {
		var searchResult = '<div style="border-top:1px dotted #000000;padding:5px 0px 10px 0px;">';
		
		if(this.craftsmen[indx].firma != '') searchResult += '<span class="graubold">' + this.craftsmen[indx].firma + '</span><br />';
		if(this.craftsmen[indx].strasse != '') searchResult += this.craftsmen[indx].strasse + '<br />';
		if(this.craftsmen[indx].plz != '' && this.craftsmen[indx].ort != '') searchResult += this.craftsmen[indx].plz + ' ' + this.craftsmen[indx].ort + '<br />';
		if(this.craftsmen[indx].vorwahl != '' && this.craftsmen[indx].tel != '') searchResult += 'Tel.: ' + this.craftsmen[indx].vorwahl + '/' + this.craftsmen[indx].tel + '<br />';;
		if(this.craftsmen[indx].vorwahl != '' && this.craftsmen[indx].fax != '') searchResult += 'Fax: ' + this.craftsmen[indx].vorwahl + '/' + this.craftsmen[indx].fax + '<br />';;
		if(this.craftsmen[indx].email != '') searchResult += '<a href="mailto:' + this.craftsmen[indx].email + '" style="text-decoration:underline;">' + this.craftsmen[indx].email + '</a><br />';
		if(this.craftsmen[indx].url != '') searchResult += '<a href="' + this.craftsmen[indx].url + '" target="_blank" style="text-decoration:underline;">' + this.craftsmen[indx].url + '</a><br />';
		
		searchResult += '</div>';
		if($(this.searchResultID.toString())) $(this.searchResultID.toString()).innerHTML += searchResult;
	}
});

var broetje = new BROETJE();
