function doProductNavigation() {
	/* Requires jQuery (http://jquery.com/) */
	$(document).ready(function() {

		/* Hide secondary lists (asset class) */
		$("li.contracted").find("div").hide();
			 
		/* Assign product Certificates handlers */
		$("#linkCertificates").click(jsfShowHideCertificates);
		$("li.jsListHiddenCertificatesLinks").removeClass("jsListHiddenCertificatesLinks");
		$("p.jsListHiddenCertificatesLinks").removeClass("jsListHiddenCertificatesLinks");

		/* Assign product event handlers */
		$("#linkProductType").click(jsfShowHideProducts);
		$("li.jsListHiddenProductTypeLinks").removeClass("jsListHiddenProductTypeLinks");
		$("p.jsListHiddenProductTypeLinks").removeClass("jsListHiddenProductTypeLinks");

		/* Assign assetclass event handlers */
		$("#linkAssetClass").click(jsfShowHideAssetClass);
		$("li.jsListHiddenAssetClassLinks").removeClass("jsListHiddenAssetClassLinks");
		$("p.jsListHiddenAssetClassLinks").removeClass("jsListHiddenAssetClassLinks");

		/* Assign turbos event handlers */
		$("#linkTurbosAndTrading").click(jsfShowHideTurbos);
		$("li.jsListHiddenTurbosAndTradingLinks").removeClass("jsListHiddenTurbosAndTradingLinks");
		$("p.jsListHiddenTurbosAndTradingLinks").removeClass("jsListHiddenTurbosAndTradingLinks");
	});
}

doProductNavigation();

/* Event handlers */
// whole list
var jsfShowHideCertificates = function() {
	jsfShowHide("#jsListCertificates");
}
var jsfShowHideProducts = function() {
	jsfShowHide("#jsListProductType");
}
var jsfShowHideAssetClass = function() {
	jsfShowHide("#jsListAssetClass");
}
var jsfShowHideTurbos = function() {
	jsfShowHide("#jsListTurbosAndTrading");
}


/* Show/hide functions */
function jsfShowHide(element) 
{
	if ($(element).find("div:hidden").size() == 1)
	{
		$(element).removeClass("contracted").addClass("expanded");
		$(element).find("div:hidden").css("height", "auto").slideDown("fast");
	}
	else
	{
		$(element).removeClass("expanded").addClass("contracted");
		$(element).find("div:visible").css("height", "auto").slideUp("fast");
	}
}
function FormatNumber(strValue, lngPrecision, strGroupSeparator, strDecimalSeparator)
{
	var arrParts;
	var intI;
	var strPart;
	var strTemp;
	
	// number_format(number, decimals, comma, formatSeparator)
	strValue = parseFloat(strValue).toFixed(lngPrecision);
	strValue = strValue + '';
	arrParts = strValue.split('.');
	if(!arrParts[0]) arrParts[0] = '0';
	if(!arrParts[1]) arrParts[1] = '';

	if(strDecimalSeparator != '' && arrParts[0].length > 3)
	{
		strPart = arrParts[0];
		arrParts[0] = '';
		for(intI = 3; intI < strPart.length; intI += 3)
		{
			strTemp = strPart.slice(strPart.length - intI, strPart.length - intI + 3);
			arrParts[0] = strGroupSeparator + strTemp +  arrParts[0] + '';
		}
		strTemp = strPart.substr(0, (strPart.length % 3 == 0) ? 3 : (strPart.length % 3));
		arrParts[0] = strTemp + arrParts[0];
	}
	
	strDecimalSeparator = (lngPrecision <= 0) ? '': strDecimalSeparator;
	return arrParts[0] + strDecimalSeparator + arrParts[1];
}

var addBookmark = function(url, title){

  // user agent sniffing is bad in general, but this is one of the times 
  // when it's really necessary
  var ua=navigator.userAgent.toLowerCase();
  var isKonq=(ua.indexOf('konqueror')!=-1);
  var isSafari=(ua.indexOf('webkit')!=-1);
  var isMac=(ua.indexOf('mac')!=-1);
  var buttonStr=isMac?'Command/Cmd':'CTRL';

  if(window.external && (!document.createTextNode || (typeof(window.external.AddFavorite)=='unknown'))) {
  	// IE4/Win generates an error when you
    // execute "typeof(window.external.AddFavorite)"
    // In IE7 the page must be from a web server, not directly from a local 
    // file system, otherwise, you will get a permission denied error.
    window.external.AddFavorite(url, title); // IE/Win
  } else if(isKonq) {
    alert('You need to press CTRL + B to bookmark our site.');
  } else if(window.opera) {
  	alert('You need to press CTRL + D to bookmark our site.');
  } else if (window.sidebar) {
  	// firefox
  	window.sidebar.addPanel(title,url, "");
  }
    else if(window.home || isSafari) { // Firefox, Netscape, Safari, iCab
    alert('You need to press '+buttonStr+' + D to bookmark our site.');
  } else if(!window.print || isMac) { // IE5/Mac and Safari 1.0
    alert('You need to press Command/Cmd + D to bookmark our site.');    
  } else {
    alert('In order to bookmark this site you need to do so manually through your browser.');
  }
}

/*Parameter assumption/redirection with parameters*/
function redirectWithParams(targetUrl,paramsToConsider)
{
	window.location.href = assumeUrlParams(targetUrl,paramsToConsider);
}

function assumeUrlParams(baseUrl,paramsToConsider)
{
	var paramString = "";
	var delimiter = "?";
	if(baseUrl.indexOf("?") >= 0)
		delimiter = "&";
	for(var i = 0; i < paramsToConsider.length; i++)
	{
		var paramFound = getUrlParam(paramsToConsider[i]);
		if(paramFound != "")
		{
			baseUrl += delimiter + paramsToConsider[i] + "=" + paramFound;
			delimiter = "&";
		}
	}
	
	return baseUrl;
}

function getUrlParam(paramName)
{
	paramName = paramName.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]").toLowerCase();

	var regexS = "[\\?&]"+paramName+"=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec( window.location.href.toLowerCase() );

	if ( results == null )
		return "";
	else
		return results[1];
}