var colorMap = new Object();
colorMap[38] = new Array("4","5","8");
colorMap[101] = new Array("4","8");
colorMap[102] = new Array("4","14","15");
colorMap[113] = new Array("16","17","18");
colorMap[126] = new Array("4","8","19");
colorMap[127] = new Array("4","14","15");
colorMap[128] = new Array("4","14","15");
colorMap[129] = new Array("4","14","15");
colorMap[134] = new Array("4","5","20");
colorMap[136] = new Array("4","5","8");

function CategoryNode(id, name, productTypeId) {
   //members
   this.Id = id;
   this.Name = name;
   this.DropdownName = name;
   this.Children = new Array(0);
   this.ProductTypeId = productTypeId;
   this.Parent = null;
   this.Visible = false; 
   this.ProdTypeList  = null;
   this.QueryTerms = new Array(); 
   this.LinkColor = null;
   
 
   //methods
   this.AddChild = AddChild;
   this.DrawSelf = DrawSelf;
   this.DrawTree = DrawTree;
   this.GetRoot = GetRoot;
   this.IsAnAncestorOfAny = IsAnAncestorOfAny;
   this.InitiateDrawAsExpandedNode = InitiateDrawAsExpandedNode;
   this.MakeVisible = MakeVisible;
   this.GetNodeById = GetNodeById;
   this.GetNodesByIds = GetNodesByIds;
   this.GetNodeByQueryTerm = GetNodeByQueryTerm;
   this.InitVisibility = InitVisibility;
   this.GetProductTypeString = GetProductTypeString; 
   this.GetProdTypeMatches = GetProdTypeMatches;
   this.GetProductTypeList = GetProductTypeList;
   this.GetQueryTermList = GetQueryTermList;
   this.IsGrandparent = IsGrandparent;
   this.GetSexyGraphic = GetSexyGraphic;
   
}

function GetSexyGraphic() {
	if (this.ProductTypeId == null) {
		return "";
	}
	
	var mySexyColors = colorMap[this.ProductTypeId];
	var retVal = "/content/createandbuy/img/product_examples/" + this.ProductTypeId;

	if (mySexyColors != null) {
		len = mySexyColors.length;
		if (len > 0) {
			retVal += "_c" + mySexyColors[Math.round(Math.random()*(len-1))];		
		}
	}
	
	retVal += ".jpg";
	return retVal;
}
 
function InitVisibility(arrayOfProductTypeIds) {
//	alert('in EC.initVisibility with ProductTypeId: ' + this.ProductTypeId + ' with array:' + arrayOfProductTypeIds);
	if (this.ProductTypeId != null) {
		for (var i = 0; i < arrayOfProductTypeIds.length; i++) {
			if (this.ProductTypeId == "" + arrayOfProductTypeIds[i]) {
				this.MakeVisible();
				break;
			} 
		}
	}
	for (var i = 0; i < this.Children.length; i++) {
		this.Children[i].InitVisibility(arrayOfProductTypeIds);
	}
}
 
function GetNodeById(id) {
	if (this.Id == id) {
		return this;
	} else {
		var tempNode;
		for (var i = 0; i < this.Children.length; i++) {
			if ((tempNode = this.Children[i].GetNodeById(id)) != null) {
				return tempNode;
			}
		}
	}
	return null;
}

function GetNodesByIds(ids) {
	
	var retVal = new Array();
	if (ids != null) {
		var idArray = splitStringToArray(ids,',');
		//var idArray = ids.split(',');
		var tempNode = null;
		for (var i = 0; i < idArray.length; i++) {
			if ((tempNode = this.GetNodeById(idArray[i])) != null) {
				retVal[retVal.length] = tempNode;
			}
		}
	}
	return retVal;
}

function GetNodeByQueryTerm(term) {
	if (IsPresentInArray(term, this.QueryTerms)) {
		return this;
	} else {
		var tempNode = null;
		for (var i = 0; i < this.Children.length; i++) {
			tempNode = this.Children[i].GetNodeByQueryTerm(term);
			if (tempNode != null) {
				return tempNode;
			}
		}
	}
	return null;
}

function IsPresentInArray(target, arrayInQuestion) {
	for (var i = 0; i < arrayInQuestion.length; i++) {
		if (target == arrayInQuestion[i]) {
			return true;
		}
	}
	return false;
}
	
 
function MakeVisible() {
	
	if (this.Visible) {
		return;
	}

	this.Visible = true;
	if (this.Parent != null) {
		this.Parent.MakeVisible();
	}
}
 
function IsAnAncestorOfAny(nodes) {
	var retVal = false;
	var ancestor = null;
	for (var i = 0; i < nodes.length; i++) {
		ancestor = nodes[i];
		while (ancestor != null) {
			if (this == ancestor) {
				return true;
			}
			ancestor = ancestor.Parent;
		}
	}
	return retVal;
}

function IsGrandparent() {
	var retVal= false;
	for (var i = 0;i < this.Children.length; i++) {
		if (this.Children[i].Children.length > 0) {
			retVal = true;
			break;
		}
	}
	return retVal;
}
 
function GetRoot() {
 var root = this;
 while (root.Parent != null) {
  root = root.Parent;
 }
 return root;
}
 
 function GetProductTypeList() {
 
 	if (this.ProdTypeList == null) {
 		this.ProdTypeList = new Array(0);
 		for (var i = 0; i < this.Children.length; i++) {
 		
 			var kidsArray = this.Children[i].GetProductTypeList();
 			for (var j = 0; j < kidsArray.length; j++) {
 				this.ProdTypeList[this.ProdTypeList.length] = kidsArray[j];
 			}
 		}
 		if (this.ProductTypeId != null) {
 			this.ProdTypeList[this.ProdTypeList.length]= this.ProductTypeId;
 		}
 	}
 	return this.ProdTypeList;
 }

 function GetQueryTermList() {
 	var retVal = new Array();
 	//go though all children, and add their contributions
 	var tempTerms = null;
 	for (var i = 0; i < this.Children.length; i++) {
 		//alert(this.Name + ' ' + i);
 		tempTerms = this.Children[i].GetQueryTermList();
 		for (var j = 0; j < tempTerms.length; j++) {
 			retVal[retVal.length] = tempTerms[j];
 		}
 	}
 	//then add mine and return it
 	for (var i = 0; i < this.QueryTerms.length; i++) {
		retVal[retVal.length] = this.QueryTerms[i];
	}
 	return retVal;
 }
 
function GetProductTypeString() {
	var retVal = "";
	var list = this.GetProductTypeList();
	for (var i = 0; i < list.length; i++) {
		retVal += list[i] + ","
	}
	return retVal.length == 0 ? retVal : retVal.substring(0,retVal.length-1);

}

function GetProdTypeMatches(prodTypeArray) { 
	var prodTypeMap = new Object();
	var productTypeList = this.GetProductTypeList();
	for (var i = 0; i <  productTypeList.length; i++) {
		prodTypeMap[productTypeList[i]] = true;
	}
	
	
	var prodTypeMatches = new Array();
	for (var i = 0; i < prodTypeArray.length; i++) {
		if (prodTypeMap[prodTypeArray[i]]) {
			prodTypeMatches[prodTypeMatches.length] = prodTypeArray[i];
		}
	}
	return prodTypeMatches;
}
 
function DrawSelf(indent, isExpanded, productTypeString, url) {  
	var self = "";
	var paddingLeft = 8;
	
	if (indent - 1 > 0) {
		for (var i = 0; i < indent; i++) {
			paddingLeft += 8;
			//self += '<img border="0" src="/cp/browse/v0.1/images/trans.gif" width="8">';
		}
	}
	
	var isBold = isExpanded || this.Parent == null;  if (isBold) {
	if (this.Parent == null) {
		//self +='<img border="0" src="/cp/browse/v0.1/images/trans.gif" width="8">';
	} else {
		self +='<img border="0" src="/content/global/img/arrow_small.gif">';
	}
		self += '<b>' + this.Name + '</b>';
	} else {
		var myProductTypes = this.GetProductTypeString();
		self +='<a';
		if (this.LinkColor != null) {
			self += ' style="color:' + this.LinkColor + ';" ';
		}
		self += ' href="' + url + '&p=1&c=' + this.Id + '&fpt=' + encodeProdTypeStr(myProductTypes) + '">';
		self +=this.Name;
		self +='</a>';
	}
	document.write('<div class="xsmallText" style="padding-left:' + paddingLeft + 'px;">'); 
	document.write(self);
	document.write('</div>');
}


// JavaScript only pretends to support method overloading: http://weblogs.asp.net/jgalloway/archive/2005/10/02/426345.aspx
// for backwards compatibility, delete 6 argument call after Feb.
function DrawTree(level, expandedNodes, productTypeString, queryOrUrl, subtopics, resultsPerPage) {
	if(arguments.length == 6) {
		var baseUrl = "/cp/search/search.aspx?q=" + queryOrUrl + "&st=" + subtopics + "&rpp=" + resultsPerPage;
		this.DrawTree(level, expandedNodes, productTypeString, baseUrl);
	} else {
		var shouldDrawChildren = this.IsAnAncestorOfAny(expandedNodes) || this.Parent == null;
		this.DrawSelf(level, this.IsAnAncestorOfAny(expandedNodes),productTypeString, queryOrUrl);
		for (var i = 0; i < this.Children.length; i++) {
			if (this.Children[i].Id == 5) {
				//alert(this.Children[i].Visible);
			}
			if (this.Children[i].Visible && shouldDrawChildren) {
				this.Children[i].DrawTree(level + 1, expandedNodes,productTypeString, queryOrUrl);
			}
		}
	}
}
 
function AddChild(child) {
 this.Children[this.Children.length] = child;
 child.Parent = this;
 
}
 
function InitiateDrawAsExpandedNode() {
 this.GetRoot().DrawTree(0,this);
}

var key = "_aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789-";
var chunk = 6;

function decodeProdTypeStr(str)
{
	var mag, idx, c
	var val = "";
	for(var i = 0; i < str.length; i++)
	{
		c = str.charAt(i);
		idx = key.indexOf(c);
		if(idx != -1)
		{
			mag = chunk-1;
			while(mag > -1)
			{
				if((idx & Math.pow(2,mag)) != 0)
				{
					val += ((i * chunk) + ((chunk-1) - mag)) + ",";
				}
				mag--;
			}
		}
	}
	return val.substring(0,val.length-1);
}

function encodeProdTypeStr(str)
{
	var nums = splitStringToArray(str,',');
	var num;
	var max = 0;
	var bitArray = new Array();
	for(var i = 0; i < nums.length; i++)
	{
		num = parseInt(nums[i]);
		if(!isNaN(num) && num != undefined)
		{
			max = Math.max(max,num);
			bitArray[num] = "1";
		}
	}

	var temp = 0;
	var shift = chunk-1;
	var retVal = "";
	var i = 0;
	for(i = 0; i < bitArray.length; i++)
	{
		if(i % chunk == 0 && i != 0)
		{
			retVal += key.charAt(temp);
			temp = 0;
			shift = chunk-1;
		}
		if(bitArray[i] == "1")
		{
			temp += Math.pow(2,shift);
		}
		shift--;
	}
	if(temp != 0)
	{
		retVal += key.charAt(temp);
	}
	return retVal;
}

var MarketplaceCategories = new Object(); var ProductTypeNodes = new 
Object();
 
var counter = 0;

/*******************************************************************/

//---> ByProductType TAXONOMY START
var ByProductType = new CategoryNode(0, 'By Product Type');

var Shirts = new CategoryNode(1, 'Shirts & Clothing');
ByProductType.AddChild(Shirts);
	Shirts.QueryTerms[Shirts.QueryTerms.length] = 'Shirt';
	Shirts.QueryTerms[Shirts.QueryTerms.length] = 'Shirts';
	Shirts.QueryTerms[Shirts.QueryTerms.length] = 'Clothing';
	Shirts.QueryTerms[Shirts.QueryTerms.length] = 'Clothng';
	Shirts.QueryTerms[Shirts.QueryTerms.length] = 'Clothes';
	Shirts.QueryTerms[Shirts.QueryTerms.length] = 'Cloths';
	Shirts.QueryTerms[Shirts.QueryTerms.length] = 'Apparrel';
	Shirts.QueryTerms[Shirts.QueryTerms.length] = 'Apparel';
	Shirts.QueryTerms[Shirts.QueryTerms.length] = 'Aparrel';
	Shirts.QueryTerms[Shirts.QueryTerms.length] = 'Aparel';


	var Tees = new CategoryNode(2, 'Tees & Tank Tops');
	Tees.QueryTerms[Tees.QueryTerms.length] = 'Tee Shirt';
	Tees.QueryTerms[Tees.QueryTerms.length] = 'Tee-shirt';
	Tees.QueryTerms[Tees.QueryTerms.length] = 'T-shirt';
	Tees.QueryTerms[Tees.QueryTerms.length] = 'T Shirt'; 
	Tees.QueryTerms[Tees.QueryTerms.length] = 't-shirt';
	Shirts.AddChild(Tees);
 
 
	var LongSleeved = new CategoryNode(3, 'Long-sleeved Shirts');
	Tees.AddChild(LongSleeved);
		LongSleeved.QueryTerms[LongSleeved.QueryTerms.length] = 'Long sleeved';
		LongSleeved.QueryTerms[LongSleeved.QueryTerms.length] = 'Long-sleeved';
		LongSleeved.QueryTerms[LongSleeved.QueryTerms.length] = 'Long sleeves';
		LongSleeved.QueryTerms[LongSleeved.QueryTerms.length] = 'Long-sleeve';
			
		LongSleeved.AddChild(new CategoryNode(4, 'Baseball Jersey',38));
		LongSleeved.AddChild(new CategoryNode(5, 'Jr. Raglan',102));
		LongSleeved.AddChild(new CategoryNode(6, 'Kids Baseball Jersey',136));
		LongSleeved.AddChild(new CategoryNode(7, 'Long Sleeve T-Shirt',5));

	var ShortSleeved = new CategoryNode(8, 'Short-sleeved Shirts');
	Tees.AddChild(ShortSleeved);
		ShortSleeved.QueryTerms[ShortSleeved.QueryTerms.length] = 'Short sleeved';
		ShortSleeved.QueryTerms[ShortSleeved.QueryTerms.length] = 'Short-sleeved';
		ShortSleeved.QueryTerms[ShortSleeved.QueryTerms.length] = 'Short sleeves';
		ShortSleeved.QueryTerms[ShortSleeved.QueryTerms.length] = 'Short-sleeve';
		ShortSleeved.AddChild(new CategoryNode(338, "Women's Black T-Shirt",161)); 
		ShortSleeved.AddChild(new CategoryNode(339, "Black Fitted T-Shirt",159)); 
		ShortSleeved.AddChild(new CategoryNode(9, "Black T-Shirt",152));
		ShortSleeved.AddChild(new CategoryNode(10, 'Ash Grey T-Shirt',7));
		ShortSleeved.AddChild(new CategoryNode(11, 'Fitted T-Shirt',106));
		ShortSleeved.AddChild(new CategoryNode(12, 'Green T-Shirt',108));
		ShortSleeved.AddChild(new CategoryNode(13, 'Jr. Baby Doll T-Shirt',6));
		ShortSleeved.AddChild(new CategoryNode(14, 'Golf Shirt',45));
		ShortSleeved.AddChild(new CategoryNode(15, 'Yellow T-Shirt',107));
		ShortSleeved.AddChild(new CategoryNode(16, "Women's T-Shirt",89));
		ShortSleeved.AddChild(new CategoryNode(17, "Women's Pink T-Shirt",109));
		ShortSleeved.AddChild(new CategoryNode(18, 'White T-Shirt',2));
		ShortSleeved.AddChild(new CategoryNode(19, 'Value T-shirt',112));
		ShortSleeved.AddChild(new CategoryNode(20, 'Organic Cotton Tee',111));
		ShortSleeved.AddChild(new CategoryNode(21, 'Ringer T',126));
		ShortSleeved.AddChild(new CategoryNode(22, "Women's Cap Sleeve Tee",134));
		ShortSleeved.AddChild(new CategoryNode(23, 'Dog T-Shirt',110));
		ShortSleeved.AddChild(new CategoryNode(24, "Men's Sleeveless Tee",115));
		ShortSleeved.AddChild(new CategoryNode(25, 'Jr. Ringer T-Shirt',113));
   
	var Tanks = new CategoryNode(26, 'Tank Tops & Camisoles');
	Tanks.QueryTerms[Tanks.QueryTerms.length] = 'Tank Tops';
	Tees.AddChild(Tanks);
		Tanks.AddChild(new CategoryNode(27, 'Camisole',87));
		Tanks.AddChild(new CategoryNode(28, 'Jr. Spaghetti Tank',96));
		Tanks.AddChild(new CategoryNode(29, "Women's Tank Top",114));
 
	var Intimates = new CategoryNode(30, 'Intimates');
	Shirts.AddChild(Intimates);
		Intimates.AddChild(new CategoryNode(31, 'Classic Thong',80));
		Intimates.AddChild(new CategoryNode(32, 'Boxer Shorts',15));
		Intimates.AddChild(new CategoryNode(33, 'Camisole',87));

	var Jackets = new CategoryNode(34, 'Jackets & Sweatshirts');
	Shirts.AddChild(Jackets);
		Jackets.AddChild(new CategoryNode(35, 'Hooded Sweatshirt',23));
		Jackets.AddChild(new CategoryNode(36, 'Jr. Hoodie',103));
		Jackets.AddChild(new CategoryNode(37, 'Kids Hoodie',133));
		Jackets.AddChild(new CategoryNode(38, 'Kids Sweatshirt',135));
		Jackets.AddChild(new CategoryNode(39, 'Sweatshirt',4));
		Jackets.AddChild(new CategoryNode(40, "Women's Raglan Hoodie",128));
		Jackets.AddChild(new CategoryNode(41, "Women's Tracksuit",129));
 
	var Kids = new CategoryNode(42, "Kid's Clothing");
	Shirts.AddChild(Kids);
		Kids.AddChild(new CategoryNode(43, 'Bib',73));
		Kids.AddChild(new CategoryNode(44, 'Infant Creeper',72));
		Kids.AddChild(new CategoryNode(45, 'Infant/Toddler T-Shirt',69));
		Kids.AddChild(new CategoryNode(46, 'Kids T-Shirt',70));
		Kids.AddChild(new CategoryNode(47, 'Kids Hoodie',133));
		Kids.AddChild(new CategoryNode(48, 'Kids Sweatshirt',135));
		Kids.AddChild(new CategoryNode(49, 'Kids Baseball Jersey',136));
		Kids.AddChild(new CategoryNode(50, 'Toddler Raglan',127));

var Hats = new CategoryNode(51, 'Hats & Caps');
ByProductType.AddChild(Hats);
	Hats.AddChild(new CategoryNode(52, 'Black Cap',65));
	Hats.AddChild(new CategoryNode(53, 'Trucker Hat',101));
	Hats.AddChild(new CategoryNode(54, 'Cap',140));

var Bags = new CategoryNode(55, 'Bags & Backpacks');
ByProductType.AddChild(Bags);
	Bags.AddChild(new CategoryNode(56, 'Messenger Bag',18));
	Bags.AddChild(new CategoryNode(57, 'Tote Bag',17));

var Cards = new CategoryNode(58, 'Cards, Calendars & Prints');
Cards.DropdownName = 'Cards & Calendars';
ByProductType.AddChild(Cards);
	var CardsProper = new CategoryNode(59, 'Cards');
	Cards.AddChild(CardsProper);
		CardsProper.AddChild(new CategoryNode(60, 'Postcards (Pkg of 8)',77));
		CardsProper.AddChild(new CategoryNode(61, 'Greeting Cards (Pkg of 6)',78));
		CardsProper.AddChild(new CategoryNode(62, 'Custom Postage',131));
		CardsProper.AddChild(new CategoryNode(63, 'Postage Pal&trade; ',151))

	var Prints = new CategoryNode(64, 'Prints & Posters');
	Cards.AddChild(Prints);
		Prints.AddChild(new CategoryNode(65, 'Framed Panel Print',82));
		Prints.AddChild(new CategoryNode(66, 'Large Framed Print',59));
		Prints.AddChild(new CategoryNode(67, 'Large Poster',54));
		Prints.AddChild(new CategoryNode(68, 'Mini Poster Print',92));
		Prints.AddChild(new CategoryNode(69, 'Small Framed Print',58));
		Prints.AddChild(new CategoryNode(70, 'Small Poster',53));
		Prints.AddChild(new CategoryNode(71, 'Calendar Print',74));

	var Calendars = new CategoryNode(72, 'Calendars & Journals');
	Cards.AddChild(Calendars);
		Calendars.AddChild(new CategoryNode(73, 'Calendar Print',74));
		Calendars.AddChild(new CategoryNode(74, 'Wall Calendar',75));
		Calendars.AddChild(new CategoryNode(75, 'Journal',100));

var StickersEtc = new CategoryNode(76, 'Stickers, Buttons & Magnets');
StickersEtc.DropdownName = 'Stickers & Magnets';
ByProductType.AddChild(StickersEtc);
	var Stickers = new CategoryNode(77, 'Stickers');
	StickersEtc.AddChild(Stickers);
		Stickers.AddChild(new CategoryNode(78, 'Sticker (Bumper)',90));
		Stickers.AddChild(new CategoryNode(79, 'Sticker (Oval)',51));
		Stickers.AddChild(new CategoryNode(80, 'Sticker (Rectangular)',50));
		Stickers.AddChild(new CategoryNode(81, 'Postage Pal&trade; ',151))

	var Buttons = new CategoryNode(82, 'Buttons');
	StickersEtc.AddChild(Buttons);
		Buttons.AddChild(new CategoryNode(83, 'Button',118));
		Buttons.AddChild(new CategoryNode(84, '2.25" Button (10 pack)',120));
		Buttons.AddChild(new CategoryNode(85, '2.25" Button (100 pack)',121));
		Buttons.AddChild(new CategoryNode(86, 'Mini Button, 1 in.',141));
		Buttons.AddChild(new CategoryNode(87, 'Mini Button, 1 in. (10 pack)',142));
		Buttons.AddChild(new CategoryNode(88, 'Mini Button, 1 in. (100 pack)',143));

	var Magnets = new CategoryNode(89, 'Magnets');
	StickersEtc.AddChild(Magnets);
		Magnets.AddChild(new CategoryNode(90, '2.25" Magnet (10 pack)',122));
		Magnets.AddChild(new CategoryNode(91, '2.25" Magnet (100 pack)',123));
		Magnets.AddChild(new CategoryNode(92, 'Magnet',119));
		Magnets.AddChild(new CategoryNode(93, 'Rectangle Magnet',137));
		Magnets.AddChild(new CategoryNode(94, 'Rectangle Magnet (10 pack)',138));
		Magnets.AddChild(new CategoryNode(95, 'Rectangle Magnet (100 pack)',139));


var Toys = new CategoryNode(96, 'Toys & Gadgets');
ByProductType.AddChild(Toys);
	Toys.AddChild(new CategoryNode(97, 'Teddy Bear',26));
	Toys.AddChild(new CategoryNode(98, 'License Plate Frame',52));
	Toys.AddChild(new CategoryNode(99, 'Mini Button, 1 in.',141));
	Toys.AddChild(new CategoryNode(100, 'Rectangle Magnet',137));

var MugsAndHousewares = new CategoryNode(101, 'Mugs & Housewares');
ByProductType.AddChild(MugsAndHousewares);
	var Mugs = new CategoryNode(102, 'Mugs');
	MugsAndHousewares.AddChild(Mugs);
		Mugs.AddChild(new CategoryNode(103, 'Mug',0));
		Mugs.AddChild(new CategoryNode(104, 'Stein',11));
		Mugs.AddChild(new CategoryNode(105, 'Large Mug',1));

	var Housewares = new CategoryNode(106, 'Housewares');
	MugsAndHousewares.AddChild(Housewares);
		Housewares.AddChild(new CategoryNode(107,'BBQ Apron',42));
		Housewares.AddChild(new CategoryNode(108, 'Light Switch Cover',132));
		Housewares.AddChild(new CategoryNode(109, 'Framed Tile',147));
		Housewares.AddChild(new CategoryNode(110, 'Custom Postage',131));
			var pillow = new CategoryNode(111, 'Throw Pillow',125);
			pillow.QueryTerms[pillow.QueryTerms.length] = 'Throw Pillow';
		Housewares.AddChild(pillow);
		
		Housewares.AddChild(new CategoryNode(112, 'Wall Clock',49));
		Housewares.AddChild(new CategoryNode(113, 'Tile Coaster',37));
		Housewares.AddChild(new CategoryNode(114, 'Tile Box',86));
		Housewares.AddChild(new CategoryNode(115, 'Mousepad',3));
		var ovalOrnament = new CategoryNode(116, 'Ornament (Oval)',105);
		ovalOrnament.QueryTerms[ovalOrnament.QueryTerms.length] = 'ornament';
		ovalOrnament.QueryTerms[ovalOrnament.QueryTerms.length] = 'ornaments';
		Housewares.AddChild(ovalOrnament);
		Housewares.AddChild(new CategoryNode(117, 'Ornament (Round)',124));

var Books = new CategoryNode(118, 'Books & Magazines',97);
ByProductType.AddChild(Books);
	Books.QueryTerms[Books.QueryTerms.length] = 'book';
	Books.QueryTerms[Books.QueryTerms.length] = 'Books';

var CDs = new CategoryNode(119, 'Music & Data CDs');
ByProductType.AddChild(CDs);
	CDs.QueryTerms[CDs.QueryTerms.length] = 'cd';
	CDs.QueryTerms[CDs.QueryTerms.length] = 'cds';
	CDs.AddChild(new CategoryNode(120, 'Audio CD',93));
	CDs.AddChild(new CategoryNode(121, 'Data CD',94));
	
//---> ByProductType TAXONOMY END


//---> ByRecipient TAXONOMY START
var ByRecipient = new CategoryNode(140, 'By Recipient');

var Him =  new CategoryNode(141, 'Gifts For Him');
ByRecipient.AddChild(Him);
		Him.AddChild(new CategoryNode(343, 'Black Fitted T-shirt',159)); 
		Him.AddChild(new CategoryNode(344, 'Black Long Sleeve T-Shirt',155)); 
	Him.AddChild(new CategoryNode(142, 'Black T-Shirt',152));
	Him.AddChild(new CategoryNode(143, 'Button',118));
	Him.AddChild(new CategoryNode(144, 'Throw Pillow',125));
	Him.AddChild(new CategoryNode(145, 'Ringer T',126));
	Him.AddChild(new CategoryNode(146, 'Organic Cotton Tee',111));
	Him.AddChild(new CategoryNode(147, 'Value T-shirt',112));
	Him.AddChild(new CategoryNode(148, "Men's Sleeveless Tee",115));
	Him.AddChild(new CategoryNode(149, 'Fitted T-Shirt',106));
	Him.AddChild(new CategoryNode(150, 'Yellow T-Shirt',107));
	Him.AddChild(new CategoryNode(151, 'Green T-Shirt',108));
	Him.AddChild(new CategoryNode(152, 'Baseball Jersey',38));
	Him.AddChild(new CategoryNode(153, 'White T-Shirt',2));
	Him.AddChild(new CategoryNode(154, 'Ash Grey T-Shirt',7));
	Him.AddChild(new CategoryNode(155, 'Golf Shirt',45));
	Him.AddChild(new CategoryNode(156, 'Long Sleeve T-Shirt',5));
	Him.AddChild(new CategoryNode(157, 'Hooded Sweatshirt',23));
	Him.AddChild(new CategoryNode(158, 'Sweatshirt',4));
	Him.AddChild(new CategoryNode(159, 'Boxer Shorts',15));
	Him.AddChild(new CategoryNode(160, 'Black Cap',65));
	Him.AddChild(new CategoryNode(161, 'Trucker Hat',101));
	Him.AddChild(new CategoryNode(162, 'Stein',11));

var Her =  new CategoryNode(163, 'Gifts For Her');
ByRecipient.AddChild(Her);
		Her.AddChild(new CategoryNode(345, "Women's Black T-Shirt",161)); 
	Her.AddChild(new CategoryNode(164, 'Black T-Shirt',152)); 
	Her.AddChild(new CategoryNode(165, "Women's Cap Sleeve Tee",134));
	Her.AddChild(new CategoryNode(166, 'Button',118));
	Her.AddChild(new CategoryNode(167, 'Throw Pillow',125));
	Her.AddChild(new CategoryNode(168, "Women's Raglan Hoodie",128));
	Her.AddChild(new CategoryNode(169, "Women's Tracksuit",129));
	Her.AddChild(new CategoryNode(170, 'Jr. Ringer T-Shirt',113));
	Her.AddChild(new CategoryNode(171, 'Organic Cotton Tee',111));
	Her.AddChild(new CategoryNode(172, 'Value T-shirt',112));
	Her.AddChild(new CategoryNode(173, "Women's Tank Top",114));
	Her.AddChild(new CategoryNode(174, 'Yellow T-Shirt',107));
	Her.AddChild(new CategoryNode(175, 'Green T-Shirt',108));
	Her.AddChild(new CategoryNode(176, "Women's Pink T-Shirt",109));
	Her.AddChild(new CategoryNode(177, 'Jr. Raglan',102));
	Her.AddChild(new CategoryNode(178, 'Jr. Hoodie',103));
	Her.AddChild(new CategoryNode(179, 'White T-Shirt',2));
	Her.AddChild(new CategoryNode(180, 'Ash Grey T-Shirt',7));
	Her.AddChild(new CategoryNode(181, 'Long Sleeve T-Shirt',5));
	Her.AddChild(new CategoryNode(182, 'Jr. Baby Doll T-Shirt',6));
	Her.AddChild(new CategoryNode(183, "Women's T-Shirt",89));
	Her.AddChild(new CategoryNode(184, 'Jr. Spaghetti Tank',96));
	Her.AddChild(new CategoryNode(185, 'Sweatshirt',4));
	Her.AddChild(new CategoryNode(186, 'Boxer Shorts',15));
	Her.AddChild(new CategoryNode(187, 'Classic Thong',80));
	Her.AddChild(new CategoryNode(188, 'Camisole',87));
	Her.AddChild(new CategoryNode(189, 'Tile Box',86));
	Her.AddChild(new CategoryNode(190, 'Black Cap',65));
	Her.AddChild(new CategoryNode(191, 'Trucker Hat',101));
	Her.AddChild(new CategoryNode(192, 'Keepsake (Oval)',105));
	Her.AddChild(new CategoryNode(193, 'Keepsake (Round) ',124));

var KidsGifts =  new CategoryNode(194, 'Gifts For Kids & Baby');
ByRecipient.AddChild(KidsGifts);
	KidsGifts.AddChild(new CategoryNode(195, 'Teddy Bear',26));
	KidsGifts.AddChild(new CategoryNode(196, 'Kids Baseball Jersey',136));
	KidsGifts.AddChild(new CategoryNode(197, 'Kids Hoodie',133));
	KidsGifts.AddChild(new CategoryNode(198, 'Kids Sweatshirt',135));
	KidsGifts.AddChild(new CategoryNode(199, 'Throw Pillow',125));
	KidsGifts.AddChild(new CategoryNode(200, 'Kids T-Shirt',70));  
	KidsGifts.AddChild(new CategoryNode(201, 'Infant/Toddler T-Shirt',69));
	KidsGifts.AddChild(new CategoryNode(202, 'Infant Creeper',72));
	KidsGifts.AddChild(new CategoryNode(203, 'Bib',73));
	KidsGifts.AddChild(new CategoryNode(204, 'Keepsake (Oval)',105));
	KidsGifts.AddChild(new CategoryNode(205, 'Keepsake (Round)',124));

var Mom =  new CategoryNode(206, 'Gifts For Mom');
ByRecipient.AddChild(Mom);
	 Mom.AddChild(new CategoryNode(346, "Women's Black T-Shirt",161)); 
	Mom.AddChild(new CategoryNode(207, 'Black T-Shirt',152));
	Mom.AddChild(new CategoryNode(208, 'Large Mug',1));
	Mom.AddChild(new CategoryNode(209, 'Tote Bag',17));
	Mom.AddChild(new CategoryNode(210, 'Throw Pillow',125));
	Mom.AddChild(new CategoryNode(211, "Women's Raglan Hoodie",128));
	Mom.AddChild(new CategoryNode(212, "Women's Tracksuit",129));
	Mom.AddChild(new CategoryNode(213, "Women's Tank Top",114));
	Mom.AddChild(new CategoryNode(214, 'Yellow T-Shirt',107));
	Mom.AddChild(new CategoryNode(215, 'Green T-Shirt',108));
	Mom.AddChild(new CategoryNode(216, "Women's Pink T-Shirt",109));
	Mom.AddChild(new CategoryNode(217, 'Jr. Raglan',102));
	Mom.AddChild(new CategoryNode(218, 'Jr. Hoodie',103));
	Mom.AddChild(new CategoryNode(219, 'White T-Shirt',2));
	Mom.AddChild(new CategoryNode(220, 'Ash Grey T-Shirt',7));
	Mom.AddChild(new CategoryNode(221, 'Camisole',87));
	Mom.AddChild(new CategoryNode(222, 'Tile Box',86));
	Mom.AddChild(new CategoryNode(223, 'Keepsake (Oval)',105));
	Mom.AddChild(new CategoryNode(224, 'Keepsake (Round) ',124));

var Dad =  new CategoryNode(225, 'Gifts For Dad');
ByRecipient.AddChild(Dad);
		Dad.AddChild(new CategoryNode(347, 'Black Fitted T-shirt',159)); 
		Dad.AddChild(new CategoryNode(348, 'Black Long Sleeve T-Shirt',155)); 
	Dad.AddChild(new CategoryNode(226, 'Black T-Shirt',152));
	Dad.AddChild(new CategoryNode(227, 'Large Mug',1));
	Dad.AddChild(new CategoryNode(228, 'Stein',11));
	Dad.AddChild(new CategoryNode(229, 'Throw Pillow',125));
	Dad.AddChild(new CategoryNode(230, 'Ringer T',126));
	Dad.AddChild(new CategoryNode(231, 'Organic Cotton Tee',111));
	Dad.AddChild(new CategoryNode(232, "Men's Sleeveless Tee",115));
	Dad.AddChild(new CategoryNode(233, 'Fitted T-Shirt',106));
	Dad.AddChild(new CategoryNode(234, 'Yellow T-Shirt',107));
	Dad.AddChild(new CategoryNode(235, 'Green T-Shirt',108));
	Dad.AddChild(new CategoryNode(236, 'Baseball Jersey',38));
	Dad.AddChild(new CategoryNode(237, 'White T-Shirt',2));
	Dad.AddChild(new CategoryNode(238, 'Ash Grey T-Shirt',7));
	Dad.AddChild(new CategoryNode(239, 'Golf Shirt',45));

var Pets = new CategoryNode(240, 'Gifts For Pets');
ByRecipient.AddChild(Pets);
	Pets.AddChild(new CategoryNode(241, 'Dog T-Shirt',110));

//---> ByRecipient TAXONOMY END

//---> ByOccasion TAXONOMY START

var Occasion = new CategoryNode(242, 'By Occasion');
var Birthday = new CategoryNode(243, 'Birthday Gifts');
Occasion.AddChild(Birthday);
		Birthday.AddChild(new CategoryNode(349, "Women's Black T-Shirt",161)); 
		Birthday.AddChild(new CategoryNode(350, 'Black Fitted T-shirt',159));	
		Birthday.AddChild(new CategoryNode(351, 'Black Long Sleeve T-Shirt',155));
	Birthday.AddChild(new CategoryNode(244, 'Black T-Shirt',152));
	Birthday.AddChild(new CategoryNode(245, 'Throw Pillow',125));
	Birthday.AddChild(new CategoryNode(246, 'Value T-shirt',112));
	Birthday.AddChild(new CategoryNode(247, 'Yellow T-Shirt',107));
	Birthday.AddChild(new CategoryNode(248, 'Green T-Shirt',108));
	Birthday.AddChild(new CategoryNode(249, "Women's Pink T-Shirt",109));
	Birthday.AddChild(new CategoryNode(250, 'White T-Shirt',2));
	Birthday.AddChild(new CategoryNode(251, 'Long Sleeve T-Shirt',5));
	Birthday.AddChild(new CategoryNode(252, 'Tile Coaster',37));
	Birthday.AddChild(new CategoryNode(253, 'Tile Box',86));
	Birthday.AddChild(new CategoryNode(254, 'Wall Clock',49));
	Birthday.AddChild(new CategoryNode(255, 'Teddy Bear',26));
	Birthday.AddChild(new CategoryNode(256, 'Journal',100));
	Birthday.AddChild(new CategoryNode(257, 'Small Framed Print',58));
	Birthday.AddChild(new CategoryNode(258, 'Large Framed Print',59));
	Birthday.AddChild(new CategoryNode(259, 'Messenger Bag',18));
	Birthday.AddChild(new CategoryNode(260, 'Framed Tile',147));

var Congratulations = new CategoryNode(261, 'Congratulations Gifts');
	Occasion.AddChild(Congratulations);
		Congratulations.AddChild(new CategoryNode(352, "Women's Black T-Shirt",161));
		Congratulations.AddChild(new CategoryNode(353, 'Black Fitted T-shirt',159));	
		Congratulations.AddChild(new CategoryNode(354, 'Black Long Sleeve T-Shirt',155));
	Congratulations.AddChild(new CategoryNode(262, 'Black T-Shirt',152));
	Congratulations.AddChild(new CategoryNode(263, 'Large Mug',1));
	Congratulations.AddChild(new CategoryNode(264, 'Stein',11));
	Congratulations.AddChild(new CategoryNode(265, 'Button',118));
	Congratulations.AddChild(new CategoryNode(266, 'Magnet',119));
	Congratulations.AddChild(new CategoryNode(267, 'Throw Pillow',125));
	Congratulations.AddChild(new CategoryNode(268, 'Yellow T-Shirt',107));
	Congratulations.AddChild(new CategoryNode(269, 'Green T-Shirt',108));
	Congratulations.AddChild(new CategoryNode(270, "Women's Pink T-Shirt",109));
	Congratulations.AddChild(new CategoryNode(271, 'Trucker Hat',101));
	Congratulations.AddChild(new CategoryNode(272, 'Greeting Cards (Pkg of 6)',78));
	Congratulations.AddChild(new CategoryNode(273, 'Postcards (Pkg of 8)',77));
	Congratulations.AddChild(new CategoryNode(274, 'Mini Poster Print',92));

var NewBaby = new CategoryNode(275, 'New Baby Gifts');
Occasion.AddChild(NewBaby);
	NewBaby.AddChild(new CategoryNode(276, 'Teddy Bear',26));
	NewBaby.AddChild(new CategoryNode(277, 'Messenger Bag',18));
	NewBaby.AddChild(new CategoryNode(278, 'Infant/Toddler T-Shirt',69));
	NewBaby.AddChild(new CategoryNode(279, 'Infant Creeper',72));
	NewBaby.AddChild(new CategoryNode(280, 'Bib',73));

var JustBecause = new CategoryNode(281, 'Just Because');
Occasion.AddChild(JustBecause);
	JustBecause.AddChild(new CategoryNode(355, "Women's Black T-Shirt",161)); 
	JustBecause.AddChild(new CategoryNode(356, 'Black Fitted T-shirt',159));
	JustBecause.AddChild(new CategoryNode(357, 'Black Long Sleeve T-Shirt',155));
	JustBecause.AddChild(new CategoryNode(282, 'Black T-Shirt',152));
	JustBecause.AddChild(new CategoryNode(283, 'Mini Button, 1 in.',141));
	JustBecause.AddChild(new CategoryNode(284, '2.25" Button (10 pack)',120));
	JustBecause.AddChild(new CategoryNode(285, '2.25" Button (100 pack)',121));
	JustBecause.AddChild(new CategoryNode(286, 'Button',118));
	JustBecause.AddChild(new CategoryNode(287, 'Rectangle Magnet',137));
	JustBecause.AddChild(new CategoryNode(288, '2.25" Magnet (10 pack)',122));
	JustBecause.AddChild(new CategoryNode(289, '2.25" Magnet (100 pack)',123));
	JustBecause.AddChild(new CategoryNode(290, 'Magnet',119));
	JustBecause.AddChild(new CategoryNode(291, 'Throw Pillow',125));
	JustBecause.AddChild(new CategoryNode(292, 'Value T-shirt',112));
	JustBecause.AddChild(new CategoryNode(293, 'Dog T-Shirt',110));
	JustBecause.AddChild(new CategoryNode(294, 'Stein',11));
	JustBecause.AddChild(new CategoryNode(295, 'Wall Clock',49));
	JustBecause.AddChild(new CategoryNode(296, 'Journal',100));
	JustBecause.AddChild(new CategoryNode(297, 'Greeting Cards (Pkg of 6)',78));
	JustBecause.AddChild(new CategoryNode(298, 'Tote Bag',17));
	JustBecause.AddChild(new CategoryNode(299, 'Messenger Bag',18));

var Housewarming = new CategoryNode(300, 'Housewarming Gifts');
Occasion.AddChild(Housewarming);
	Housewarming.AddChild(new CategoryNode(301, 'Framed Tile',147));
	Housewarming.AddChild(new CategoryNode(302, '2.25" Button (10 pack)',120));
	Housewarming.AddChild(new CategoryNode(303, '2.25" Button (100 pack)',121));
	Housewarming.AddChild(new CategoryNode(304, 'Button',118));
	Housewarming.AddChild(new CategoryNode(305, '2.25" Magnet (10 pack)',122));
	Housewarming.AddChild(new CategoryNode(306, '2.25" Magnet (100 pack)',123));
	Housewarming.AddChild(new CategoryNode(307, 'Magnet',119));
	Housewarming.AddChild(new CategoryNode(308, 'Throw Pillow',125));
	Housewarming.AddChild(new CategoryNode(309, 'Value T-shirt',112));
	Housewarming.AddChild(new CategoryNode(310, 'Large Mug',1));
	Housewarming.AddChild(new CategoryNode(311, 'Stein',11));
	Housewarming.AddChild(new CategoryNode(312, 'Tile Box',86));
	Housewarming.AddChild(new CategoryNode(313, 'Wall Clock',49));
	Housewarming.AddChild(new CategoryNode('BBQ Apron',42));
	Housewarming.AddChild(new CategoryNode(314, 'Calendar Print',74));
	Housewarming.AddChild(new CategoryNode(315, 'Small Poster',53));
	Housewarming.AddChild(new CategoryNode(316, 'Large Poster',54));
	Housewarming.AddChild(new CategoryNode(317, 'Mini Poster Print',92));
	Housewarming.AddChild(new CategoryNode(318, 'Small Framed Print',58));
	Housewarming.AddChild(new CategoryNode(319, 'Large Framed Print',59));
	Housewarming.AddChild(new CategoryNode(320, 'Custom Postage',131));
	Housewarming.AddChild(new CategoryNode(321,'BBQ Apron',42));
	

var ThankYou = new CategoryNode(322, 'Thank You Gifts');
Occasion.AddChild(ThankYou);
	ThankYou.AddChild(new CategoryNode(323, '2.25" Button (10 pack)',120));
	ThankYou.AddChild(new CategoryNode(324, '2.25" Button (100 pack)',121));
	ThankYou.AddChild(new CategoryNode(325, 'Button',118));
	ThankYou.AddChild(new CategoryNode(326, '2.25" Magnet (10 pack)',122));
	ThankYou.AddChild(new CategoryNode(327, '2.25" Magnet (100 pack)',123));
	ThankYou.AddChild(new CategoryNode(328, 'Magnet',119));
	ThankYou.AddChild(new CategoryNode(329, 'Throw Pillow',125));
	ThankYou.AddChild(new CategoryNode(330, 'Value T-shirt',112));
	ThankYou.AddChild(new CategoryNode(331, 'White T-Shirt',2));
	ThankYou.AddChild(new CategoryNode(332, 'Sweatshirt',4));
	ThankYou.AddChild(new CategoryNode(333, 'Tile Box',86));
	ThankYou.AddChild(new CategoryNode(334, 'Teddy Bear',26));
	ThankYou.AddChild(new CategoryNode(335, 'Sticker (Oval)',51));
	ThankYou.AddChild(new CategoryNode(336, 'Sticker (Rectangular)',50));
	ThankYou.AddChild(new CategoryNode(337, 'Greeting Cards (Pkg of 6)',78));
	ThankYou.AddChild(new CategoryNode(338, 'Postcards (Pkg of 8)',77));
	ThankYou.AddChild(new CategoryNode(339, 'Framed Panel Print',82));
	
//---> ByOccasion TAXONOMY END

//****************************global functions******************************
function GetNodeForCategoryId(catId) {
	var node = null;
	if (ByProductType.GetNodesByIds(catId).length != 0) {
		node = ByProductType.GetNodesByIds(catId)[0];
	} else if (ByRecipient.GetNodesByIds(catId).length != 0) {
		node = ByRecipient.GetNodesByIds(catId)[0];
	} else if (Occasion.GetNodesByIds(catId).length != 0) {
		node = Occasion.GetNodesByIds(catId)[0];
	} 
	return node;
}	
