/* JS debuging utils */

function macroReplaceOne(ATemplate, AMacroChar, AMacroName, AMacroValue)
{
  re = /%abcx%/;
  str = "John %abcx% Smit%abcx%h";
  newstr = str.replace(re, "TEST");
  alert(newstr);
}

function transformURLMacro(APattern)
{
  // %abcx%
}

function dumpScalarValue(AObject)
{
  var result = '';
  var propertyValue = AObject;
  if (typeof(AObject) == 'string')
    propertyValue = '\'' + propertyValue + '\'';
  result += (AObject === null ? '' : '(' + typeof(AObject) + ') ') + propertyValue;
  return result;
}

function dumpProperties(AObject, AObjectName, ASeparator)
{
  if (!ASeparator)
    ASeparator = ";\n";
  var result = '';

  for (propertyName in AObject)
    result += (AObjectName ? AObjectName + '.' : '.') + propertyName + ' = ' + dumpScalarValue(AObject[propertyName]) + ASeparator;

  result += (AObjectName ? AObjectName + ' = ' : '') + dumpScalarValue(AObject) + ASeparator;

  return result;
}

function vd(AObject, AObjectName)
{
  alert(dumpProperties(AObject, AObjectName));
  return AObject;
}

function arrayCopy(ASource, AArrayFactory)
{
  if ((ASource === null) || (typeof(ASource) != 'object'))
    return ASource;
  var result = (AArrayFactory ? AArrayFactory() : new Array());
  for (var i in ASource)
    result[i] = arrayCopy(ASource[i], AArrayFactory);
  return result;
}
