﻿/****************************************************************************************** 
LongTextDiv.js (c) 2009 AW LLC, SKF :) 
Functions for SEO friendly, CSS based collapsable long text div.
 
Functions use PROTOTYPE 1.6 or later
 
CSS classes: 
for DIV: .extDiv, ._collapsed, ._extended, ._hidden
for A: .extLnk, .extLnk a, ._extend, ._collapse, ._hidden, ._hide, ._show
 
Uses on a page:
------------------------------------------------------------------------------------------
<script type="text/javascript" src="/include/LongTextDiv.js"></script>
<div class="extDiv labeltextsmall" id="divLongText">
<asp:Literal ID="LblHdrCompDesc" runat="server" Mode="PassThrough"></asp:Literal>
</div>
<a name="extcoll" href="" class="extLnk _hidden" rel="section"
onclick="javascript: ExtendCollapse(this, 'divLongText'); return false;">
Expand Description... &#9660;</a>
-------------------------------------------------------------------------------------------
 
for such case when JS is disabled it is 
*/

function FindLinkByOnClick(LnkArr, DivId)
{
	var lnk = null;
	var sz = LnkArr.size();
	for (i = 0; i < sz; i++)
	{
		var item = LnkArr[i];
		if (item.readAttribute("onclick").indexOf(DivId) > -1)
		{
			lnk = item;
			break;
		}
	}
	return lnk;
}

function ExtendCollapse(e_lnk, e_div_id, e_text)
{
	var d = $(e_div_id);
	if (d != null)
	{
		if (d.className.indexOf("_collapsed") > -1)
		{
			d.className = d.className.replace("_collapsed", "_extended");
			if (e_lnk != null)
			{
				e_lnk.innerHTML = "Collapse " + e_text + "... &#9650;";
				e_lnk.className = e_lnk.className.replace("_extend", "_collapse");
			}
		}
		else
		{
			d.className = d.className.replace("_extended", "_collapsed");
			if (e_lnk != null)
			{
				e_lnk.innerHTML = "Expand " + e_text + "... &#9660;";
				e_lnk.className = e_lnk.className.replace("_collapse", "_extend");
			}
		}
	}
}

function ShowHide(e_lnk, e_div_id, e_text)
{
	var d = $(e_div_id);
	if (d != null)
	{
		if (d.className.indexOf("_hidden") > -1)
		{
			d.className = d.className.replace("_hidden", "_shown");
			if (e_lnk != null)
			{
				e_lnk.innerHTML = "Hide " + e_text + "... [-]";
				e_lnk.className = e_lnk.className.replace("_show", "_hide");
			}
		}
		else
		{
			d.className = d.className.replace("_shown", "_hidden");
			if (e_lnk != null)
			{
				e_lnk.innerHTML = "Show " + e_text + "... [+]";
				e_lnk.className = e_lnk.className.replace("_hide", "_show");
			}
		}
	}
}

function LongText_onLoad()
{
	var divArr = $A($$("div .extDiv"));
	var lnkArr = $A($$("a.extLnk", "a[class='extLnk']"));

	for (i = 0; i < lnkArr.size(); i++) lnkArr[i].hide();

	for (j = 0; j < divArr.size(); j++)
	{
		var item = divArr[j];

		if (item.offsetHeight > 80)
		{
			var lnk = FindLinkByOnClick(lnkArr, item.identify());
			if (lnk != null)
			{
				lnk.show();
				lnk.removeClassName("_hidden");
				lnk.removeClassName("_collapse");
				lnk.addClassName("_extend");
				item.addClassName("_collapsed");
			}
		}
	}
}

function ChangeFontSize(divId, sizeClass)
{
	var div = $(divId);
	if (div != null)
	{
		div.removeClassName("small");
		div.removeClassName("normal");
		div.removeClassName("large");
		div.addClassName(sizeClass);
	}
}


document.observe("dom:loaded", LongText_onLoad);

/************************************************************************************/
