function GetIndex(server, index_name)
{
  var index_list = server.IndexList;
  var index_enum = new Enumerator(index_list);
  for(; !index_enum.atEnd(); index_enum.moveNext())
  {
    var index = index_enum.item();
    if(index.Name == index_name)
	  return index;
  }
  
  return null;
}

function GetIndexes(server)
{
  var index_list = server.IndexList;  
  var num_indexes = index_list.Count;
  
  if(num_indexes == 0)
    return null;

  var index_array = new Array(num_indexes);
  var count = 0;
  	
  var index_enum = new Enumerator(index_list)
  for(; !index_enum.atEnd(); index_enum.moveNext())
  {
    var index = index_enum.item();
	index_array[count++] = index;
  }
  
  return index_array;
}

function GetIndexNames(server)
{
  var index_list = server.IndexList;  
  var num_indexes = index_list.Count;
  
  if(num_indexes == 0)
    return null;

  var index_names = new Array(num_indexes);
  var count = 0;
  	
  var index_enum = new Enumerator(index_list)
  for(; !index_enum.atEnd(); index_enum.moveNext())
  {
    var index = index_enum.item();
	index_names[count++] = index.Name;
  }
  
  return index_names;
}

function GetNumOfIndexes(server)
{
  return server.IndexList.Count;
}

function IsDuplicateIndexName(server, name)
{
  if(GetIndex(server, name) == null)
    return false;
  return true;
}

function GetIndexProperties(server, index_name)
{
  try
  {
    var index = GetIndex(server, index_name);
	return index.Properties;
  }
  catch(e)
  {
    alert("Error in GetProperties: " + e.number + " - " + e.description);
  } 
}

function GetProperty(props, name)
{
  try
  {
    var propEnum = new Enumerator(props);
  
    for(; !propEnum.atEnd(); propEnum.moveNext())
    {
      var prop_name = propEnum.item().Id(1);
	  if(prop_name == name)
	  {
	    return propEnum.item();
      }
    }
	
	alert("no such property in this properties list");
	return "";
  }
  catch(e)
  {
    alert("error in GetProperty():" + e);
  } 
}

function GetPropValue(props, prop_name)
{
  var prop_enum = new Enumerator(props);
  for(; !prop_enum.atEnd(); prop_enum.moveNext())
  {
    if(prop_enum.item().Id(1) == prop_name)
	  return prop_enum.item().Value;
  }
  
  return null;
}

function GetPropValues(props, prop_name)
{
  var prop_enum = new Enumerator(props);
  for(; !prop_enum.atEnd(); prop_enum.moveNext())
  {
    if(prop_enum.item().Id(1) == prop_name)
	{
	  var prop_val = prop_enum.item().Value;
	  
	  if(typeof(prop_val) == "unknown")
	  {
	    try
		{
		  var vb_array = new VBArray(prop_val);
		  var js_array = vb_array.toArray();
		  return js_array;
		}
		catch(e)
		{
		  alert("Error in GetPropValues: " + e.number + " - " + e.description);
		}
	  }
	}
  }
  
  return null;
}

function SetPropValue(props, prop_name, value)
{
  try
  {
    var prop_to_set = GetProperty(props, prop_name);

    if(value == "true")
      prop_to_set.Value = true;
    else if(value == "false")
      prop_to_set.Value = false;
    else
      prop_to_set.Value = value;

    props.Save();
  }
  catch(e)
  {
    alert("Error in SetProperty: " + e.number + " - " + e.description);
  }
}

function SetPropValues(props, prop_name, value_array)
{
  try
  {
    prop_to_set = GetProperty(props, prop_name);
	
	var num_elements = value_array.length;
    var vb_array = VBCreateArray(num_elements);
  
    for(var i = 0; i < value_array.length; i++)
      vb_array = VBSetElement(vb_array, i, value_array[i]);

    prop_to_set.Value = vb_array;
    props.Save();
  }
  catch(e)
  {
    alert("Error in SetPropValues: " + e.number + " - " + e.description);
  }
}

function BuildIndex(server, index_name)
{
  var index = GetIndex(server, index_name);
  index.BuildIndex();
}
