 var current_Path="public/js/";
 var image_dir_base="public/images";
 var tile_dir_base="public/map_tiles/";
 var plz_dir_base=tile_dir_base+"plz/";
 var s_div_gmapper_map='div_gmapper_map';
 var google_api="google_api/"; // Directory four our javascript version of the Google-Api and their images
 var tile_dir_mapfiles="mapfiles_v3/"; // Directory of Google Version 3 images
 var tile_dir_Berlin_1937="/Berlin_1937";
 var s_Reichsdreieck_Positionen="52.4519401606644066760054557,13.3663037772459993846041471;";
 s_Reichsdreieck_Positionen +="52.52062972684898,13.40677761763900;52.4172570373342949778816546,13.6254337145715211931928934;";
 s_Reichsdreieck_Positionen+="52.4519401606644066760054557,13.3663037772459993846041471;";
 s_Reichsdreieck_Positionen+="52.38025865978020, 13.06530381568933;52.32592341695980,13.03873181172951;";
 s_Reichsdreieck_Positionen+="52.41725703733429, 13.62543371457152;52.52062972684898,13.40677761763900;52.38025865978020, 13.06530381568933";
 var s_Reichsdreieck_Positionen_Text="Zentralpunkte Reichsdreiecknetzes";
 var s_Paris_Eifel_Turm="48.858249,2.294576";
 var s_Prag="50.088027, 14.4207143";
 var s_Ausrede="Auch diese Funktion kommt eines Tages in ihre Stadt !";
 var i_google_api=3;
 var b_google_api_online=true; // Using original Google-Api-Version
 var b_google_geocode_online=true; // Internet connection is on
 // b_google_api_online=false; // Using local Google-Api-Version
 // b_google_geocode_online=false; // Internet connection is off
 // var image_dir_base="css/images";

 function Include_Script(s_google_key)
 {
  if (mj_Domain != "")
   mj_Domain="http://"+mj_Domain;
  else
  {
   current_Path="js/"; // we are calling the html page directly (not though a apache-server)
   var path = document.location.pathname;
   var full_path = path.substr(0, path.lastIndexOf('/'));
   var dir = full_path.substr(full_path.lastIndexOf('/')+1, full_path.length-full_path.lastIndexOf('/')-1);
   if (dir == "map_tiles")
   { // this may be running on a local system (USB-Stick) and should use this directory
    tile_dir_base=full_path+"/";
    // path=path.replace(/\/\//gi,"/"); // get rid of any double '/' that may have crept into the pathname
   }
   else
    mj_Domain="/media/maxtor/www/mj10777.homeip";
   // alert("-I-> path("+path+") full_path("+full_path+") dir("+dir+") mjDomain("+mj_Domain+") tile_dir_base("+tile_dir_base+")");
  }
  google_api=current_Path+google_api;
  var google_sensor="false";
  var  s_google_key_command="";
  s_google_key_command="http://maps.google.com/maps/api/js?sensor="+google_sensor;
  if (!b_google_api_online)
  { // Use our copy of the Google-Api
   s_google_key_command=google_api+"Google_Maps_V3.load_main.js";
  }
  else
  { // Use the online copy of the Google-Api
   b_google_geocode_online=true;
  }
  if (i_google_api < 3)
  {
   s_google_key_command="http://maps.google.com/maps?file=api&amp;v=2.x&amp;key="+s_google_key;
   // http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=ABQIAAAAxNzcYmzYWZx9UJS3qtE8GxTgmFmbsbZuYx7Ttv2s00Ea6yPB6RR76ZC2RGLiS3EMWgwY-hz4iTd4sA
   tile_dir_mapfiles="mapfiles_v2/"; // Directory of Google Version 2 images (not used)
  }
  document.write('<' + 'script src="' + s_google_key_command + '"' +' type="text/javascript"><' + '/script>');
  if (i_google_api >= 3)
  {
   document.write('<' + 'script src="'+current_Path+'keydragzoom_packed.js"' +' type="text/javascript"><' + '/script>');

   // Stuff added for Google Earth
   s_google_key_command2="https://www.google.com/jsapi?key="+s_google_key;
   document.write('<' + 'script src="' + s_google_key_command2 + '"' +' type="text/javascript"><' + '/script>');
   document.write('<' + 'script src="'+current_Path+'googleearth.js"' +' type="text/javascript"><' + '/script>');
   document.write("  <script type=\"text/javascript\">");
   document.write("google.load('earth', '1');");
   document.write("var googleEarth;");
   document.write("\n  </script>");
  }
  // currentPath = ((location+"").replace(/%20/g, " ").replace("file:///", "").replace("/", "\\").replace("index.php", ""));
  document.write('<' + 'script src="'+current_Path+'jquery.js"' +' type="text/javascript"><' + '/script>');
  document.write('<' + 'script src="'+current_Path+'jquery-ui.js"' +' type="text/javascript"><' + '/script>');
  document.write('<' + 'script src="'+current_Path+'jquery.form.js"' +' type="text/javascript"><' + '/script>');
  document.write('<' + 'script src="'+current_Path+'zoomimage.js"' +' type="text/javascript"><' + '/script>');
  document.write('<' + 'script src="'+current_Path+'Java_GeoDb_Base.js"' +' type="text/javascript"><' + '/script>');
  document.write('<' + 'script src="'+current_Path+'search_ahead.js"' +' type="text/javascript"><' + '/script>');
  document.write('<' + 'script src="'+current_Path+'calendar.js"' +' type="text/javascript"><' + '/script>');
  document.write('<' + 'script src="'+current_Path+'lang/calendar-de.js"' +' type="text/javascript"><' + '/script>');
  document.write('<' + 'script src="'+current_Path+'GeoDb_Form_Jq.js"' +' type="text/javascript"><' + '/script>');
  document.write('<' + 'script src="'+current_Path+'Conferderate_Code_Form_Jq.js"' +' type="text/javascript"><' + '/script>');
  // document.write('<' + 'script src="'+current_Path+'File_IO.js"' +' type="text/javascript"><' + '/script>');
  // alert("-I-> Test ("+current_Path+"GeoDb_Form_Jq.js)");
  // // path=path.replace(/\/\//gi,"/"); // get rid of any double '/' that may have crept into the pathname
  // Console_IO(0,true,"-I-"+i_google_api+"->  api_online["+b_google_api_online+"] geocode_online["+b_google_geocode_online+"] ["+mj_Domain+"] api_image["+google_api+tile_dir_mapfiles+"] "+current_Path+"GeoDb_Form_Jq.js");
  // File_IO(true,true,"/home/mj10777/maps_work/map_tiles/js/prot.js.Java_GeoDb.js.txt","Test Line 1\nTest Line 2\n");
 }
 function write_Object(that_Object,this_Object, i_Level,b_Function_Text, s_Message)
 {
  var s_Space="";
  var i_Max_Level=20;
  if (i_Level > 0)
  {
   s_Space_Base="     ";
   for (i=0;i<i_Level;i++)
    s_Space=s_Space+s_Space_Base;
  }
  var details="\n";
  if ((!s_Message) && (i_Level == 0))
  {
   s_Message = this_Object;
  }
  if (s_Message != "")
   details = " '"+s_Message+"' : \n";
  var s_Field_Contents;
  if (typeof(this_Object) == "string")
  {
   details += s_Space+i_Level+" [string]  '"+this_Object+"'\n";
  }
  else
  {
   var i_Count=0;
   for (var s_Field in this_Object)
   {
    var s_Return_Value="";
    try
    {
     if (this_Object.hasOwnProperty(s_Field))
      i_Count++;
     s_Field_Contents = this_Object[s_Field];
     if (typeof(s_Field_Contents) == "function")
     {
      try
      {
       //s_Return_Value=that_Object.(s_Field_Contents)();
       s_Return_Value=that_Object.s_Field_Contents();
       if (s_Field_Contents == s_Return_Value)
       s_Return_Value=""; // There was no result
      }
      catch (obj_Error_Eval)
      {
       s_Return_Value="catch("+obj_Error_Eval.message_Eval+", ["+obj_Error_Eval.name+"])";
      }
      if (b_Function_Text)
       s_Field_Contents =  "\n"+s_Field_Contents;
      else
      s_Field_Contents = "function "+get_Func_Name(s_Field_Contents)+"()";
     }
     details += s_Space+i_Level+"  "+s_Field+": '"+s_Field_Contents+"'\n";
     if (s_Return_Value != "")
     {
      details += "return["+s_Return_Value+"]\n";
     }
     if ((typeof(s_Field_Contents) == "object") && (i_Level < i_Max_Level))
     { // avoid too much recursion
      s_Result =write_Object(that_Object,this_Object[s_Field],(i_Level+1),b_Function_Text,s_Field);
      details += s_Space+"-"+s_Result;
      // alert(s_Field_Contents);
     }
    }
    catch (obj_Error)
    {
     details += " catch('"+s_Field_Contents+"' ["+typeof(s_Field_Contents)+"] ["+obj_Error.message+"]["+obj_Error.name+"])\n";
    }
   }
   if (i_Count == 0)
   {
    s_Field=s_Message;
    if (typeof(this_Object) == "function")
    {
     try
     {
      //s_Return_Value=that_Object.(s_Field_Contents)();
      s_Return_Value=that_Object.s_Field_Contents();
      if (s_Field_Contents == s_Return_Value)
       s_Return_Value=""; // There was no result
     }
     catch (obj_Error_Eval)
     {
      s_Return_Value="catch("+obj_Error_Eval.message_Eval+", ["+obj_Error_Eval.name+"])";
     }
     if (b_Function_Text)
      s_Field_Contents =  "\n"+this_Object;
     else
      s_Field_Contents = "function "+get_Func_Name(this_Object)+"()";
    }
    else
    {
     if (!typeof(this_Object))
     {
      s_Field_Contents=this_Object;
     }
    }
    details += s_Space+i_Level+"  "+s_Field+": '"+s_Field_Contents+"'\n";
    if (s_Return_Value != "")
    {
     details += "return["+s_Return_Value+"]\n";
    }
    if ((typeof(this_Object) == "object") && (i_Level < i_Max_Level))
    { // avoid too much recursion
     s_Result =write_Object(this_Object,(i_Level+1),b_Function_Text,s_Field);
     details += s_Space+"- "+s_Result;
     // alert(s_Field_Contents);
    }
    var s_dump_Search="";
    // s_dump_Search="gstatic";
    if (s_dump_Search != "")
    {
     if (details.indexOf(s_dump_Search) >= 0)
     {
      // alert("-I-> "+details.indexOf(s_dump_Search)+" ["+details+"]");
     }
     else
      details="";
    }
   }
  }
  // alert(details);
  return details;
 }
 var get_Func_Name = function(fn)
 {
  var name = (/\W*function\s+([\w\$]+)\s*\(/).exec(fn);
  if (!name)
  {
   return "'Anonymous'";
  }
  return name[1];
 };
 function Console_IO(i_Type, b_Function_Name, s_Output_String)
 { // arguments.callee
  if (!console)
  {
   var console=
   {
    info:function(){},
    warn:function(){},
    error:function(){},
    debug:function(){},
    log:function(){}
   }
  }
  if (console)
  {
   var s_Funtion_Name="";
   if (b_Function_Name)
    s_Funtion_Name=get_Func_Name(arguments.callee.caller)+": ";
   // try to deinstall the Firefox Plugin ColourZilla
   switch (i_Type)
   {
    case 1:
     console.info(s_Funtion_Name+s_Output_String);
    break;
    case 2:
     console.warn(s_Funtion_Name+s_Output_String);
    break;
    case 3:
     console.error(s_Funtion_Name+s_Output_String);
    break;
    case 4:
     console.debug(s_Funtion_Name+s_Output_String);
    break;
    default:
     console.log(s_Funtion_Name+s_Output_String);
    break;
   }
  }
  else
   alert("-E- Console inaktiv\n"+s_Funtion_Name+s_Output_String);
  return;
 }
 //implementing a stack, create a object
function Stack()
{
 this.list = [];
}
Stack.prototype.push = function(value)
{
 this.list.push(value);
}
Stack.prototype.pop = function()
{
 return this.list.pop();
}
Stack.prototype.size = function()
{
 return this.list.length;
}
//create a custom toString function,
//event though Array object has its own
//we want to customize it a little bit
Stack.prototype.toString = function()
{
 var temp = '[ ';
 for(var i = 0, length = this.list.length; i <= length; i++)
 {
  temp += this.list[i];
  if(length - i != 1)
  {
   temp += ', ';
  }
 }
 temp += ' ]';
 console.log(temp);
 return temp;
}
   // Returns an XMLHttp instance to use for asynchronous
   // downloading. This method will never throw an exception, but will
   // return NULL if the browser does not support XmlHttp for any reason.
   // @return {XMLHttpRequest|Null}
   function On_Create_Xml_Http_Request()
   {
    try
    {
     if (typeof ActiveXObject != 'undefined')
     {
      return new ActiveXObject('Microsoft.XMLHTTP');
     }
     else
     {
      if (window["XMLHttpRequest"])
      {
       return new XMLHttpRequest();
      }
     }
    }
    catch(e)
    {
     changeStatus(e);
    }
    return null;
   };
   // This functions wraps XMLHttpRequest open/send function.
   // It lets you specify a URL and will call the callback if
   // it gets a status code of 200.
   // @param {String} url The URL to retrieve
   // @param {Function} callback The function to call once retrieved.
   function On_Download_Url(s_Url, this_callback)
   {
    var i_Status = -1;
    var this_request = On_Create_Xml_Http_Request();
    if (!this_request)
    {
     return false;
    }
    this_request.onreadystatechange = function()
    {
     if (this_request.readyState == 4)
     {
      try
      {
       i_Status = this_request.status;
      }
      catch(e)
      {
       // Usually indicates request timed out in FF.
      }
      if ((i_Status == 0) || (i_Status == 200))
      {// 0=local Maschine ; 200 over Server
       this_callback(this_request.responseXML, this_request.status);
       this_request.onreadystatechange = function() {};
      }
     }
    }
    this_request.open('GET', s_Url, true);
    try
    {
     this_request.send(null);
    }
    catch(e)
    {
     changeStatus(e);
    }
   };
   // Parses the given XML string and returns the parsed document in a
   // DOM data structure. This function will return an empty DOM node if
   // XML parsing is not supported in this browser.
   // @param {string} str XML string.
   // @return {Element|Document} DOM.
   function On_Xml_Parse(s_String)
   {
    if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined')
    {
     var this_doc = new ActiveXObject('Microsoft.XMLDOM');
     this_doc.loadXML(s_String);
     return this_doc;
    }
    if (typeof DOMParser != 'undefined')
    {
     return (new DOMParser()).parseFromString(s_String, 'text/xml');
    }
    return createElement('div', null);
   }
   // Appends a JavaScript file to the page.
   // @param {string} url
   function On_Download_Script(s_Url)
   {
    var this_script = document.createElement('script');
    this_script.src = s_Url;
    document.body.appendChild(this_script);
   }
 var mj10777_homeip="ABQIAAAAjQsoOsbOS1DEigI9P4r4BBRxYTxgDwvNbqDKvXwHZfU8rYfAGRSFus1bsx7HdcRQ7FVKR0IEycdi0Q";
 var mj10777_de = "ABQIAAAAjQsoOsbOS1DEigI9P4r4BBTSdH0LtotZwwOB-TeFLQrkMnYpbhSC21S1Ezz3hLtHbgyijqdCdQRrkw";
 var mj10777_eu = "ABQIAAAAxNzcYmzYWZx9UJS3qtE8GxTgmFmbsbZuYx7Ttv2s00Ea6yPB6RR76ZC2RGLiS3EMWgwY-hz4iTd4sA";
 var akempe_eu = "AABQIAAAA-fTThOa5viOGdh9EYWRGrxSfWOonQGpcHEzqyVuaRthqLS1pFRTbyjwHAhkYX80PxgIloi-S7bqf8Q";
 var ubuntu2 = "ABQIAAAA-fTThOa5viOGdh9EYWRGrxS6SXazTuU8w0Mpu6z1bzXWYrS8PRQNFzm_Xy4Ef4AsRYI1AnOM7ZDRDQ";
 var acksoft_dyndns_biz = "ABQIAAAA-fTThOa5viOGdh9EYWRGrxSfWOonQGpcHEzqyVuaRthqLS1pFRTbyjwHAhkYX80PxgIloi-S7bqf8Q";
 var mj_Domain  = window.location.host; //    Request.ServerVariables("SERVER_NAME");
 var mj_Google_Map_Key = mj10777_eu;
 //      alert(mj_Domain);
 if (mj_Domain == "mj10777.eu")
 {
  mj_Google_Map_Key = mj10777_eu;
 }
 if (mj_Domain == "mj10777.de" || mj_Domain == "www.mj10777.de")
 {
  mj_Google_Map_Key = mj10777_de;
 }
 if (mj_Domain == "mj10777.homeip.net")
 {
  mj_Google_Map_Key = mj10777_homeip;
 }
 if (mj_Domain == "akempe.homeip.net")
 {
  mj_Google_Map_Key = akempe_homeip;
 }
 if(mj_Domain=="ubuntu-2"){
  mj_Google_Map_Key = ubuntu2;
 }
 if(mj_Domain=="acksoft.dyndns.biz")
  mj_Google_Map_Key = acksoft_dyndns_biz;

 //alert(mj_Domain + "" + mj_Google_Map_Key);
 Include_Script(mj_Google_Map_Key);


