// object_data.js
// System for caching object info locally
var ODS_Assets = new Object; // Stores info about all the individual assets.
var ODS_ObjectAssets = new Object; // Stores info about which oiis have which assets.
var ODS_Superpacks = new Object;

// ***** ASSET DATA *****

// Save the actual asset data.
function ODS_set_asset(asset_id, Asset) {
	ODS_Assets[asset_id] = Asset;
}

function ODS_get_asset(asset_id) {
	if (ODS_Assets[asset_id]) return ODS_Assets[asset_id];
	else return null;
}

// ***** ASSET/OII ASSOCIATIONS *****

// Add an asset_id to the list of assets that are attached to a particular oii.
function ODS_set_asset_assoc(oii, asset_id) {
	if (ODS_ObjectAssets[oii] == null) {
		ODS_ObjectAssets[oii] = new Array;
	}

	ODS_ObjectAssets[oii][asset_id] = asset_id;
}

// Given an OII, get an array of the asset IDs that are associated with it.
function ODS_get_asset_assoc(oii) {
	if (ODS_ObjectAssets[oii]) return ODS_ObjectAssets[oii];
	else return new Array;
}

// ***** SUPERPACK DATA *****

// Save the actual asset data.
function ODS_set_superpack_child(superpack_oii, child_oii) {
	if (ODS_Superpacks[superpack_oii] == null) ODS_Superpacks[superpack_oii] = new Array;
	ODS_Superpacks[superpack_oii][child_oii] = child_oii;
}

function ODS_get_superpack(superpack_oii) {
	if (ODS_Superpacks[superpack_oii]) return ODS_Superpacks[superpack_oii];
	else return null;
}

// ***** PARSING *****

// Given an asset string, parse it and cache the embedded data into the asset cache objects ODS_Assets and ODS_ObjectAssets.
function ODS_parse_asset_data(asset_str) {
	var asset_arr = asset_str.split("&");
	var len1 = asset_arr.length;
	for (var i = 0; i < len1; i++) {
		var Asset = new Object;
		var asset_fields_arr = asset_arr[i].split("|");
		var len2 = asset_fields_arr.length;
		for (var j = 0; j < len2; j++) {
			var field_parts_arr = asset_fields_arr[j].split(":");
			Asset[field_parts_arr[0]] = field_parts_arr[1];
		}
		ODS_set_asset(Asset['asset_id'], Asset);
		ODS_set_asset_assoc(Asset['oii'], Asset['asset_id']);
	}
}

// Parse a superpack string, which is of the format "{superpack_oii}:{child1_oii},{child2_oii},..."
function ODS_parse_superpack_data(superpack_str) {
	var parts_arr = superpack_str.split(":");
	var superpack_oii = parts_arr[0];
	var children_arr = parts_arr[1].split(",");
	for (var i in children_arr) {
		ODS_set_superpack_child(superpack_oii, children_arr[i]);
	}
}

