// expand/collapse functionality; used in FAQ, Product Description

addEvent(window, 'load', initShowHide);

//-------------------------------------

function initShowHide()
{
	if(document.getElementsByClassName('FAQcategorySelector'))
		{
		var FAQcats = document.getElementsByClassName('FAQcategorySelector');	//---- FAQ category holder
		var A = FAQcats.length-1

		for(var i=A; i>=0;i--)
			{
			var FAQkids = FAQcats[i].childNodes;
			var B = FAQkids.length

			for(var j=0; j<B; j++)
				{
				var kid = FAQkids[j];
				if(kid.nodeType == 1 && kid.nodeName == 'OL')										// --- find FAQ category lists
					{
					kid.parentNode.FAQlist = [];
					var qscount = 0;
					var Z = kid.childNodes.length

					for(var k=0; k<Z; k++)
						{
						var grandkid = kid.childNodes[k];

						if(grandkid.nodeType == 1 && grandkid.nodeName == 'LI')
							{
							kid.parentNode.FAQlist.push(grandkid);
							qscount++;
							if(qscount > 3)		// --- ignore first three questions
								{newClass(grandkid, 'hidden')}
							}
						}
					}

				else if(kid.nodeType == 1 && kid.nodeName == 'P' && kid.className.match('seeAll') && qscount > 3)	// --- find See All holder where we have more than 3 questions
					{
					var C = kid.childNodes.length-1

					for(var k=C; k>=0; k--)
						{
						if(kid.childNodes[k].nodeType == 1 && kid.childNodes[k].nodeName == 'SPAN')
							{
							var clickspan = kid.childNodes[k];
							kid.clickspan = clickspan;
							removeClass(clickspan, 'hidden');
							newClass(clickspan, 'collapsed');
							break;
							}
						}
					addEvent(kid, 'click', toggleShowHideCats);
					}
				}
			}
		}

	if(document.getElementsByClassName('FAQ'))											//---- FAQ question lists
		{
		var FAQqs = document.getElementsByClassName('FAQ');
		var A = FAQqs.length-1

		for(var i=A; i>=0; i--)
			{
			var FAQqskids = FAQqs[i].childNodes;
			var dtcount = 0;
			var Z = FAQqskids.length

			for(var j=0; j<Z; j++)
				{
				var kid = FAQqskids[j];

				if(kid.nodeType == 1 && kid.nodeName == 'DT')
					{
					dtcount++;
					addEvent(kid, 'click', toggleShowHide);

					if(dtcount == 1 && i == 0)		// --- first question
						{newClass(kid, 'expanded')}
					else
						{newClass(kid, 'collapsed')}

					var grandkids = kid.childNodes;
					var Y = grandkids.length

					for(var k=0; k<Y; k++)
						{
						if (grandkids[k].nodeType == 1 && grandkids[k].nodeName == 'SPAN')
							{
							kid.clickspan = grandkids[k];

							if(dtcount == 1 && i == 0)
								{grandkids[k].innerHTML = 'Hide'}
							else
								{grandkids[k].innerHTML = 'Show'}
							break;
							}
						}
					}

				else if(kid.nodeType == 1 && kid.nodeName == 'DD')
					{
					if(dtcount == 1 && i == 0)		// --- first answer
						{newClass(kid, 'expanded')}
					else
						{newClass(kid, 'collapsed')}
					}
				}
			}
		}

	if(document.getElementsByClassName('detailListing'))					//---- products / services listing div
		{
		var detailLs = document.getElementsByClassName('detailListing');
		var A = detailLs.length-1

		for(var i=A; i>=0; i--)
			{
			newClass(detailLs[i], 'collapsed');
			detailLs[i].prodItems = [];
			var detailLskids = detailLs[i].childNodes;
			var B = detailLskids.length-1

			for(var j=B; j>=0; j--)
				{
				var kid = detailLskids[j];

				if(kid.nodeType == 1 && kid.nodeName == 'H2')
					{
					addEvent(kid, 'click', toggleWholeList);

					var grandkids = kid.childNodes;
					var C = grandkids.length-1

					for(var k=C; k>=0; k--)
						{
						if(grandkids[k].nodeType == 1 && grandkids[k].nodeName == 'SPAN')
							{
							kid.clickspan = grandkids[k]
							break;
							}
						}
					break;
					}

				else if(kid.nodeType == 1 && kid.nodeName == 'DL')
					{
					newClass(kid, 'collapsed');

					var prodIts = kid.childNodes;
					var dtcount = 0;
					var Z = prodIts.length

					for(var k=0; k<Z; k++)
						{
						if(prodIts[k].nodeType == 1 && prodIts[k].nodeName == 'DT')
							{
							var prdt = prodIts[k];
							dtcount++;
							detailLs[i].prodItems.push(prdt);

							addEvent(prdt, 'click', toggleShowHide);

							if(dtcount == 1)
								{newClass(prdt, 'expanded')}
							else
								{newClass(prdt, 'collapsed')}

							var dtkids = prdt.childNodes;
							var Y = dtkids.length

							for(var m=0; m<Y; m++)
								{
								if (dtkids[m].nodeType == 1 && dtkids[m].nodeName == 'SPAN' && dtkids[m].className.match('showhide'))
									{
									prdt.clickspan = dtkids[m];

									if(dtcount == 1)
										{dtkids[m].innerHTML = 'Hide'}
									else
										{dtkids[m].innerHTML = 'Show'}
									break;
									}
								}
							}

						else if(prodIts[k].nodeType == 1 && prodIts[k].nodeName == 'DD')
							{
							detailLs[i].prodItems.push(prodIts[k]);

							if(dtcount == 1)
								{newClass(prodIts[k], 'expanded')}
							else
								{newClass(prodIts[k], 'collapsed')}
							}
						}
					}
				}
			}
		}
}

function toggleShowHideCats()
{
	var FAQlist = this.parentNode.FAQlist;
	var Z = FAQlist.length;
	var clickspan = this.clickspan;

	if(clickspan.className.match('collapsed'))
		{
		for(var i=0; i<Z; i++)
			{removeClass(FAQlist[i], 'hidden')}
		clickspan.className = 'expanded';
		clickspan.innerHTML = 'Hide other questions';
		}
	else
		{
		for(var i=0; i<Z; i++)
			{
			if(i > 2)
				{newClass(FAQlist[i], 'hidden')}
			}
		clickspan.className = 'collapsed';
		clickspan.innerHTML = 'See all questions';
		}
}

function toggleShowHide()
{
	if(this.nextSibling.nodeType == 1)
		{var ans = this.nextSibling}
	else
		{var ans = this.nextSibling.nextSibling}

	if(this.className.match('collapsed'))
		{
		checkState(this, 'collapsed');
		checkState(ans, 'collapsed');
		this.clickspan.innerHTML = 'Hide';
 		}
	else
		{
		checkState(this, 'expanded');
		checkState(ans, 'expanded');
		this.clickspan.innerHTML = 'Show';
		}
}

function toggleWholeList()
{
	var detailLs = this.parentNode;

	if(detailLs.className.match('collapsed'))
		{
		checkState(detailLs, 'collapsed');
		this.clickspan.innerHTML = 'Hide all';
		detailLs.action = 'expand'
		}
	else
		{
		checkState(detailLs, 'expanded');
		this.clickspan.innerHTML = 'Show all';
		detailLs.action = 'collapse'
		};

	var A = detailLs.prodItems.length-1

	for(var i=A; i>=0; i--)
		{
		if(detailLs.action == 'expand')
			{
			checkState(detailLs.prodItems[i], 'collapsed');
			if(detailLs.prodItems[i].nodeType == 1 && detailLs.prodItems[i].nodeName == 'DT')
				{detailLs.prodItems[i].clickspan.innerHTML = 'Hide'}
			}
		else
			{
			checkState(detailLs.prodItems[i], 'expanded');
			if(detailLs.prodItems[i].nodeType == 1 && detailLs.prodItems[i].nodeName == 'DT')
				{detailLs.prodItems[i].clickspan.innerHTML = 'Show'}
			}
		};
}

function checkState(elem, currState)
{
	if(currState == 'expanded')
		{elem.className = elem.className.replace('expanded', 'collapsed')}
	else
		{elem.className = elem.className.replace('collapsed', 'expanded')}
}