if( typeof gAJSMAPBASECLASS == 'undefined' ){
  var gAJSMAPBASECLASS = 'defined';
// Converter for prototype 1.5 to prototype 1.6-library
  if( Prototype.Version < '1.6' ) {
    Hash.prototype = Object.extend({
      set: function( key, value ) { this[key] = value },
      get: function( key ) { return this[key] },
      unset: function( key ) { return this.remove() }
    }, Hash.prototype );
  }
  
  function browserCheck( aBrowserName, aVersion ){
    var Index = navigator.userAgent.indexOf(aBrowserName);
    if( Index != -1 ){
      if( typeof aVersion == 'undefined' ) return true;
      for( var i = 1; i < 2; ++i ){
        var version = parseFloat( navigator.userAgent.substring( Index + (aBrowserName).length + i ) );
        if( version != NaN )
          return (version >= aVersion);
      }
    }
    return false;
  };
  gBrowserCanvasAvailable = browserCheck( "MSIE", 6.0 ) ||
                            browserCheck( "Firefox", 1.5 ) ||
                            browserCheck( "Safari", 300 );
  
  var AJSMapBaseClass = Class.create();
  AJSMapBaseClass.prototype = {
    initialize: function(){
    },
    addElem: function( elemkind, elemname, elemstyle, parentelem, elemclass ){
  	  if ( document.getElementById( elemname ) ) alert( 'Element with id="' + elemname + '" already existing');
  	  else {
        var elem;
  		  if(elemkind=="inputbutton"){
          elem = document.createElement("input");
          elem.type="button";
        }else
          elem = document.createElement(elemkind);
  		  elem.id = elemname;
        if(typeof elemclass!='undefined')
          elem.className=elemclass;
        Object.extend(elem.style,elemstyle);
  		  if(elemkind=="canvas"){
          elem.width=parseInt(elemstyle.width);
          elem.height=parseInt(elemstyle.height);
          elem.appendChild(document.createTextNode("CANVAS NOT AVAILABLE"));
	  	    parentelem.appendChild(elem);
		      if( typeof G_vmlCanvasManager != 'undefined' ) G_vmlCanvasManager.initElement(elem);
        }else
          parentelem.appendChild(elem);
        return document.getElementById( elemname );
  	  }
  	},
    clone_contentparams: function( par )
    {
      var ret=Object.clone(par);
      if( typeof par.coord != 'undefined' )
        ret.coord=par.coord.clone();
      if( typeof par.hotspot != 'undefined' )
        ret.hotspot={x:par.hotspot.x,y:par.hotspot.y};
      if( typeof par.coords != 'undefined' ){
        ret.coords = new Array;
        for( var i = 0; i < par.coords.length; i++ )
          ret.coords[i]=par.coords[i].clone();
      }
      return ret;
    },
    decode: function( at ){
      var t = at.replace(/&ouml;/g, 'ö');
      t = t.replace(/&auml;/g, 'ä');
      t = t.replace(/&uuml;/g, 'ü');
      t = t.replace(/&Auml;/g, 'Ä');
      t = t.replace(/&Uuml;/g, 'Ü');
      t = t.replace(/&Ouml;/g, 'Ö');
      t = t.replace(/&#252;/g, 'ü');
      t = t.replace(/&#246;/g, 'ö');
      t = t.replace(/&#228;/g, 'ä');
      t = t.replace(/&#226;/g, 'â');
      t = t.replace(/&#223;/g, 'ß');
      t = t.replace(/&#196;/g, 'Ä');
      t = t.replace(/&#214;/g, 'Ö');
      t = t.replace(/&#220;/g, 'Ü');
      t = t.replace(/&#248;/g, 'ø');
      t = t.replace(/&#216;/g, 'Ø');
      t = t.replace(/&#229;/g, 'å');
      t = t.replace(/&#197;/g, 'Å');
      t = t.replace(/&#230;/g, 'æ');
      t = t.replace(/&#198;/g, 'Æ');
      t = t.replace(/&#233;/g, 'é');
      t = t.replace(/&#232;/g, 'è');
      t = t.replace(/&#156;/g, 'œ');
      t = t.replace(/&#140;/g, 'Œ');
      t = t.replace(/&#/g, '');
      return t;
    },
    checkParameter:function(par,defaultvalue){
      if(typeof defaultvalue!='undefined'){
        if(typeof par=='undefined'){
          return defaultvalue;
        }
      }else{
        if(typeof par=='undefined'){
          alert("Missing Parameter");
          return null;
        }
      }
      return par;
    },
    getColorSetFunction: function(content){
      if(content=="chgno"){
        return function(p){
          switch(parseInt(p.chgno)){
            case 0:return "00ff00";
            case 1:return "ffff00";
            case 2:return "ff0000";
            default:return "000000";
          }
        };
      }else if(content=="trainclass"){
        return function(p){
          switch(parseInt(p.trainclass)){
            case 1:return "ff0000";
            case 2:return "0000ff";
            case 4:return "000000";
            case 8:return "949494";  // RE    
            case 16:return "50693f"; // S     
            case 32:return "ffff00"; // Bus
            case 64:return "009cce"; // Schiff
            case 128:return "00528c";// U
            case 256:return "dc2b19";// STB   
            case 512:return "dcdc96";// AST
            default:return "ffffff";
          }
        }
      }else{
        return function(p){return "555555";};
      }
    }
  }
}
