var htSubFamilies = {};

function FilterGrid(sfID)
{
	var rows = document.getElementById("partsTBody").rows;
	var rowID;
	for (var i=0;i<rows.length;i++)
	{
		rowID = rows[i].id.split("|")[1];
		if (sfID == "ALL")
			rows[i].style.display = "";
		else
			rows[i].style.display = (rowID == sfID) ? "" : "none";
	}
	
	// TODO 1: swap .current class into aFilter_ + sfID control
	//alert(document.getElementById("aFilter_" + sfID).className);
}

function CreateFilterList()
{
	var title = document.getElementById("filterListTitle");
	var list = document.getElementById("filterList");

	var subFamilyCount = 0;
	for(var subFamilyID in htSubFamilies) subFamilyCount++;
	
	if (subFamilyCount < 2)
	{
		list.style.display = "none";
		title.style.display = "none";
		return;
	}
	
	title.style.display = "";
	
	var sf, a;
	for(var subFamilyID in htSubFamilies)
	{
		a = document.createElement("a");
		a.appendChild( document.createTextNode( htSubFamilies[subFamilyID] ) );
		a.id = "aFilter_" + subFamilyID;
		a.href = "javascript:FilterGrid(" + subFamilyID + ")";
		list.appendChild(a);
		list.appendChild( document.createElement("br") );
	}

	a = document.createElement("a");
	a.appendChild( document.createTextNode("Remove filter") );
	a.id = "aFilter_ALL";
	a.href = "javascript:FilterGrid('ALL')";
	list.appendChild(a);
}

function CreatePartLinks(dta, bareUrl)
{
	if (document.getElementById && document.getElementsByTagName) 
	{  
		var allTRs = document.getElementsByTagName("tr");
		if (!allTRs) { return; }

		var tr, partID, td;
		for (var a=0;a<allTRs.length; a++) 
		{
			tr = allTRs[a];
			if ( tr.id && ( tr.id.indexOf("tr|") == 0 ) )
			{
				partID = tr.id.split("|")[2];
				td = tr.cells[0];
				td.innerHTML = "<a href=" + bareUrl + "?pid=" + partID + "&r=1>" + td.innerHTML + "</a>";
			}
		}
	}
}
			
function PopulateGrid(dta)
{
	var thead = document.getElementById("partsTHead");
	var tbody = document.getElementById("partsTBody");
	var subFamily, parts, part;
	var tr, th, td, txt;
	var doHeader = true;
	var trHeader = document.createElement("tr");
	var isCol0 ;
		
	parts = dta.parts;
		
	for(var b=0;b<parts.length;b++)
	{
		part = parts[b];
		isCol0 = true;
		tr = document.createElement("tr");
		tr.id = "tr|" + part.ProductSubFamilyID + "|" + part.PartID;
			
		htSubFamilies[part.ProductSubFamilyID] = part.SubFamilyName;
			
		for (property in part)
		{
			if (property == "PartID" || property == "ProductSubFamilyID" || property == "SubFamilyName") continue;
									
			if (doHeader)
			{
				var header = property.replace(/\?/g, String.fromCharCode(8486) );
				var arHeader = header.split("|");
				th = document.createElement("th");
				th.noWrap = true;

				var wrapperDiv = document.createElement("div");
				wrapperDiv.className = "wrapper";

				var topDiv = document.createElement("div");
				topDiv.className = "top";

				var bottomDiv = document.createElement("div");
				bottomDiv.className = "bottom";

				if (arHeader.length == 1)
				{
					topDiv.appendChild( document.createTextNode( arHeader[0] ) );
					bottomDiv.appendChild( document.createTextNode( String.fromCharCode(160) ) ); // 160 is &nbsp;
				}
				else
				{
					for(var c=0;c<arHeader.length-1;c++) // this skips the last line of the header
					{
						topDiv.appendChild( document.createTextNode( arHeader[c] ) );
						topDiv.appendChild( document.createElement("br") );
					}
					bottomDiv.appendChild( document.createTextNode( arHeader[arHeader.length-1] ) );
				}			

				wrapperDiv.appendChild(topDiv);
				wrapperDiv.appendChild(bottomDiv);
				th.appendChild(wrapperDiv);
				trHeader.appendChild(th);
			}

			txt = document.createTextNode( (part[property] != "") ? part[property] : String.fromCharCode(160) );
			td = document.createElement("td");
			td.style.display = "";
			if (property != "PartNumber") td.setAttribute("align", "center");
			td.setAttribute("valign", "middle");
			td.noWrap = true; // gotta do this, else the scrollers get messed up, but if you do it, the cols get messed up <g>
			td.appendChild(txt);
			tr.appendChild(td);
			isCol0 = false;
		}
		tbody.appendChild(tr);
		if (doHeader)
		{
			thead.appendChild(trHeader);
			doHeader = false;
		}
	}
	
	if(isPopup)
	{
		//resizeGrid();
	}
	else
	{
		//document.getElementById("tableContainer").style.width = "1016";
		//document.getElementById("partsTable").style.width = "1000";
		//document.getElementById("tableContainer").style.width = tblWidth + colCount + 16;
		//document.getElementById("tableContainer").style.overflow = "hidden";
		//document.getElementById("partsTable").style.width = tblWidth + colCount + 16;
	}
}
	
function HighlightSubFamilyRows()
{
	var rows = document.getElementById("partsTBody").rows;
	var rowID;
	for (var i=0;i<rows.length;i++)
	{
		if ( rows[i].id.indexOf("trSF|") == 0 )
		{
			rows[i].cells[0].style.backgroundColor = "#ffc";
		}
	}
}

function DoRounding()
{
	Rounded("div#featuresList","all","#FFF","#D4E7E9","smooth");
}

/*
function ResizeFrame()
{
	parent.document.getElementById("docUploadFrame").style.height = document.body.scrollHeight; //neat trick, from here: http://www.fullxml.com/default.asp?id=26&mnu=26&ACT=5&content=157
}
*/


//this is based on: http://www.componentart.com/forums/ShowPost.aspx?PostID=19540
//
function resizeGrid()
{
	alert("resizing");

	var pad = document.getElementById("pad").margin;
	var browserDimensions = browserWidthHeight();
	
	var tableContainer = document.getElementById("tableContainer");
	var tbl = document.getElementById("partsTable");
	//alert(tbl.style.height);

	tableContainer.style.border = "1px solid red";
	tableContainer.style.width = (browserDimensions[0] - (pad * 2)) + "px";
	//tableContainer.style.height = (browserDimensions[1] - (pad * 2)) + "px";
	
	tbl.style.border = "1px solid red";
	tbl.style.width = (browserDimensions[0] - (pad * 2)) + "px";
	//tbl.style.height = (browserDimensions[1] - (pad * 2)) + "px";
	
	/*
	var head = document.getElementById("partsTHead");
	//alert(head);
	//alert("clientHeight|clientWidth=" + head.clientHeight + "|" + head.clientWidth);
	//alert("rowCount=" + head.rows.length);
	alert("cell0Width=" + head.rows[0].cells[0].clientWidth);

	var rows = document.getElementById("partsTBody").rows;
	var cells;
	for (var a=0;a<rows.length;a++)
	{
		cells = rows[a].cells;
		for (var b=0;b<cells.length;b++)
		{
			cells[b].style.width = head.rows[0].cells[b].clientWidth;
		}
	}
	*/
	
	//alert(head.rows[0].cells[3].style.width);

	//Grid1.Render();
}

