String.prototype.startsWith = function(prefix) { try { return (this.indexOf(prefix) === 0); } catch (e) { return false; } };
String.prototype.endsWith = function(postfix) { try { return (postfix == this.substring(this.length - postfix.length)); } catch (e) { return false; } };

/**
 * Add an event.
 */
function addEvent(obj, evType, fn){ 
	if (obj.addEventListener)
	{ 
		obj.addEventListener(evType, fn, false); 
		return true; 
	}
	else if (obj.attachEvent)
	{ 
		var r = obj.attachEvent("on"+evType, fn); 
		return r; 
	}
	else
	{ 
		return false; 
	} 
}

/**
 * Init events.
 */
addEvent(window, "load", initPage);

function initPage()
{
	initAccessibility();
	initMask();
	initToggleDefinitionList();
    //initNotes();
}

/**
 * This function is used to enable the use of ASP.NET LinkButton, and still
 * allow the site to work with non-javascript browsers.
 */
function initAccessibility()
{
	// all items of cgb:linkbutton should be made visible
	var hrefs = document.getElementsByTagName("a");
	for (var i=0; i<hrefs.length; i++)
	{
		if (hrefs[i].className.startsWith("accessible"))
		{
			hrefs[i].style.display = "inline";
		}
	}
}

/*function initMask()
{
	// all items of cgb:linkbutton should be made visible
	var inputs = document.getElementsByTagName("input");
	for (var i=0; i<inputs.length; i++)
	{
		if (inputs[i].className == "numbermask")
		{
			addEvent(inputs[i], "keyup", applyNumberMask);
		}
	}
}*/
function initMask()
{
	// all items of cgb:linkbutton should be made visible
	var inputs = document.getElementsByTagName("input");
	for (var i=0; i<inputs.length; i++)
	{
		if (inputs[i].className == "numbermask")
		{
			inputs.parentNode
		}
	}
}

function initNotes()
{
	var notes = document.getElementsByTagName("p");
	for (var i=0; i<notes.length; i++)
	{
		if (notes[i].className == "note")
		{
		    notes[i].style.height = "1.5em";
		    notes[i].onmouseout = new Function("this.style.height='1.5em';");
		    notes[i].onmouseover = new Function("this.style.height='auto';");
		}
	}
}

function changeImageSrc(img, url)
{
    if (img != null)
    {
        img.src = url;
    }
}

var numberMaskExpression = new RegExp("[^0-9]", "g");
function applyNumberMask() {
	this.value = this.value.replace(numberMaskExpression, "");
}

/* ~ Toggle Definition List ------------------------------------------------------- */
function initToggleDefinitionList()
{
	var dt = null;
	var dd = null;
	if (document.getElementById && document.getElementsByTagName)
	{
		var dls = document.getElementsByTagName("dl");
		for(var y=0; y<dls.length; y++)
		{
			var dl = dls[y];
			
			if(dl.className == "toggleDL")
			{
				if(dl != null)
				{
					dt = dl.getElementsByTagName('dt');
					dd = dl.getElementsByTagName('dd');
				}
				if (dt != null && dd != null)
				{
					for(var i=0; i<dt.length; i++)
					{
						var zContent = dt[i].innerHTML;
						dt[i].innerHTML = "<a id=\"toggle-" + i + "\" href=\"javascript:toggleDefinitionList('" + dl.id + "', " + i + ")\">" + zContent + "</a>";
						dd[i].style.display = "none";
					}
				}
			}
		}
	}
}
function toggleDefinitionList(id, index)
{
	var dd = document.getElementById(id).getElementsByTagName('dd');

	for(var i=0; i<dd.length; i++)
	{
		if(index == i) 
		{
			dd[i].style.display = dd[i].style.display == '' ? 'none': '';
		} else {
			dd[i].style.display = dd[i].style.display == '' ? '': 'none';
		}
	}
}
/* -------------------------------------------------------------------------------- */

function DownloadButtonClick(id)
{
	id = id.replace(/\$/g, "_");
	var nextButton = document.getElementById(id);
	if (nextButton != null)
	{
		nextButton.click();
	}
	else
	{
		nextButton = document.getElementById(id + "_linkButton");
		if (nextButton != null)
		{
			nextButton.click();
		}
		else
		{
			nextButton = document.getElementById(id + "_button");
			if (nextButton != null)
			{
				nextButton.click();
			}
		}
	}
}
