var lowerCaseAlphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var allNumericDigit = '0123456789';

function renumberedValue(arr, p, generate)
{
	var k;

	for (k = 0; k < arr.length; k++)
		if (arr[k] == p)
			return(k);
	if (generate)
	{
		k = arr.length;
		arr[arr.length++] = p;
		return(k);
	}
	else
	{
		return(-1);
	}
}

function getFirstChildElem(nd)
{
	var ele = null;
	if (nd != null)
	{
		ele = nd.firstChild;
		while (ele != null && ele.nodeType != 1)
			ele = ele.nextSibling;
	}
	return(ele);
}

function getNextSiblingElem(nd)
{
	var ele = null;
	if (nd != null)
	{
		ele = nd.nextSibling;
		while (ele != null && ele.nodeType != 1)
			ele = ele.nextSibling;
	}
	return(ele);
}

function renumberReferences(iarr, carr, tbl)
{
	var tbody, tr, td, ele, sup;
	var s, t;
	var k, p, q;
	var jqele;

	if (tbl == null)
		return;

	tbody = getFirstChildElem(tbl); //tbl.firstChild;
	if (tbody == null)
		return;
	
	tr = getFirstChildElem(tbody); //tbody.firstChild;
	while (tr != null)
	{
		td = getFirstChildElem(tr);	//tr.firstChild;
		if (td != null && td.className.indexOf('fund_name') == 0)
		{
			ele = getFirstChildElem(td);	// td.firstChild;
			while (ele != null)
			{
				if (ele.tagName == 'A')
				{
					sup = getFirstChildElem(ele);	//ele.firstChild;
					while (sup != null)
					{
						jqele = $(sup);
						if (sup.tagName == 'SUP' && jqele.text() != '')
						{
							s = jqele.text();	//sup.innerText;
							t = '';
							q = 0;
							while (q < s.length)
							{
								if (allNumericDigit.indexOf(s.charAt(q)) >= 0)
									q++;
								else
									break;
							}
							//q points to non-numeric 
							if (q > 0)
							{
								p = parseInt(s.substring(0, q));
								if (isNaN(p))
									t = t + s.substring(0,q);
								else
								{
									var txt = renumberedValue(iarr, p, true)+1;
									t = t + txt;
								}
							}
							if (q < s.length)
							{
							    for (k = q; k < s.length; k++)
							    {
								p = lowerCaseAlphabet.indexOf(s.charAt(k));
								if (p >= 0)
								{
									t = t + lowerCaseAlphabet.charAt(renumberedValue(carr, p, true));
								}
								else
								{
									t = t + s.charAt(k);
								}
							    }
							}
							//sup.innerText = t;
							jqele.text(t);
						}
						sup = getNextSiblingElem(sup); // sup.nextSibling;
					}
				}
				ele = getNextSiblingElem(ele);	//ele.nextSibling;
			}
		}
		tr = getNextSiblingElem(tr); // tr.nextSibling;
	}
	//window.scroll(0,0);
}

function renumberFootnotes()
{
	var iarr = new Array();
	var carr = new Array();

	var tbl = document.getElementById('SearchView');
	if ( tbl != null ) 
	{ 
		renumberReferences(iarr, carr, tbl);

		tbl.style.display = '';
	}

	tbl = document.getElementById('GridView1');
	if ( tbl != null ) 
	{ 
		renumberReferences(iarr, carr, tbl);

		tbl.style.display = '';
	}

	var k;
	var divs = document.getElementsByTagName('DIV');
	var div = null;
	for (k = 0; k < divs.length; k++)
	{
		if (divs[k].className == 'funds_footnote')
			div = divs[k];
	}
	if (div != null)
	{
		var header = null;
		var s;
		var p;
		var q;
		var t;
		var ele;
		var sup;
		var jqele;
		var keepele;
		var nxt;
		var ind = new Array();
		var cnd = new Array();
		ele = getFirstChildElem(div); // div.firstChild;
		//skip to the first SUP containing P
		while (ele != null)
		{
			if (ele.tagName == 'P')
			{
				sup = getFirstChildElem(ele); // ele.firstChild;
				if (sup != null && sup.tagName == 'SUP')
					break;
			}
			header = ele;
			ele = getNextSiblingElem(ele); // ele.nextSibling;
		}
		//process all P containing SUP
		while (ele != null)
		{
			keepele = true;
			if (ele.tagName == 'P')
			{
				sup = getFirstChildElem(ele); // ele.firstChild;
				if (sup != null && sup.tagName == 'SUP')
				{
					t = '';
					jqele = $(sup);
					s = jqele.text();	//sup.innerText;
					p = parseInt(s);
					if (isNaN(p))
					{
						if (s.length > 0)
						{
							p = lowerCaseAlphabet.indexOf(s.charAt(0));
							if (p >= 0)
							{
								q = renumberedValue(carr, p, false);
								if (q < 0)
								{
									keepele = false;
								}
								else
								{
									cnd[q] = ele;
									t = lowerCaseAlphabet.charAt(q);
								}
							}
						}	
					}
					else
					{
						q = renumberedValue(iarr, p, false);
						if (q < 0)
						{
							keepele = false;
						}
						else
						{
							ind[q] = ele;
							t = (q+1) + '';
						}
					}
					//sup.innerText = t;
					if (keepele)
						jqele.text(t);
				}
			}
			nxt = getNextSiblingElem(ele); // ele.nextSibling;
			if (!keepele)
			{
				div.removeChild(ele);
			}
			ele = nxt;
		}
		for (p = cnd.length-1; p >= 0; p--)
		{
			if (!!cnd[p])
				div.insertBefore(cnd[p], getNextSiblingElem(header));
		}	
		for (p = ind.length-1; p >= 0; p--)
		{
			if (!!ind[p])
				div.insertBefore(ind[p], getNextSiblingElem(header));
		}	
		div.style.display = '';
	}
}	


