
function Lon2Merc(lon) {
    return 20037508.34 * lon / 180;
}

function Lat2Merc(lat) {
    var PI = 3.14159265358979323846;
    lat = Math.log(Math.tan( (90 + lat) * PI / 360)) / (PI / 180);
    return 20037508.34 * lat / 180;
}

function sprintf() {
 if( sprintf.arguments.length < 2 ) {
  return;
 }

 var data = sprintf.arguments[ 0 ];

 for( var k=1; k<sprintf.arguments.length; ++k ) {

  switch( typeof( sprintf.arguments[ k ] ) )
  {
   case 'string':
    data = data.replace( /%s/, sprintf.arguments[ k ] );
    break;
   case 'number':
    data = data.replace( /%d/, sprintf.arguments[ k ] );
    break;
   case 'boolean':
    data = data.replace( /%b/, sprintf.arguments[ k ] ? 'true' : 'false' );
    break;
   default:
    /// function | object | undefined
    break;
  }
 }
 return( data );
}

if( !String.sprintf ) {
 String.sprintf = sprintf;
}
/// printf

function debug(pattern, values) {
  $('txt_debug').value=$('txt_debug').value+sprintf(pattern, values)+'\n';
  $('txt_debug').scrollTop = $('txt_debug').scrollHeight;
}
