//--------------------------------------------------------------------------------
//	$Id: ocmarker.js,v 1.5 2010/08/14 23:34:47 wolf Exp wolf $
//--------------------------------------------------------------------------------
//	Fragen, Wuensche, Bedenken, Anregungen?
//	<openlayers(%40)netzwolf.info>
//--------------------------------------------------------------------------------

OpenLayers.Layer.OcMarker = OpenLayers.Class(OpenLayers.Layer.PopupMarker,{

        initialize:function(name, options){
                OpenLayers.Layer.PopupMarker.prototype.initialize.apply(this,arguments);
        },

	createIconFromData: function (object) {
		if (object.status && object.status!=1) {
			return new OpenLayers.Icon ("oc/archived_32x32.gif", {w:32,h:32});
		}
		switch (object.type) {
		case "1":
			return new OpenLayers.Icon ("oc/unknown_32x32.gif", {w:32,h:32});
		case "2":
			return new OpenLayers.Icon ("oc/traditional_32x32.gif", {w:32,h:32});
		case "3":
			return new OpenLayers.Icon ("oc/multi_32x32.gif", {w:32,h:32});
		case "4":
			return new OpenLayers.Icon ("oc/virtual_32x32.gif", {w:32,h:32});
		case "5":
			return new OpenLayers.Icon ("oc/webcam_32x32.gif", {w:32,h:32});
		case "6":
			return new OpenLayers.Icon ("oc/event_32x32.gif", {w:32,h:32});
		case "7":
			return new OpenLayers.Icon ("oc/mystery_32x32.gif", {w:32,h:32});
		case "8":
			return new OpenLayers.Icon ("oc/mathe_32x32.gif", {w:32,h:32});
		case "9":
			return new OpenLayers.Icon ("oc/moving_32x32.gif", {w:32,h:32});
		case "10":
			return new OpenLayers.Icon ("oc/drivein_32x32.gif", {w:32,h:32});
		}
		if (this.defaultIcon) return this.defaultIcon.clone();
		return null;
	},

	d2: function (s) {
		return s>=10 ? s : "0"+s;
	},

	createHtmlFromData: function (data) {

		//-----------------------------------
		//	Name
		//-----------------------------------

		var text = '<h3 style="margin: 0; text-align: center">'+this.html(data.name)+'</h3>';

		//-----------------------------------
		//	User
		//-----------------------------------

		if (data.user_name) {
			var user = this.html(data.user_name);
			if (data.user_id) {
				user = '<a target="_blank" href="http://www.opencaching.de/viewprofile.php?userid='+
					data.user_id+'">'+user+'</a>';
			}
			if (data.datehidden) {
				var hidden = new Date (data.datehidden*1000);
				var date = this.d2(hidden.getDate())+"."+this.d2(hidden.getMonth()+1)+"."+hidden.getFullYear();
				user += " ("+date+")";
			}
			text += "Von: "+user+"<br />";
		}

		//-----------------------------------
		//	Hinweis
		//-----------------------------------

		if (data.status != 1) {
			var hinweis = this.html(data.status_text ? data.status_text : "Status unklar");
			if (data.lastmodified) {
				var modified = new Date (data.lastmodified*1000);
				var date = this.d2(modified.getDate())+"."+this.d2(modified.getMonth()+1)+"."+modified.getFullYear();
				hinweis += " ("+date+")";
			}
			text += '<span style="color:red">Hinweis: '+hinweis+'</span><br />';
		}

		//-----------------------------------
		//	Attribute
		//-----------------------------------

		var at = [];
		if (data.type_text)	at.push (this.html(data.type_text));
		if (data.size_text)	at.push ("Gr&#246;&#223;e: "+this.html(data.size_text));
		if (data.difficulty)	at.push ("Schwierigkeit: "+data.difficulty);
		if (data.terrain)	at.push ("Gel&#228;nde: "+data.terrain);
		if (data.waylength) {
			var num = parseFloat(data.waylength);
			if (num>=1.0 || 1000*num<1.0) {
				 at.push ("Strecke: "+num+"km");
			} else {
				 at.push ("Strecke: "+Math.round(num*1000)+"m");
			}
		}
		if (data.needtime) {
			var num = parseFloat(data.needtime);
			if (num>=1.0 || num*60<1.0) {
				 at.push ("Dauer: "+num+"h");
			} else {
				 at.push ("Dauer: "+Math.round(num*60)+"min");
			}
		}
		if (at.length) text += at.join (', ')+".<br />";

		//-----------------------------------
		//	Hinweise
		//-----------------------------------

		if (data.attributes_text)
			text += "Hinweis: "+data.attributes_text.replace(/;/g, ', ')+".<br />";

		//-----------------------------------
		//	Wegpunkte
		//-----------------------------------

		var wp = [];
		if (data.wp_oc) {
			wp.push('<a rel="external" target="_blank" href="http://www.opencaching.de/viewcache.php?wp='+
					data.wp_oc+'">'+data.wp_oc+'</a> ('+data.desclanguages+')');
		}
		if (data.wp_gccom) {
			wp.push('<a rel="external" target="_blank" href="http://www.geocaching.com/seek/cache_details.aspx?wp='+
					data.wp_gccom+'">'+data.wp_gccom+'</a>');
		}
		if (data.wp_nccom) {
			var id = parseInt (data.wp_nccom.substr(1), 16);
			wp.push('<a rel="external" target="_blank" href="http://www.navicache.com/cgi-bin/db/displaycache2.pl?CacheID='+
					id+'">'+data.wp_nccom+'</a>');
		}
		if (wp.length) text += (wp.length>=2?"Beschreibungen: ":"Beschreibung: ")+wp.join (', ')+"<br />";

		return text;
	},

	CLASS_NAME:"OpenLayers.Layer.OcMarker"
});

//--------------------------------------------------------------------------------
//	$Id: ocmarker.js,v 1.5 2010/08/14 23:34:47 wolf Exp wolf $
//--------------------------------------------------------------------------------

