

function MenuItem(icode,ogrp,iname,cost,targ,minNbr,incrQty,Bundle)
{
	//PROPERTIES
	this.itemCode       = icode;          
	this.itemName       = iname;
	this.optGroup       = ogrp;
	this.baseCost       = cost;
	this.minQty         = minNbr || 1;  //USED PRIMARILY BY CATERING MENUS
	this.incrBy         = incrQty || 1;  //USED PRIMARILY BY CATERING MENUS
	this.itemCost       = this.baseCost;
	this.optionsCost    = 0;
	this.itemQty        = (this.minQty > 1) ? this.minQty : 1;
	this.totalItemCost  = this.itemCost * this.itemQty;
	this.spcInstr       = "None";
	this.target         = new Object();     
	this.targetId       = targ;
	this.Options        = new Object();      
	this.OptSummary     = new Array();
        this.itemBundle     = Bundle;      //Must Be Set with QDItemHandler  
}

//METHODS
MenuItem.prototype.Display          = Display;
MenuItem.prototype.DisplaySPBev     = DisplaySPBev;
MenuItem.prototype.setTarget        = setTarget;
MenuItem.prototype.GetOptState      = GetOptState;
MenuItem.prototype.UpdateCost       = UpdateCost;
//THIS METHOD IS LOCATED IN THE INDIVIDUAL STORES 'restrnid_itemOptions.js' FILE
MenuItem.prototype.GetOptionGrps    = GetOptionGrps;    

function GetOptState()
{
	var currOption = new Object();
	var currOptName = new String("");
	var prevOptName = new String("");

	for(var optnm in this.Options)
	{
		for(var j=0; j<fcnt; j++)
		{
			if(formEls[j].name == this.Options[optnm].optName)
			{
				//if((formEls[j].checked == true) && (this.Options[optnm].isParentEnabled(formEls[j])));
				if((formEls[j].checked == true)  )
				{
					prevOptName = currOptName;
					currOptName = formEls[j].name;
				
					//alert(this.Options[optnm].type+" : "+this.Options[optnm].rank+" : "+this.Options[optnm].optName+" : "+this.Options[optnm].isParentEnabled(formEls[j]));
					if(this.Options[optnm].rank == 1)
					{
						if((this.Options[optnm].limit > 1) && (this.Options[optnm].type == "checkbox"))
						{
							if(currOptName != prevOptName)
							{
								currOption = new IOption(this.OptSummary.length,this.Options[optnm].heading,0);
								this.OptSummary[this.OptSummary.length] = currOption;
							}
							var aChoice = new Choice(formEls[j].value,this.Options[optnm].BtnCost[formEls[j].value]);
							currOption.Choices[currOption.Choices.length] = aChoice;						
						}
						else
						{
							currOption = new IOption(this.OptSummary.length,formEls[j].value,0);
							currOption.Cost = this.Options[optnm].BtnCost[formEls[j].value];
							this.OptSummary[this.OptSummary.length] = currOption;
						}
						continue;
					}
					else
					{
						//alert(this.Options[optnm].type+" : "+this.Options[optnm].rank+" : "+this.Options[optnm].optName+" : "+this.Options[optnm].isParentEnabled(formEls[j]));
						if(this.Options[optnm].isParentEnabled(formEls[j]))
						{
							var aChoice = new Choice(formEls[j].value,this.Options[optnm].BtnCost[formEls[j].value]);
							  currOption.Choices[currOption.Choices.length] = aChoice;
							continue;
						}
					}
				}
			}
		}
	}
	
	var instr = document.mainMenu.instructions.value;
	if((instr != "None") && (instr.length > 0)) this.spcInstr = instr.replace(/(\r|\n)/g,"==");

	
	var istr = new String("");
	istr = this.itemName + ":";
	istr += this.itemCode + ":";
	istr += this.itemQty + ":";
        istr += this.itemBundle + ":";
	istr += this.itemCost + ":";
	istr += this.optionsCost + ":";
	istr += this.spcInstr + ":";

	
	var itmXml = "<Item><ItemName>"+this.itemName + "</ItemName>";
	itmXml += "<Code>" + this.itemCode + "</Code>";
	itmXml += "<Qty>" + this.itemQty + "</Qty>";
        itmXml += "<Bundle>" + this.itemBundle + "</Bundle>";
	itmXml += "<ItemCost>" + this.itemCost + "</ItemCost>";
	itmXml += "<OptionsCost>" + this.optionsCost + "</OptionsCost>";
	itmXml += "<SpcInstr>" + this.spcInstr + "</SpcInstr>";

	for(var i=0; i<this.OptSummary.length; i++)
	{
		istr += this.OptSummary[i].Text + "#";
		istr += this.OptSummary[i].Cost + "#";
		
		itmXml += (i==0) ? "<Options>" : "" ;	
		itmXml += "<Option>";	
		itmXml += "<OptionTxt>" + this.OptSummary[i].Text + "</OptionTxt>";
		itmXml += "<OptionCost>" + this.OptSummary[i].Cost + "</OptionCost>";
		
		for(var j=0; j<this.OptSummary[i].Choices.length; j++)
		{
			istr += this.OptSummary[i].Choices[j].Text + "@";
			istr += this.OptSummary[i].Choices[j].Cost + "#";
			itmXml += (j==0) ? "<Choices>" : "" ;
			itmXml += "<Choice><ChoiceTxt>" + this.OptSummary[i].Choices[j].Text + "</ChoiceTxt>";
			itmXml += "<ChoiceCost>" + this.OptSummary[i].Choices[j].Cost + "</ChoiceCost></Choice>";
			itmXml += (j==this.OptSummary[i].Choices.length-1) ? "</Choices>" : "" ;	
		}
		istr += ":";
		itmXml += "</Option>";	
		itmXml += (i==this.OptSummary.length-1) ? "</Options>" : "" ;	
	}
	itmXml += "</Item>";	
	document.mainMenu.AddItemString.value = istr;
	document.mainMenu.AddItemStringXml.value = escape(itmXml);
	//document.mainMenu.action = "menuIndex.aspx"+location.search+"#cart";
	//document.write("<?xml version=\"1.0\"?>"+itmXml);
	return true;
}
function UpdateCost()
{
	var e = document.getElementById("theItemCost");
	if(e) e.innerHTML = this.itemCost;

	e = document.getElementById("theOptionsCost");
	if(e) e.innerHTML = this.optionsCost;

	this.totalItemCost = Math.round(100 * parseInt(this.itemQty) * (parseFloat(this.optionsCost) + parseFloat(this.itemCost)))/100;
	e = document.getElementById("theTotalCost");
	if(e) e.innerHTML = this.totalItemCost;
}

function Display()
{
	this.setTarget();
	
	var qtySelect = new String("<select name='iQty' onchange='changeItemQty(this.options[this.selectedIndex].value,\""+this.itemCode+"\")'>");
	if(this.minQty == 1)
		for(var i=1; i<=100; (i>14) ? i+=5 : i++) qtySelect += "<option value='"+i+"'>"+i+"</option>";
	else
		for(var i=this.minQty; i<=200; i += this.incrBy) qtySelect += "<option value='"+i+"'>"+i+"</option>";
	qtySelect += "</select>";

	var itmOpts = this.GetOptionGrps();

//	var btn = document.getElementById("ADDITEMBTNHOLDER");
	
	var outxt = new String("");
	outxt = "<table width='100%' class='DisplayItemTable'><tr><td><table width='100%' border='0'>";
	outxt += "<tr><th colspan='4' class='QDMsg'><span class='AlertText'>Options for =></span>" + this.itemName + "</th></tr>";
	outxt += "<tr><td><b>Item Cost</b></td><td><b>Options Cost</b></td><td><b>Item Qty</b></td><td><b>Total Cost</b></td></tr>";
	outxt += "<tr><td><div id='theItemCost'>"+this.itemCost+"</div></td><td><div id='theOptionsCost'>"+this.optionsCost+"</div></td><td>"+qtySelect+"</td><td><div id='theTotalCost'>"+this.totalItemCost+"</div></td></tr>";
	outxt += "<tr><td align='left' colspan='4'><hr>"+itmOpts+"<hr></td></tr>";
	outxt += "<tr><td colspan='4'>Enter Special Instructions or a Personal Note here:<br><textarea onChange='addInstr(this,\""+this.itemCode+"\")' cols='40' rows='5' name='instructions'>None</textarea><hr></td></tr>";
	outxt += "<tr><td colspan='4' align='center'><input type='button' value='Close' onClick='closeDisplay(\""+this.itemCode+"\")' class='OrderButtons'>&nbsp;&#149;&nbsp;<input type='submit' name='AddItemSubmit' onclick='document.mainMenu.Task.value=\"AddItem\"' value='Add Item to Order'  class='OrderButtons'>&nbsp;&#149;&nbsp;<input type='reset' onClick='resetOption(\""+this.itemCode+"\",true)'  class='OrderButtons'></td></tr>";
	outxt += "</table></td></tr></table><br>&nbsp;<br>";

	if(location.pathname.toUpperCase().indexOf("MENUADDITEM.ASPX") != -1)
		return outxt;
	
	this.target.innerHTML = outxt;
	InitializeButtonGroups();
	for(var i=0; i<document.anchors.length; i++)
	{
		if(document.anchors[i].name == this.targetId)
		{
			location.hash = this.targetId;
			break;
		}
	}
}

function DisplaySPBev()
{
	this.setTarget();
	
	var qtySelect = new String("<select name='iQty' onchange='changeItemQty(this.options[this.selectedIndex].value,\""+this.itemCode+"\")'>");
	if(this.minQty == 1)
		for(var i=1; i<=100; (i>14) ? i+=5 : i++) qtySelect += "<option value='"+i+"'>"+i+"</option>";
	else
		for(var i=this.minQty; i<=200; i += this.incrBy) qtySelect += "<option value='"+i+"'>"+i+"</option>";
	qtySelect += "</select>";

	var itmOpts = this.GetOptionGrps();

//	var btn = document.getElementById("ADDITEMBTNHOLDER");
	
	var outxt = new String("");
	outxt = "<table width='100%' class='DisplayItemTable'><tr><td><table width='100%' border='0'>";
	outxt += "<tr><th colspan='4' class='QDMsg'><span class='AlertText'>Options for =></span>" + this.itemName + "</th></tr>";
	outxt += "<tr><td><b>Item Cost</b></td><td><b>Options Cost</b></td><td><b>Item Qty</b></td><td><b>Total Cost</b></td></tr>";
	outxt += "<tr><td><div id='theItemCost'>"+this.itemCost+"</div></td><td><div id='theOptionsCost'>"+this.optionsCost+"</div></td><td>"+qtySelect+"</td><td><div id='theTotalCost'>"+this.totalItemCost+"</div></td></tr>";
	outxt += "<tr><td align='left' colspan='4'><hr>"+itmOpts+"<hr></td></tr>";
	outxt += "<tr><td colspan='4'>Enter Special Instructions or a Personal Note here:<br><textarea onChange='addInstr(this,\""+this.itemCode+"\")' cols='40' rows='5' name='instructions'>None</textarea><hr></td></tr>";
	outxt += "<tr><td colspan='4' align='center'><input type='button' value='Close' onClick='closeDisplay(\""+this.itemCode+"\")' class='OrderButtons'>&nbsp;&#149;&nbsp;<input type='submit' name='AddItemSubmit' onclick='document.mainMenu.Task.value=\"AddBevCoItem\"' value='Add Item to Order'  class='OrderButtons'>&nbsp;&#149;&nbsp;<input type='reset' onClick='resetOption(\""+this.itemCode+"\",true)'  class='OrderButtons'></td></tr>";
	outxt += "</table></td></tr></table><br>&nbsp;<br>";

	if(location.pathname.toUpperCase().indexOf("MENUADDITEM.ASPX") != -1)
		return outxt;
	
	this.target.innerHTML = outxt;
	InitializeButtonGroups();
	for(var i=0; i<document.anchors.length; i++)
	{
		if(document.anchors[i].name == this.targetId)
		{
			location.hash = this.targetId;
			break;
		}
	}
}

function setTarget()
{
	var e = document.getElementById(this.targetId);
	this.target = e;
}
function IOption(nbr,txt,cost)
{
	this.Nbr      = nbr;
	this.Text     = txt;
	this.Cost     = cost;
	this.Choices  = new Array();
}
function Choice(txt,cost)
{
	this.Text = txt;
	this.Cost = cost;
}
