function googleMapsTemplate() {

	var template = 'default';

	/**
	 * Template Sprache setzen
	 */
	this.set_template = function(__template) {
		this.template = __template;
	}

	/**
	 * Ergebnisliste generieren
	 */
	this.get_result_list = function(__data) {

		switch (this.template) {

			default:
				return render_default_result_list(__data);
				break;
		}

		return '';
	}

	/**
	 * Tooltip generieren
	 */
	this.get_tooltip = function(id, point, __y, __x) {

		switch (this.template) {

			default:
				return render_default_tooltip(id, point, __y, __x);
				break;
		}

		return '';
	}


	/**
	 * Tooltip (default) generieren
	 */
	function render_default_result_list(__data) {

		if (__data.length) {
			var table = $('<table class="locatorresultsimple"><tbody>');

			for (key in __data)
			{
				if (!__data[key].group) {
					continue;
				}

				var pin 	= __data[key].group[0];
				var html 	= '';

				html += '<tr class="loc-b">';
				html += '<td class="loc-icon-box"><img src="'+ pin +'" class="locator-pin" /></td>';
				html += '<td class="loc-text-box">';
				html += '<a href="javascript:void(0)" class="layerinfo" rel="shape__' + key + '">' + __data[key].name + '</a>';

				if (__data[key].criteria) {

					html += '<br /><div>';

					for(var i=0; i<__data[key].criteria.length; i++) {

						html += '<img src="' + __data[key].criteria[i][0] + '" class="locator-icon" alt="' + __data[key].criteria[i][1] + '" />';

						if (__data[key].criteria[i+1]) html += '<span class="loc-spacer">&nbsp;</span>';

					}

					html += '</div>';
				}

				html += '</td>';
				html += '</tr>';

				html = $(html);

				// Dateninsel an TR hängen
				html.data('data', __data[key]);

				table.append(html);
			}

			return table;
		}

		return $('<p class="error">'+$.translate('emptyresult')+'</p>');
	}


	/**
	 * Ergebnisliste (default) generieren
	 */
	function render_default_tooltip(id, point, __y, __x)
	{
		$("tr", $("#LocatorListSimple")).each(function()
		{
			//alert("render_default_tooltip:"+id + ":" + $(this).data("data").id + " | " + point.lng() + ":" + $(this).data("data").coordinates[0] + " | " + point.lat() + ":" +$(this).data("data").coordinates[1]);

			// Koordinaten gefunden
			//if (point.lng() == $(this).data("data").coordinates[0] && point.lat() == $(this).data("data").coordinates[1]) {
			if (id == $(this).data("data").id)
			{
				var searchResult = $(this).data("data");

				var address  = '<div class="popuplocator" id="myMap_ShapeInfoWin" style="position: absolute; left: 196px; top: 225px; z-index: 200; display: block;">\
				<table cellspacing="0" cellpadding="0" border="0">\
					<tbody>\
						<tr style="height: auto;">\
							<td style="line-height: 0pt; font-size: 0pt; background-image: url(/page/img/main/rounded-white.png); background-position: 0px 0px; height: 20px; width: 20px;"></td>\
							<td style="line-height: 0pt; font-size: 0pt; background-image: url(/page/img/main/rounded-white.png); background-position: 0px -40px; height: 20px; width: 20px;"></td>\
							<td style="line-height: 0pt; font-size: 0pt; background-image: url(/page/img/main/rounded-white.png); background-position: -20px 0px; height: 20px; width: 20px;"></td>\
						</tr>\
						<tr style="height: auto;">\
							<td style="line-height: 0pt; font-size: 0pt; background-image: url(/page/img/main/rounded-white.png); background-position: 0px -80px; height: 20px; width: 20px;"></td>\
							<td style="position: relative; background-color: rgb(255, 255, 255); width: 300px; height: 172px;">\
								<table class="loc-addr-box-pop">\
									<tr>\
										<td colspan="2"><h4>';
											if (searchResult.group.length==3) {
												address += '<img src="'+searchResult.group[2]+'" class="locator-type-icon" alt="" />';
											}
											address += searchResult.name + '</h4>';

											if (searchResult.contact) {
												address += searchResult.contact;
											}
										address += '</td></tr>';
									address += '<tr valign="top">';
									address += '<td class="loc-addr">';
										if (searchResult.address1) {
											address += searchResult.address1 + '<br/>';
										}
										if (searchResult.address2) {
											address += searchResult.address2 + '<br/>';
										}
										if (searchResult.address3) {
											address += searchResult.address3 + '<br/>';
										}
										address += searchResult.postcode + ' ' + searchResult.city;
									address += '</td>';
									address += '<td class="loc-addr">';

									if (searchResult.phone) {
										address += $.translate('phone') + ': ' + searchResult.phone + '<br />'
									}

									if (searchResult.fax) {
										address += $.translate('fax') + ': ' + searchResult.fax + '<br />';
									}

									if (searchResult.homepage && searchResult.homepage != "") {
										address += '<a href="' + searchResult.homepage + '" target="_blank" class="loc-url">' + $.translate('visitwebsite') + '</a>';
									}

									address += '</td></tr>';

									if (searchResult.criteria && searchResult.criteria.length>0)
									{
										address += '<tr><td colspan="2"><h4>'+$.translate('memberof')+'</h4></td></tr><tr><td colspan="2"><table class="member-types">';
										for (var a=0; a<searchResult.criteria.length; a++)
										{
											address += '<tr><td class="td-icon-box"><img src="'+searchResult.criteria[a][0]+'" class="locator-icon" /></td>';
											address += '<td>'+searchResult.criteria[a][1]+'</td></tr>';
										}

										address += '</table></td></tr>';
									}

									if (searchResult.mail && searchResult.mail != "") {
										address += '<tr><td class="loc-form" colspan="2"><form action="./request.php"><input type="hidden" name="item" value="' + (searchResult.id) + '" /><button class="more" type="submit"><span><span><span><span><span><span>'+$.translate('sendarequest')+'</span></span></span></span></span></span></button></form></td></tr>';
									}

								address += '</table>';

							address += '</td>\
										<td style="line-height: 0pt; font-size: 0pt; background-image: url(/page/img/main/rounded-white.png); background-position: -20px -80px; height: 20px; width: 20px;"></td>\
									</tr>\
									<tr style="height: auto;">\
										<td style="line-height: 0pt; font-size: 0pt; background-image: url(/page/img/main/rounded-white.png); background-position: 0px -20px; height: 20px; width: 20px;"></td>\
										<td style="line-height: 0pt; font-size: 0pt; background-image: url(/page/img/main/rounded-white.png); background-position: 0px -60px; height: 20px; width: 20px;"></td>\
										<td style="line-height: 0pt; font-size: 0pt; background-image: url(/page/img/main/rounded-white.png); background-position: -20px -20px; height: 20px; width: 20px;"></td>\
									</tr>\
								</tbody>\
							</table>\
								<div id="closeMW"></div>\
								<div class="icon-double"></div>\
							</div>';

				$("#infoLayer").html(address);
				$("#infoLayer").css("position", "relative");
				$("#infoLayer").css("top", __y);
				$("#infoLayer").css("left", __x);
				$("#infoLayer").show();
			}
		});
	};
};


/**
 * Textübersetzungen
 */
jQuery.translate = function(key) {
    var skey = key.replace(/ /g, "").toLowerCase();

	if(translations && translations[skey]) {
        return translations[skey];
    }

    return key;
}


jQuery.getItemTypeInfo = function(result) {

	if(result.criteria && result.criteria.length) {
	    var out = [];

		for (var a=0; a<result.criteria.length; a++) {
			out[out.length] = '<img src="'+result.criteria[a][0]+'" class="locator-icon" alt="" />';
		}

		return out.join('<span class="loc-spacer">&nbsp;</span>');
	}

    return '';
};


/**
 * Dynamische Seiten Navigation
 */
jQuery.fn.extend({
	paging: function() {
		return this.each(function() {
			new jQuery.LocatorPaging(this);
		});
	}
});


/**
 * Dynamische Seiten Navigation
 */
jQuery.LocatorPaging = function(tableobj) {
	var currentPage = 0;
	var numPerPage = 10;
	var $table = $(tableobj);

	$table.bind('repaginate', function() {
		$table.find('tbody tr.loc-b').show()
			.filter(':lt(' + currentPage * numPerPage + ')')
				.hide()
			.end()
			.filter(':gt(' + ((currentPage + 1) * numPerPage - 1) + ')')
				.hide()
			.end();
	});

	var numRows = $table.find('tbody tr.loc-b').length;
	var numPages = Math.ceil(numRows / numPerPage);

	var getPages = function() {
			var _max = ((currentPage+1)*numPerPage);
			var _min = (_max-numPerPage)+1;
			if(_min < 10) {_min = '0'+_min;}
			if(_max < 10) {_max = '0'+_max;}
			if(parseInt(_max) > numRows) {_max = numRows;}
			return _min+'-'+_max;
	}

	if (numPages > 1) {
		var $pager = $('<div class="loc-pager">' + $.translate('results') + ' </div>');
		$('<span class="pager-prev"><img src="/page/img/main/back2.gif" /></span>').bind('click',{},function(event) {
			if(currentPage > 0) {
				currentPage = currentPage-1;
				$table.trigger('repaginate');
				$($table[0].parentNode).find('.pager-message').text(getPages());
			}}).appendTo($pager);
		$('<span class="pager-message">'+getPages()+'</span>').appendTo($pager);
		$('<span class="pager-next"><img src="/page/img/main/forward2.gif" /></span>').bind('click',{},function(event) {
		if(currentPage < (numPages-1)) {
			currentPage = currentPage+1;
			$table.trigger('repaginate');
			$($table[0].parentNode).find('.pager-message').text(getPages());
		}}).appendTo($pager);
		$('<span class="pager-tot"> ' + $.translate('of') + ' '+numRows+'</span>').appendTo($pager);
		$pager.insertBefore($table);

		var $pager = $('<div class="loc-pager">' + $.translate('results') + ' </div>');
		$('<span class="pager-prev"><img src="/page/img/main/back2.gif" /></span>').bind('click',{},function(event) {
			if(currentPage > 0) {
				currentPage = currentPage-1;
				$table.trigger('repaginate');
				$($table[0].parentNode).find('.pager-message').text(getPages());
			}}).appendTo($pager);
		$('<span class="pager-message">'+getPages()+'</span>').appendTo($pager);
		$('<span class="pager-next"><img src="/page/img/main/forward2.gif" /></span>').bind('click',{},function(event) {
		if(currentPage < (numPages-1)) {
			currentPage = currentPage+1;
			$table.trigger('repaginate');
			$($table[0].parentNode).find('.pager-message').text(getPages());
		}}).appendTo($pager);
		$('<span class="pager-tot"> ' + $.translate('of') + ' '+numRows+'</span>').appendTo($pager);
		$pager.insertAfter($table);

		$table.trigger('repaginate');
	}
};
