/*
Author: Dirk Strothmann
Copyright(C) 2007 Dirk Strothmann (www.web4map.com). All rights reserved.
Duplication or redistribution prohibited without written permission of the author.
*/
 function hexToRgb(hex_string) { if (hex_string.substr(0, 1) == '#') { hex_string = hex_string.substr(1); }; var r; var g; var b; if (hex_string.length == 3) { r = hex_string.substr(0, 1); r += r; g = hex_string.substr(1, 1); g += g; b = hex_string.substr(2, 1); b += b; }else if (hex_string.length == 6) { r = hex_string.substr(0, 2); g = hex_string.substr(2, 2); b = hex_string.substr(4, 2); }; r = parseInt(r, 16); g = parseInt(g, 16); b = parseInt(b, 16); return {r: r, g: g , b: b}; }; GMarker.prototype.x123=function(){ this.manager.clearMarkers(); }; function showTimeS(secs){ var hh=Math.floor(secs/3600); var restsecs=secs-hh*3600; var mm=Math.floor(restsecs/60); var ss=restsecs-mm*60; if (mm<10) mm="0"+mm; if (ss<10) ss="0"+ss; return hh+":"+mm+":"+ss; }; function x88(glatlng, num, mcolor,tcolor,opacity,time,clocktime) { time=Math.round(time); if (time){ extraclock=""; if (clocktime) extraclock="<br>"+showTimeS(time+clocktime)+' Uhr'; var stuff = '<div class="milestone" ><div style="white-space:nowrap; padding-right:5px; border:1px solid black;color:'+tcolor+'; background-color:'+ mcolor+'; padding: 2px;"><span style="margin-right:8px;"><b>'+num+'km<\/b></span>'+showTimeS(time)+' h'+extraclock+'<\/div><\/div>'; }else var stuff = '<div class="milestone" ><div style="border:1px solid black;color:'+tcolor+'; background-color:'+ mcolor+'; padding: 2px;"><b>'+num+'<\/b><\/div><\/div>'; var label = new ELabel(glatlng, stuff, null, null, opacity*100,true); return (label); }; function mod(x,y){ return x-(Math.floor(x/y)*y); }; GMarker.prototype.x124=function(dist,totaltime,clock){ var mark=this.x133(); var mcolor=mark.b7; var opacity=mark.b9; var rgb=hexToRgb(mcolor); var R=rgb.r; var G=rgb.g; var B=rgb.b; var saturation=(Math.max( R,G,B) - Math.min (R,G,B) ) / ( Math.max (R,G,B) + Math.min (R,G,B) )*255; var brightness=Math.max(R,G,B); if (brightness<170 ) tcolor="#ffffff"; else{ if (saturation<140) tcolor="#000000"; else{ if (G>190) tcolor="#000000"; else tcolor="#ffffff"; }}; var time=0; var pline=mark.polyline; var v0,v1,plength; var vertexnumber=0; if (pline){ vertexnumber=pline.getVertexCount(); var plength=getpolylength(pline,0); if (typeof totaltime == "undefined") { }else { if (totaltime) time=totaltime/plength; }}; var j; var startlength=0; if (g_userID==58){ switch (g_projectID){ case 7: startlength=967.07; break; case 6:startlength=1414.17; break; }}; var nextlength=startlength; var oldlength=nextlength; var divi,q24; var q20,q21,q22,q23; var newmark; var glatlng; var batch = [[]]; var buffer=[]; batch[0]=[]; batch[1]=[]; batch[2]=[]; batch[3]=[]; batch[4]=[]; var startindex,endindex; for (j=1;j<vertexnumber;j++){ v0=pline.getVertex(j-1); v1=pline.getVertex(j); plength=x70(v0,v1,q76); nextlength+=plength; q20=v1.lat()-v0.lat(); q21=v1.lng()-v0.lng(); startindex=Math.ceil(oldlength); endindex=Math.floor(nextlength); for (var i=startindex;i<=endindex;i++){ divi=i/dist; if (i>0 && divi==Math.floor(divi)){ q24=(i-oldlength)/plength; glatlng=new GLatLng(v0.lat()+q20*q24,v0.lng()+q21*q24); newmark=x88(glatlng,i,mcolor,tcolor,opacity,time*i,clock); buffer.push(newmark); }}; oldlength=nextlength; }; var count1=0,count5=0, count10=0,count50=0; if (startlength>0){ count1=mod(startlength,5); count5=Math.floor(mod(startlength,10)/5); count10=Math.floor(mod(startlength,50)/10); count50=Math.floor(mod(startlength,100)/50); }; for (i=0;i<buffer.length;i++){ count1++; if (count1<5){ batch[0].push(buffer[i]); }else{ count1=0; count5++; if (count5<2){ batch[1].push(buffer[i]); }else{ count5=0; count10++; if (count10<5){ batch[2].push(buffer[i]); }else{ count10=0; count50++; if (count50<2){ batch[3].push(buffer[i]); }else{ count50=0; batch[4].push(buffer[i]); }}; }}; }; buffer=[]; if (!mark.manager){ mark.manager=new MarkerManager(map); }; mark.manager.addMarkers(batch[4],7,17); mark.manager.addMarkers(batch[3],8,17); mark.manager.addMarkers(batch[2],10,17); mark.manager.addMarkers(batch[1],11,17); mark.manager.addMarkers(batch[0],13,17); mark.manager.refresh(); }; 