// -------------- CrateList Object ---------------------
// The main loot list must be built before any of this is called

var AllCrates;

function CrateList()
{
	// all crate IDs being with "R" 
	this.list = new Array();
	this.crateid = "A";
}

CrateList.prototype.AddCrate = function(name,image,available)
{
	var ourcrate = new Crate(name,image,"R"+this.crateid);
	this.crateid = String.fromCharCode(this.crateid.charCodeAt(0) + 1); // bump the crate counter
	ourcrate.availability = available;

	this.list.push(ourcrate);
	return(ourcrate);
}

CrateList.prototype.MakeUITable = function()
{
	var i;
	var obj;
	var output = "<table border='0' cellpadding='5' cellspacing='0' width=100% style='margin-bottom: 30px'>";

	function makeCrateBlock(crate)
	{
		var output = "";
		var index;
		var i;
		var theloot;
		var temp = new Array();

		output += "<tr><td style='background-color: DimGray; color: white; margin-right: 20pt'><img src='http://images.blofelds.com/crates/" + crate.image + "' width=75 style='padding: 4pt; background-color: black; border-top: 2px solid lightgray; border-left: 2px solid lightgray; border-bottom: 2px solid darkgray; border-right: 2px solid darkgray'></td><td colspan='2' valign='top' style='font-size: 15pt; background-color: DimGray'>" + crate.name + "<br/><span style='font-size: 8pt'>" + crate.availability + "</span></td></tr>";

		for(i=0;i<crate.loot.length;i++)
			temp.push(crate.loot[i]);

		// sorting doesn't work for some reason in chrome and IE (works fine in firefox) - so we do our own sort (insertion)
		// find each item - render it - and remove from the list

		while(temp.length)
		{
			index = 0;

			for(i=0;i<temp.length;i++)
				switch(crateTab.sortedBy)
				{
					case "N":
						if(temp[i].item.name < temp[index].item.name)
							index = i;
					break;

					case "AA":
						if(temp[i].item.attack < temp[index].item.attack)
							index = i;
					break;

					case "AD":
						if(temp[i].item.attack > temp[index].item.attack)
							index = i;
					break;

					case "DA":
						if(temp[i].item.defense < temp[index].item.defense)
							index = i;
					break;
				
					case "DD":
						if(temp[i].item.defense > temp[index].item.defense)
							index = i;
					break;
				}

				// index point at item to be rendered
				output += temp[index].buildTableRow();
				temp.splice(index,1);
		}

		return(output);
	}

	for(i=0;i<this.list.length;i++)
		output += makeCrateBlock(AllCrates.list[i]);

	output += "</table>";
	// get the table and replace it's contents

	obj = getObj("Cratetab");
	if(obj)
		obj.innerHTML = output;
	else
		alert("couldn't find crate object");
}

//----------------- Crate Object -----------------------

function Crate(name,image,ID)
{
	this.name = name;
	this.image = image;
	this.loot = new Array();
	this.ID = ID;
}

Crate.prototype.AddLoot = function(loot)
{
	var theloot, ourID, ourloot, i;

	for(i=0;i<loot.length;i++)
	{	
		ourID = this.ID + (i+1);
		theloot = FindLootItemByName(loot[i].name);
		
		if(!theloot)
            alert("missing crate item: " + loot[i].name);
        else
        {
    		theloot.AddAltID(ourID);

	       	this.loot[i] = new CrateLoot(loot[i].name,ourID,loot[i].rarity);
    	   	this.loot[i].item = theloot;
        }
	}

}

//----------------- CrateLoot Object ---------------------

function CrateLoot(name,oID,rarity)
{
	this.name = name;
	this.rarity = rarity;
	this.oID = new String(oID); // this is the UI id

	return(this);
}

CrateLoot.prototype.buildTableRow = function()
{
	var text ;
	var theattack,thedefense;
	var imagename;
	var lootitem = this.item;

	text = "<tr><td style=\"border-bottom: 1px solid #bcd2ea\">";

	theattack = (lootitem.attack == -1) ?  "?" : lootitem.attack;
	thedefense = (lootitem.defense == -1) ? "?" : lootitem.defense;

	imagename = getImageName(lootitem);

	text += "<img src='" + imagename + "'/>";
	text += "</td><td valign='top' style=\"border-bottom: 1px solid #bcd2ea\">";

	var lootname = lootitem.name;

	text += "<span class='mylabel' style='margin-bottom: 3pt'>" + lootname + "</span><br/>";
	text += "<img src='attack.png' /> " + theattack + "<img src='spacer.png' /><img src='defense.png' /> " + thedefense + "<br/>";
	
	text += "<img style='margin-top: 3pt' src='http://images.blofelds.com/";

	switch(this.rarity)
	{
		case "C":
			text += "common.gif'>";
		break;

		case "U":
			text += "uncommon.gif'>";
		break;

		case "R":
			text += "rare.gif'>";
		break;
	}

	text += "<br/><span class='wherefrom'>";

	switch(this.item.type)
	{
		case 'W':
			text += "Weapon";
		break;

		case 'A':
			text += "Armor";
		break;

		case 'V':
			text += "Vehicle";
		break;

        case 'N':
            text += "Animal";
        break;
        
		case 'B':
			text += "Boost";
		break;

		case 'O':
			text += "Special";
		break;
	}

	text += "</span></td><td valign='top' style=\"border-bottom: 1px solid #bcd2ea\">";

	text += "<center>" + insertGoldCoin(lootitem.id) + "</center><br/>";

	{
		text += "<input type='text' size='5' maxlength='10' id='" +this.oID + "'";

		if(lootitem.quantity > 0 )
			text += " value = '" + lootitem.quantity + "'";
		else
			text += " value=''";

		text += " onchange=\"changeQty('" +lootitem.id + "','"+this.oID + "');\"/>";
	}

	if(lootitem.giftable)
		text += "<br><center><a target=\"new\" href=\"" + getGiftString(lootitem.type,lootitem.lootid) + "\"><img border='0' style=\"padding-top: 3px\" src='images/addtowishlist.jpg' width='29' height='27'></a></center>";
		
	text += "</td></tr>";

	return(text);
}
//-------------------- Call this to get everything off the ground - the loot list itself MUST exist first ------------
//-- this is called from main() at the end of building all loot items ---

function BuildCrates()
{
	var oe;

	AllCrates = new CrateList();

	oe = AllCrates.AddCrate("Bangkok Crate","bangkok_crate.gif","January 20, 2010 - ?");
		oe.AddLoot([{'name':'Titanium Keris Knife','rarity':'C'},{'name':'Spitting Cobra','rarity':'R'},{'name':'Yin Yang','rarity':'U'},{'name':'Daisho','rarity':'U'},{'name':'Sumotori Fighter','rarity':'C'},{'name':'Hung Chu Enforcer','rarity':'C'},{'name':'Lloyds Archangel','rarity':'U'},{'name':'Fugama Kondoru','rarity':'R'}]);

	oe = AllCrates.AddCrate("Best of Crate","best_of_crate.gif","August 7, 2009 - September 8, 2009");
		oe.AddLoot([{'name':'Zip Gun','rarity':'U'},{'name':'Compound Bow','rarity':'U'},{'name':'Nail Gun','rarity':'U'},{'name':'Lever Action Rifle','rarity':'U'},{'name':'Power Cutter','rarity':'R'},{'name':'Dragunov','rarity':'R'},{'name':'10 Gallon Hat','rarity':'U'},{'name':'Ronin Motorcycle','rarity':'R'}]);

	oe = AllCrates.AddCrate("Best of 2009 Crate","best_of_2009_crate.gif","December 4, 2009 - December 20, 2009");
		oe.AddLoot([{'name':'Siberian Tiger','rarity':'U'},{'name':'Cane Cutter','rarity':'U'},{'name':'Vortex Ring Gun','rarity':'U'},{'name':'Pearl-Handled Revolver','rarity':'R'},{'name':'Ghillie Suit','rarity':'R'},{'name':'Lorica','rarity':'U'},{'name':'Tiger Tank','rarity':'R'},{'name':'Chariot','rarity':'R'}]);

	oe = AllCrates.AddCrate("Colosseum Crate","colosseum_crate.gif","July 14, 2009 - August 7, 2009");
		oe.AddLoot([{'name':'Puggio','rarity':'C'},{'name':'Pilum','rarity':'C'},{'name':'Roman Mace','rarity':'C'},{'name':'Gladius','rarity':'U'},{'name':'Parma','rarity':'U'},{'name':'Lorica','rarity':'U'},{'name':'Galea','rarity':'R'},{'name':'Chariot','rarity':'R'}]);

	oe = AllCrates.AddCrate("Crisis Crate","crisis_crate.gif","February 12, 2010 - ??");
		oe.AddLoot([{'name':'Battering Ram','rarity':'C'},{'name':'Fire Axe','rarity':'C'},{'name':'Shaped Charge','rarity':'R'},{'name':'EMT','rarity':'C'},{'name':'Ironside Tactical Vest','rarity':'R'},{'name':'Pair of Shock Paddles','rarity':'U'},{'name':'Hook and Ladder Truck','rarity':'C'},{'name':'Trauma Chopper','rarity':'C'}]);

	oe = AllCrates.AddCrate("Cuban Crate","cuban_crate.gif","October 16, 2009 - November 5, 2009");
		oe.AddLoot([{'name':'Ru-357 Pistola','rarity':'C'},{'name':'Garza 12 Shotgun','rarity':'C'},{'name':'Hoja Doble','rarity':'C'},{'name':'Cane Cutter','rarity':'U'},{'name':'Traje de Balas','rarity':'U'},{'name':'Ghillie Suit','rarity':'R'},{'name':'Guerilla Truck','rarity':'C'},{'name':'CM Dragon','rarity':'R'}]);

	oe = AllCrates.AddCrate("Experimental Crate","experimental_crate.gif","November 10, 2009 - December 1, 2009");
		oe.AddLoot([{'name':'EMP Bomb','rarity':'C'},{'name':'Gravity Gun','rarity':'U'},{'name':'Vortex Ring Gun','rarity':'U'},{'name':'Gene Splicer','rarity':'C'},{'name':'Pair of Ocular Implants','rarity':'C'},{'name':'Chevalier Exoskeleton','rarity':'R'},{'name':'Balloon Boy','rarity':'C'},{'name':'Executioner Drone','rarity':'R'}]);

	oe = AllCrates.AddCrate("Food Fight Crate","food_fight_crate.gif","December 1, 2009 - December 4, 2009");
		oe.AddLoot([{'name':'Pea Shooter','rarity':'C'},{'name':'Potato Mash','rarity':'C'},{'name':'Cooked Goose','rarity':'C'},{'name':'Stuffed Turkey','rarity':'C'},{'name':'Electric Carving Knife','rarity':'U'},{'name':'Lucky Wishbone','rarity':'U'},{'name':'Food Coma','rarity':'R'},{'name':'Gravy Boat','rarity':'R'}]);

	oe = AllCrates.AddCrate("Godfather Crate","godfather_crate.gif","? - ?");
		oe.AddLoot([{'name':'Mac-10','rarity':'C'},{'name':'Magnum','rarity':'C'},{'name':'Piano Wire','rarity':'C'},{'name':'Gold 9mm Gun','rarity':'C'},{'name':'Chainsaw','rarity':'C'},{'name':'Bloody Chainsaw','rarity':'C'},{'name':'Bloody Horse Head','rarity':'C'},{'name':'Car Bomb','rarity':'C'},{'name':'Cattle Prod','rarity':'C'},{'name':'Silenced Pistol','rarity':'C'},{'name':'Gold-Plated Magnum','rarity':'U'},{'name':'AK-47','rarity':'U'},{'name':'Combat Knife','rarity':'U'},{'name':'.50 Cal Pistol','rarity':'U'},{'name':'Flamethrower','rarity':'U'},{'name':'Light Anti Tank Weapon','rarity':'U'},{'name':'Propane Bomb','rarity':'U'},{'name':'Sniper Rifle','rarity':'U'},{'name':'Gold-Plated Magnum','rarity':'C'},{'name':'Gold Mac-10','rarity':'R'},{'name':'Gold Machine Pistol','rarity':'R'},{'name':'Armed Guard','rarity':'C'},{'name':'Gas Mask','rarity':'C'}]);

	oe = AllCrates.AddCrate("Halloween Crate","halloween_crate.gif","November 4, 2009 - November 10, 2009");
		oe.AddLoot([{'name':'Frankenstein Poker Chips','rarity':'C'},{'name':'Fake Vampire Teeth','rarity':'U'},{'name':'Laser Squirrel','rarity':'R'},{'name':'Monkey Brain Stew','rarity':'C'},{'name':'YoZombie','rarity':'C'},{'name':'Zombie Cow','rarity':'C'},{'name':'Dead End','rarity':'U'},{'name':'Kraken','rarity':'R'}]);

	oe = AllCrates.AddCrate("Hard Labor Crate","hard_labor_crate.gif","September 8, 2009 - September 29, 2009");
		oe.AddLoot([{'name':'Pretty Boy Floyd\'s .45','rarity':'C'},{'name':'Machine Gun Kelly\'s Gun','rarity':'C'},{'name':'Baby Face Nelson\'s .351','rarity':'C'},{'name':'Ma Barker\'s Machine Gun','rarity':'C'},{'name':'Dillinger\'s Wooden Gun','rarity':'R'},{'name':'Ness\' Fedora','rarity':'U'},{'name':'Pretty Boy Floyd\'s .45','rarity':'C'},{'name':'Bonnie & Clyde\'s B-400','rarity':'U'},{'name':'Capone\'s Armored 341A','rarity':'R'}]);

	oe = AllCrates.AddCrate("Red Hammer Crate","Red_Hammer_Crate.gif","April 9, 2009 - April 30, 2009");
		oe.AddLoot([{'name':'Grach','rarity':'C'},{'name':'.45 ACP Pistol','rarity':'C'},{'name':'PPSH 41 Submachine gun','rarity':'C'},{'name':'VSK-94 Sniper Rifle','rarity':'U'},{'name':'IZH-35m','rarity':'U'},{'name':'Dragunov','rarity':'R'},{'name':'Ushanka','rarity':'C'},{'name':'Impression','rarity':'R'}]);

	oe = AllCrates.AddCrate("Sports Mystery Crate","Sports_mystery_Crate.gif","January 7, 2010 - January 20, 2010");
		oe.AddLoot([{'name':'Hockey Stick','rarity':'C'},{'name':'Lacross Stick','rarity':'C'},{'name':'Cricket Bat','rarity':'U'},{'name':'Pair of Shin Guards','rarity':'C'},{'name':'Football Helmet','rarity':'U'},{'name':'Chest Protector','rarity':'R'},{'name':'Stock Car','rarity':'R'},{'name':'Football Cart','rarity':'U'}]);

	oe = AllCrates.AddCrate("Street Crate","Street_Crate.gif","June 12, 2009 - July 14, 2009");
		oe.AddLoot([{'name':'Switchblade','rarity':'C'},{'name':'Saturday Night Special','rarity':'C'},{'name':'Broken Bottle','rarity':'C'},{'name':'Zip Gun','rarity':'U'},{'name':'Knuckle Duster','rarity':'U'},{'name':'9mm Auto Pistol','rarity':'R'},{'name':'Bandanna','rarity':'C'},{'name':'Low Rider','rarity':'R'}]);

	oe = AllCrates.AddCrate("Spy Tech Crate","Spy_Tech_Crate.gif","December 21, 2009 - 8th January, 2010");
		oe.AddLoot([{'name':'Radio Controlled Detonator','rarity':'U'},{'name':'Explosive Watch','rarity':'R'},{'name':'Motion Sensor Explosive','rarity':'C'},{'name':'Remote Controlled Sniper','rarity':'U'},{'name':'Bugged Cell Phone','rarity':'C'},{'name':'Infrared Scanner','rarity':'C'},{'name':'Loose Caboose','rarity':'R'},{'name':'Rigged Model Airplane','rarity':'R'}]);

	oe = AllCrates.AddCrate("Tiger Crate","tiger_crate.gif","September 29, 2009 - October 16, 2009");
		oe.AddLoot([{'name':'Tora Assault Rifle','rarity':'C'},{'name':'Pro\'s 2 Iron','rarity':'C'},{'name':'Siberian Tiger','rarity':'U'},{'name':'Liger','rarity':'R'},{'name':'Tigerskin Armored Vest','rarity':'C'},{'name':'Le Tigre','rarity':'C'},{'name':'Tigershark Submersible','rarity':'U'},{'name':'Tiger Tank','rarity':'R'}]);

	oe = AllCrates.AddCrate("Tools of Persuasion","Tools_Of_Persuasion.gif","February 26, 2009 - March 21, 2009");
		oe.AddLoot([{'name':'Hammer','rarity':'C'},{'name':'Knee-Capper','rarity':'C'},{'name':'Axe','rarity':'C'},{'name':'Hedge Clippers','rarity':'C'},{'name':'Reciprocating Saw','rarity':'U'},{'name':'Nail Gun','rarity':'U'},{'name':'Wood Chipper','rarity':'R'},{'name':'Power Cutter','rarity':'R'}]);

	oe = AllCrates.AddCrate("Vicious Crate","Vicious_Crate.png","April 20, 2010 - ");
		oe.AddLoot([{'name':'Vicious Anaconda','rarity':'U'},{'name':'Vicious Cobra','rarity':'R'},{'name':'Vicious Hyena','rarity':'C'},{'name':'Vicious Kodiak','rarity':'R'},{'name':'Vicious Parrot','rarity':'C'},{'name':'Vicious Scorpion','rarity':'C'},{'name':'Vicious Tiger','rarity':'R'},{'name':'Vicious Wolf','rarity':'U'}]);

	oe = AllCrates.AddCrate("Wild West Crate","Wild_West_Crate.gif","May 22, 2009 - June 11, 2009");
		oe.AddLoot([{'name':'Pair of Spurs','rarity':'C'},{'name':'Lasso','rarity':'C'},{'name':'Scalper\'s Hatchet','rarity':'C'},{'name':'Lever Action Rifle','rarity':'U'},{'name':'Pearl-Handled Revolver','rarity':'R'},{'name':'Pair of Cowboy Boots','rarity':'U'},{'name':'10 Gallon Hat','rarity':'U'},{'name':'Wild Mustang','rarity':'R'}]);

	oe = AllCrates.AddCrate("Woodsman Crate","Woodsman_Crate.gif","April 30, 2009 - May 22, 2009");
		oe.AddLoot([{'name':'Hunting Knife','rarity':'C'},{'name':'Blowgun','rarity':'C'},{'name':'Compound Bow','rarity':'U'},{'name':'Hunting Rifle','rarity':'U'},{'name':'Sawed-off Double Barrel Shotgun','rarity':'R'},{'name':'Mesh Trucker Hat','rarity':'C'},{'name':'Hunter\'s Vest','rarity':'U'},{'name':'ATV','rarity':'R'}]);

	oe = AllCrates.AddCrate("Yakuza Crate","Yakuza_Crate.gif","March 21, 2009 - April 30, 2009");
		oe.AddLoot([{'name':'Kamas','rarity':'C'},{'name':'Kunai','rarity':'C'},{'name':'Nambu Type 14 Pistol','rarity':'C'},{'name':'Nunchucks','rarity':'U'},{'name':'Type 100 SMG','rarity':'U'},{'name':'Samurai Sword','rarity':'R'},{'name':'Samurai Helmet','rarity':'U'},{'name':'Ronin Motorcycle','rarity':'R'}]);


	AllCrates.MakeUITable(); // shouldn't have to make this until its displayed
}
