﻿/* 	Copyright 2008 Maximum Processing Inc
	
	ABOUT THIS SCRIPT

	
	Change Log
 	Created 12/02/2008 Nathan Townsend
*/


function Storage() {
  try{


    var _objects = new Array();


    this.AddComponent = function(Component, ID) {
      try{

        var p = new Pair(Component, ID);

        _objects[_objects.length] = p;

      } catch (err) { Log.Add("Storage.AddComponent", err, LogType.Error); }

    }


    this.GetComponent = function(ID) {
      try{

        for (var i = 0; i < _objects.length; i++) {

            var p = _objects[i];

            if (p.ID == ID)
                return p.Component;

        }

        return null;
        
      } catch (err) { Log.Add("Storage.GetComponent", err, LogType.Error); }
    }
		
		
		
    this.GetCount = function() {
      try{

        return _objects.length;
        
      } catch (err) { Log.Add("Storage.GetComponent", err, LogType.Error); }
    }
		
		this.GetItemArray = function()
		{
		  try{
  		  var _array = new Array();

	  		for(var i = 0; i<_objects.length; i++)
		  	{
			  	_array[i] = _objects[i].Component; 
			  }
			
			  return _array;
				
		  } catch (err) { Log.Add("Storage.GetItemArray", err, LogType.Error); }
		}


    this.Remove = function(ID) {
      try{
      
        var _newArray = new Array();

        for (var i = 0; i < _objects.length; i++) {

            var p = _objects[i];

            if (p.ID != ID)
                _newArray[_newArray.length] = p;
            else 
               p.Destroy();
        }

        _objects = _newArray;

      } catch (err) { Log.Add("Storage.Remove", err, LogType.Error); }
    }



    this.Reset = function() {
      try {
      
			  for(var i = 0; i<_objects.length; i++)
				  _objects[i].Destroy();
					
				_objects = null;
			
        _objects = new Array();
      
      } catch (err) { Log.Add("Storage.Reset", err, LogType.Error); }
    }


    function Pair(Component, ID) {
      try {
      
        this.Component = Component;
        this.ID = ID;
				
				this.Destroy = function()
				{
				  this.Component = null;
					this.ID = null;
				}
        
      } catch (err) { Log.Add("Storage.Pair", err, LogType.Error); }
    }

  } catch (err) { Log.Add("Storage", err, LogType.Error); }
}
