﻿// ----------------------------------------------
// File:		ProductFactory.js
// Author:		Nathan Derksen
// Description:	Class to handle converting product information from one data format to another
// Example:
// var productsArray = ProductFactory.convertXMLToArray(result.documentElement);
// ----------------------------------------------

var imageCodeMap = new Array();
imageCodeMap["1002item"] = {template:"[sku]_m_[v].jpg", type:"smallImg"};
imageCodeMap["1003item"] = {template:"[sku]_m_over_[v].jpg", type:"smallOverImg"};
imageCodeMap["1002group"] = {template:"[sku]_m_[v].jpg", type:"smallImg"};
imageCodeMap["1003group"] = {template:"[sku]_m_over_[v].jpg", type:"smallOverImg"};
imageCodeMap["1065item"] = {template:"[sku]_l_[v].jpg", type:"largeImg"};
imageCodeMap["1066item"] = {template:"[sku]_l_over_[v].jpg", type:"largeOverImg"};
imageCodeMap["1065group"] = {template:"[sku]_l_[v].jpg", type:"largeImg"};
imageCodeMap["1066group"] = {template:"[sku]_l_over_[v].jpg", type:"largeOverImg"};


// ----------------------------------------------
// Function:	ProductFactory()
// Author:		Nathan Derksen
// Description:	Base class
// Inputs:		<None>
// Returns:		<Nothing>
// ----------------------------------------------
function ProductFactory()
{
}

// ----------------------------------------------
// Function:	ProductFactory.convertXMLToArray()
// Author:		Nathan Derksen
// Description:	Converts an XML based product list to an array of objects
// Inputs:		<XMLDOM> xmlData: A DOM handle to the root xml node returned by an Ajax call
// Returns:		<Array>: An array of objects, with property names id, name, and price.
// ----------------------------------------------
ProductFactory.convertEngagementXMLToArray = function(xmlData, imageSize) {
	var groupsNode = null;
	var currentNode;
	var basePath = "";
	var tempObject;
	var returnArray = new Array();
	var imagePath = "";
	var imageOverPath = "";

	var i;
	var n;

	try {
		groupsNode = XMLUtils.getNode(xmlData, "groups");
		if (XMLUtils.getNodeValue(xmlData, "imagepath") != null) {
			basePath = XMLUtils.getNodeValue(xmlData, "imagepath");
		}

		if (groupsNode != null) {
			n = groupsNode.childNodes.length;
			for (i = 0; i < n; i++) {
				currentNode = groupsNode.childNodes[i];

				if (currentNode.nodeName.toLowerCase() == "group") {
					if (imageSize.toLowerCase() == "large") {
						imagePath = imageOverPath = XMLUtils.getNodeValue(currentNode, "lrgImage");
					}
					else {
						imagePath = imageOverPath = XMLUtils.getNodeValue(currentNode, "medImage");
					}

					tempObject = { id: XMLUtils.getNodeAttribute(currentNode, "groupID"),
						name: XMLUtils.getNodeValue(currentNode, "rolloverName"),
						price: null,
						qs: "",
						smallImg: "/local/" + locale + "/Images/txt/placeholder_m.gif",
						smallOverImg: "/local/" + locale + "/Images/txt/placeholder_m_over.gif",
						largeImg: "/local/" + locale + "/Images/txt/placeholder_l.gif",
						largeOverImg: "/local/" + locale + "/Images/txt/placeholder_l_over.gif"
					};
					tempObject.isGroup = true;
					tempObject.isPurchaseable = false;

					tempObject.smallImg = basePath + imagePath;
					tempObject.smallOverImg = basePath + imageOverPath;

					returnArray.push(tempObject);
				}
			}
		}
	}
	catch (err) {
		Debug.error(err);
	}
	return returnArray;
};
