function addV3WaterMark(map,layername,symbol,tooltip,pos,height,width,key)
{
  var x;
  var y;
  var obj = map.getMapExtent(true,false);
  
  //alert("x1=" + obj.getMinX() + ",y1=" + obj.getMinY() + ",x2=" + obj.getMaxX() + ",y2=" + obj.getMaxY());

  if (pos=="BL") { x =  obj.getMinX(); y = obj.getMinY(); }
  else if (pos=="BR") { x = obj.getMaxX(); y = obj.getMinY(); }
  else if (pos=="TR") { x = obj.getMaxX(); y = obj.getMaxY(); }
  else if (pos=="C") { x = map.getLon(); y = map.getLat(); }

  var theRedlineLayer; 
  
  theRedlineLayer = map.getMapLayer(layername);
    
  var symbolObjectsCollection = theRedlineLayer.getMapObjects();
  theRedlineLayer.removeObjects(symbolObjectsCollection);
  symbolObjectsCollection.removeAll(); 
    
  var theSymbolObject = theRedlineLayer.createMapObject(key,tooltip,""); 

  if (theSymbolObject==null) alert("mgmapobject is null");
  
  theRedlineLayer.setPriority(100);

  //setup the redline styles
  var theRedlineSetup = map.getRedlineSetup(); //returns MGRedlineSetup Object
  
  //set Symbol properties
  var theSymbolAttr =  theRedlineSetup.getSymbolAttr();
  theSymbolAttr.setHeight(map.getScale()*height,"M");
  theSymbolAttr.setWidth(map.getScale()*width,"M"); 
  theSymbolAttr.setRotation(0); 
  theSymbolAttr.setSymbol(symbol);
  var theSymbolPoint = map.createObject("MGPoint");
  theSymbolPoint.setX(x); 
  theSymbolPoint.setY(y); 
  
  var ret = theSymbolObject.addSymbolPrimitive(theSymbolPoint,false);
  
  if (pos=='BL')
  {
    var redobj = theSymbolObject.getExtentEx(false);
    theSymbolPoint.setX(redobj.getMaxX()); 
    theSymbolPoint.setY(redobj.getMaxY()); 
    var ret = theSymbolObject.addSymbolPrimitive(theSymbolPoint,false);
  }
  else if (pos=='BR')
  {
    var redobj = theSymbolObject.getExtentEx(false);
    theSymbolPoint.setX(redobj.getMinX()); 
    theSymbolPoint.setY(redobj.getMaxY()); 
    var ret = theSymbolObject.addSymbolPrimitive(theSymbolPoint,false);
  }
  else if (pos=='TR')
  {
    var redobj = theSymbolObject.getExtentEx(false);
    theSymbolPoint.setX(redobj.getMinX()); 
    theSymbolPoint.setY(redobj.getMinY()); 
    var ret = theSymbolObject.addSymbolPrimitive(theSymbolPoint,false);
  }

  symbolObjectsCollection.add(theSymbolObject);
  
}
