// ===================================================================
//	Switching Styles for screen resolutions use the class prefixes defined below
// Currently will only opperate on <dl> tags and treats each <dt> as a tab
window.onload = function(){setScreenClass();setBehavior();}; 
window.onresize = setScreenClass;

//  Following transition classes will be declared:
//
//	classname		  screenwidth
//	------------------------------------------
//	pda_ver			  240px			
//	pda_hor			  320px			
//	screen_ultralow	  320px -  640px	
//	screen_low		  640px -  800px	
//	screen_med		  800px - 1024px	
//	screen_high		 1024px - 1280px	
//	screen_wide				> 1280px			


function setScreenClass(){
	var fmt = document.documentElement.clientWidth;
	var cls = (fmt<=240)?'pda_ver':(fmt>240&&fmt<=320)?'pda_hor':(fmt>320&&fmt<=640)?'screen_ultralow':(fmt>640&&fmt<=800)?'screen_low':(fmt>800&&fmt<=1024)?'screen_med':(fmt>1024&&fmt<=1280)?'screen_high':'screen_wide';
	//document.getElementById('count').innerHTML=fmt+'px -> '+cls;
	document.body.className=cls;
};


function setBehavior(){
	tabs = document.getElementsByTagName('dt');
	for (t=0;t < tabs.length; t++ ){
		if(tabs[t].parentNode.parentNode.className == 'tabbed'){
			tabs[t].onclick = activateTab;
			//alert(tabs[t].onclick);
		}
	}
};

function activateTab(){
	tabs = document.getElementsByTagName('dt');
	for (t=0;t < tabs.length; t++ ){
		if(tabs[t].className == 'current'){tabs[t].className="";}
	}
	page = document.getElementsByTagName('dd');
	for (t=0;t < page.length; t++ ){
		if(page[t].className == 'current'){page[t].className="";}
	}
	this.className="current";
	dd = this.nextSibling;
	if(dd.nodeType!=1){dd = dd.nextSibling;}
	dd.className="current";		
};
// ===================================================================


function SetListSelected(listName, valueText)
{
	var I = 0
	var minI = 0
	var listObject = document.getElementById(listName)

	var maxI = listObject.length - 1;
	var foundI = -1;

	I = minI - 1;
	while ( I < maxI )
	{
		I = I + 1;
		if ( valueText == ( listObject.options[ I ].value ) )
		{
			listObject.options[ I ].selected = true;
		}
	}
}

var currentTab = "essentials-tab";
var currentLink = "essentials-link";

function setNewTabs(tab, link)
{
	currentTab = tab;
	currentLink = link;
}
function showTab(tabToShow, link)
{
	document.getElementById(currentTab).style.display = "none";
	document.getElementById(tabToShow).style.display = "";
	
	document.getElementById(currentLink).className = "";
	/*document.getElementById(currentLink).style.backgroundColor = "#939598";*/
	document.getElementById(link).className = "current";
	/*document.getElementById(link).style.backgroundColor = "#c0161c";*/
	
	currentTab = tabToShow;
	currentLink = link;
}

// Note: Uses jQuery
var doingComparison = false;

function getComparisonAsPdfWithPageBreaks(brand)
{
	var adjustedRows = AddPageBreaksForPDF();
	getComparisonAsPdf(brand);
	RemovePageBreaks(adjustedRows);
}
function getComparisonAsPdf(brand)
{
	// Disable
	if(!doingComparison)
	{
		doingComparison = true;

		// Hide stuff
		var sideBar = $("#sideBar");
		sideBar.hide();

		var pngLogo = $("#fl-png-logo");
		if (pngLogo) pngLogo.hide();

		var body = $("#page-body");
		body.width("1500px");
		
		var pdfLogo = $("#fl-pdf-logo");

		var redBit = $(".withRedBack");
		redBit.hide();

		// Update URL for performance frame
		var originalUrl = $("#performance-frame").attr("src");

		if (brand && (brand === "www_barclayswealth_com")) {
		    if (pdfLogo) pdfLogo.show();
		    $("#performance-frame").attr("src", originalUrl + "/pdf");
		}
		else {
		    $(".comparisonChartTitle").hide();
		}
		    
		// Get original source for FL logo
		var poweredSource = "";
		var poweredByLogo = $("#powered-by");

		if (poweredByLogo)
		{
			poweredSource = poweredByLogo.attr("src");
			
			if (poweredSource)
				poweredByLogo.attr("src", poweredSource.replace("logo_small_white_text", "logo_small"));
		}

		// Retrieve HTML and update stylesheet import
		$("#html").val("");
		var factsheet = $("html").html();

		if (brand && (brand === "www_barclayswealth_com"))
			factsheet = factsheet.replace('DataComparison\.css', 'pdf_DataComparison\.css');

		// Store HTML in form field for submission to server		
		$("#html").val(factsheet);

		// Unhide Stuff
		if (brand && (brand === "www_barclayswealth_com"))
			$("#performance-frame").attr("src", originalUrl);

		sideBar.show();
		if (poweredByLogo && poweredSource) { 
			poweredByLogo.attr("src", poweredSource);
		}
		if (pngLogo) pngLogo.show();
		if (pdfLogo) pdfLogo.hide();

		body.width("auto");
		redBit.show();
		
		doingComparison = false;
	}
}

document.getElementsByClassName = function(clsName){
    var retVal = new Array();
    var elements = document.getElementsByTagName("*");
    for(var i = 0;i < elements.length;i++){
        if(elements[i].className.indexOf(" ") >= 0){
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++){
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        }
        else if(elements[i].className == clsName)
            retVal.push(elements[i]);
    }
    return retVal;
}

function AddPageBreaksForPDF() 
{	
	var returnArray = new Array();
	var pageSize = 930; //if sections trespass unto the blue band decresase this by 5 till tis ok. (don't forget to refresh the tool before gen the pdf though...)

	$('#compare-table').css({width: '1250px'});

	var table = document.getElementById('compare-table');
	//table.style.width = '1232px'; 
	if(table != null)
	{
		var rows = table.getElementsByTagName('tr');
		if(rows != null)
		{			
			var pageTotal = 500;//start at this value to account for the graph and acc dates on page 1...
			
			var sectionClass = '';
			var sectionHead;
			var sectionTotal = 0; 
			var sectionRows = new Array();
			var sectionCounter = 0;
			
			for (var i = 0; i < rows.length; i++) 
			{					
				var row = rows[i];	
				var rowClass = row.className.split(" ")[0];
				var rowTag = row.tagName;
				var rowDisplay = row.style.display ;
				var rowHeight = row.offsetHeight;
								
				if ((rowTag == 'TR') && (rowDisplay != 'NONE') && (rowHeight != 0))
				{						
					
					if( i>0 && ((rowClass != '') && (rowClass != sectionClass)) )
					{							
						if((pageTotal + sectionTotal) > pageSize)
						{
							sectionHead.getElementsByTagName('td')[0].style.pageBreakBefore  = 'always';	
							returnArray[returnArray.length] = sectionHead;
							
							if(sectionTotal > pageSize)
							{
								var sectionAccumulation = 0;
								for (var n = 0; n < sectionRows.length; n++) 
								{
									if(sectionRows[n].offsetHeight + sectionAccumulation > pageSize)
									{
										sectionRows[n].getElementsByTagName('td')[0].style.pageBreakBefore  = 'always';
										sectionAccumulation = 0;
										returnArray[returnArray.length] = sectionRows[n];
									}
									sectionAccumulation += sectionRows[n].offsetHeight;
								}
								pageTotal = sectionAccumulation;
							}
							else
							{							
								pageTotal = sectionTotal;
							}	
						}
						else
						{
							pageTotal += sectionTotal;
						}
						
						//reset section counters
						sectionClass = rowClass;
						sectionHead = row;
						sectionTotal = 0;
						sectionRows = new Array();
						sectionCounter = 0;
					}							
					sectionRows[sectionCounter] = row;
					sectionCounter++;
					sectionTotal += rowHeight;
				}	
			}	
			
			//need to check at the end that the last visible section does not run over the page.
			if((pageTotal + sectionTotal) > pageSize)
			{
				sectionHead.getElementsByTagName('td')[0].style.pageBreakBefore  = 'always';	
				returnArray[returnArray.length] = sectionHead;
				
				if(sectionTotal > pageSize)
				{
					var sectionAccumulation = 0;
					for (var n = 0; n < sectionRows.length; n++) 
					{
						if(sectionRows[n].offsetHeight + sectionAccumulation > pageSize)
						{
							sectionRows[n].getElementsByTagName('td')[0].style.pageBreakBefore  = 'always';
							sectionAccumulation = 0;
							returnArray[returnArray.length] = sectionRows[n];
						}
						sectionAccumulation += sectionRows[n].offsetHeight;
					}
					pageTotal = sectionAccumulation;
				}	
				else
				{
					pageTotal = sectionTotal;
				}			
			}
			else
			{
				pageTotal += sectionTotal;
			}
			
			if(pageTotal + 110 > pageSize)
			{
				document.getElementById('fundCompFooter').style.pageBreakBefore = 'always';
			}				
			else
			{
				document.getElementById('fundCompFooter').style.pageBreakBefore = 'auto';
			}
		}
	}	
	$('#compare-table').css({width: '100%'});
	return returnArray;
}	

function RemovePageBreaks(rowsToFix)
{
	for (var n = 0; n < rowsToFix.length; n++) 
	{
		rowsToFix[n].getElementsByTagName('td')[0].style.pageBreakBefore  = 'auto';
	}
}

function divTab(dId, tId, aCss, nCss, selected)
{
	var self = this;
	this.tabId = tId;
	this.divId = dId;
	this.activeCss = aCss;
	this.normalCss = nCss;
	this.isSelected = selected;
	this.div;
	this.tab;
	
	this.getDiv = function()
	{
		if (self.div == null || self.div == 'undefined')
			self.div = document.getElementById(self.divId);
		return self.div;
	}

	this.getTab = function()
	{
		if (self.tab == null || self.tab == 'undefined')
			self.tab = document.getElementById(self.tabId);
		return self.tab;
	}
	
	this.hoverTab = function(aCss)
	{
		if (self.isSelected == true)
			return;
		self.getTab().className = self.activeCss;
	}

	this.offHoverTab = function(nCss)
	{
		if (self.isSelected == true)
			return;
		self.getTab().className = self.normalCss;
	}
	
	this.hide = function()
	{
		if (self.isSelected == false)
			return;
		self.getDiv().style.display = 'none';
		self.getTab().className = self.normalCss;
		self.isSelected = false;
	}

	this.show = function()
	{
		if (self.isSelected == true)
			return;
		self.getDiv().style.display = 'block';
		self.getTab().className = self.activeCss;
		self.isSelected = true;
	}	
}

function divTabCollection(aCss, nCss)
{
	var self = this;
	this.activeCss = aCss;
	this.normalCss = nCss;
	this.tabs = new Array();
	
	this.add = function(dId, tId)
	{
		var isFirst = false;
		if (self.tabs.length == 0)
			isFirst = true;
		self.tabs[self.tabs.length] = new divTab(dId, tId, self.activeCss, self.normalCss, isFirst);
	}
	
	this.hover = function(tab)
	{
		var count = 0;
		for (count = 0; count < self.tabs.length; ++count)
		{
			if (self.tabs[count].tabId != tab.id)
				self.tabs[count].offHoverTab();
			else
				self.tabs[count].hoverTab();
		}
	}

	this.hoverOff = function(tab)
	{
		var count = 0;
		for (count = 0; count < self.tabs.length; ++count)
		{
			if (self.tabs[count].tabId == tab.id)
				self.tabs[count].offHoverTab();
		}
	}
	
	this.click = function(tab)
	{
		var count = 0;
		for (count = 0; count < self.tabs.length; ++count)
		{
			if (self.tabs[count].tabId != tab.id)
				self.tabs[count].hide();
			else
				self.tabs[count].show();
		}
	}
}

function toggleTab(tId, dId, aCss, nCss, alreadyOn)
{
	var self = this;
	this.selected = alreadyOn;
	this.tabId = tId;
	this.divId = dId;
	this.tab;
	this.div;
	this.activeCss = aCss;
	this.normalCss = nCss;
	
	this.getTab = function()
	{
		if (self.tab == null || self.tab == 'undefined')
			self.tab = document.getElementById(self.tabId);
		return self.tab;
	}

	this.getDiv = function()
	{
		if (self.div == null || self.div == 'undefined')
			self.div = document.getElementById(self.divId);
		return self.div;
	}
	
	this.hoverTab = function()
	{
		if (self.selected)
			return;
		self.getTab().className = self.activeCss;		
	}
	
	this.outTab = function()
	{
		if (self.selected)
			return;
		self.getTab().className = self.normalCss;
	}
	
	this.click = function()
	{
		if (self.selected)
		{
			self.getDiv().style.display = 'none';
			self.getTab().className = self.normalCss;
		}
		else
		{
			self.getDiv().style.display = 'block';
			self.getTab().className = self.activeCss;
		}
		self.selected = !self.selected;
	}
}

function ListChange(menu, valueField, clearVal)
{
	if (menu.value=='Other')
	{
		valueField.style.display = "block";
		if(clearVal)
		{
			valueField.value = "";
		}
		valueField.focus();
	}
	else
	{
		valueField.style.display = "none";
		valueField.value = menu.value;
	}								
}
function SetSelected(optList, optvalue)
{
	for(var i=0; i<optList.options.length; i++)
	{
		if(optList.options[i].value == optvalue)
		{
			optList.options[i].selected = true;
			return true;
		}
	}
	return false;
}							
function displayFlash(imageName,imageWidth,imageHeight,bgcolor)
{
	imageName = "http://localhost" + imageName;
	alert(imageName);
    document.writeln('<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"');
    document.writeln('  codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"  WIDTH="'+imageWidth+'" HEIGHT="'+imageHeight+'">');
    document.writeln('<PARAM NAME="movie" VALUE="'+imageName+'">');
    document.writeln('<PARAM NAME="quality" VALUE="best">');
    document.writeln('<PARAM NAME="bgcolor" VALUE="'+bgcolor+'"><EMBED src="'+imageName+'"');
    document.writeln('       quality="best"');
    document.writeln('       bgcolor="'+bgcolor+'"');
    document.writeln('       WIDTH="'+imageWidth+'" HEIGHT="'+imageHeight+'"');
    document.writeln('       TYPE="application/x-shockwave-flash" ');
    document.writeln('       PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">');
    document.writeln('</EMBED>');
    document.writeln('</OBJECT>');
}

function CompareChecked(checkBox, list)
{
	var ids = list.value.split(",");
	
	if(checkBox.checked)
	{
		if(ids.length<6)
		{
			if(list.value.length>0)
				list.value += ","
			list.value += checkBox.id;
		}
		else
		{
			checkBox.checked = false;
			alert("You can only compare 6 funds.");
		}
	}
	else
	{
		list.value = list.value.replace(checkBox.id + ",", "");
		list.value = list.value.replace("," + checkBox.id, "");
		list.value = list.value.replace(checkBox.id, "");
	}
}

function getElementsByClassName(classname, node)
{
	if(!node || typeof node=="undefined") node = document.getElementsByTagName("body")[0];
	var a = [];
	var re = new RegExp('\\b' + classname + '\\b');
	var els = node.getElementsByTagName("*");
	for(var i=0,j=els.length; i<j; i++)
		if(re.test(els[i].className))a.push(els[i]);
	return a;
}

function hideElement(node)
{
	node.className = node.className.replace('hidden', '') + ' hidden';
}
function showElement(node)
{
	node.className = node.className.replace('hidden', '');
}

function TabbedElementShouldBeVisible(element, onclasses, offclasses)
{
	var element_classes = element.className.split(" ");

	for (var i = 0; i < element_classes.length; i++)
	{
		var c = element_classes[i];

		if (c.substring(0, 3) == "not")
		{
			c = c.substring(3);
			if (arrayContains(onclasses, c))
				return false;
		}
		else if (arrayContains(offclasses, c))
			return false;
	}
	return true;
}

function UpdateTabbingVisibility(container)
{
	var onClasses = new Array(), offClasses = new Array();

	var re_tabClass = /\b(off|on)(\S+)\b/g;

	while (match = re_tabClass.exec(container.className))
	{
		if (match[1] == "on")
			onClasses.push(match[2]);
		else
			offClasses.push(match[2]);
	}

	var allNodes = container.getElementsByTagName("*");
	for (var i = 0; i < allNodes.length; i++)
	{
		var node = allNodes[i];

		if (node.className == "")
			continue;

		if (TabbedElementShouldBeVisible(node, onClasses, offClasses))
			showElement(node);
		else
			hideElement(node);
	}
}

function initialiseFundCentralTabs(containerId)
{
	var container = document.getElementById(containerId);
	if (container)
		UpdateTabbingVisibility(container);
}

function showFundCentralTab(containerId, tabToShow, tabContainerId, selectedTabElementId)
{
	var currentView = document.getElementById("FLInterface.CurrentView");
	if (currentView)
		currentView.value = tabToShow;

	var container = document.getElementById(containerId);
	var tabContainer = document.getElementById(tabContainerId);

	var match = tabContainer.className.match(/\bon(\S+)\b/);
	var currentTabId = match[1];

	var re_newTabOff = new RegExp("\\boff" + tabToShow + "\\b");
	var re_oldTabOn = new RegExp("\\bon" + currentTabId + "\\b");

	container.className = container.className.replace(re_oldTabOn, "off" + currentTabId).replace(re_newTabOff, "on" + tabToShow);
	tabContainer.className = tabContainer.className.replace(re_oldTabOn, "off" + currentTabId).replace(re_newTabOff, "on" + tabToShow);

	UpdateTabbingVisibility(container);

	//strip all ActiveTab classes
	var tabElements = getElementsByClassName("fundTab", document.getElementById(tabContainerId));
	for (var i = 0; i < tabElements.length; i++)
	{
		var tabElement = tabElements[i];

		if (tabElement.id == selectedTabElementId) continue;
		tabElement.className = tabElement.className.replace(/\s?ActiveTab/, "");
	}

	//add ActiveTab class to proper tab element
	var selectedTabElement = document.getElementById(selectedTabElementId);
	if (!selectedTabElement.className.match(/\bActiveTab\b/))
	{
		selectedTabElement.className += " ActiveTab";
	}
}

function showFundCentralDropDowns()
{
	var selectGroup = document.getElementById('selectedType');
	var groupDropDown = document.getElementById('FLInterface.GroupId');
	var imaDropDown = document.getElementById('FLInterface.Sector');
	var propertyDropDown = document.getElementById('FLInterface.Property');
	var researchReportDropDown = document.getElementById('FLInterface.ResearchReport');
	
	switch (selectGroup.selectedIndex) 
	{
		case 1: 	// IMA Sector
			groupDropDown.disabled = false;
			groupDropDown.style.display = 'none';
			imaDropDown.style.display = 'inline';
			propertyDropDown.style.display = 'none';
			researchReportDropDown.style.display = 'none';
			break;

		case 2:		// Fund Type
			groupDropDown.disabled = false;
			groupDropDown.style.display = 'none';
			imaDropDown.style.display = 'none';
			propertyDropDown.style.display = 'inline';
			researchReportDropDown.style.display = 'none';
			break;

		case 3:		// All Funds
			groupDropDown.disabled = true;
			groupDropDown.style.display = 'inline';
			imaDropDown.style.display = 'none';
			propertyDropDown.style.display = 'none';
			researchReportDropDown.style.display = 'none';
			break;

		case 4: 	// Research Reports
			groupDropDown.disabled = true;
			groupDropDown.style.display = 'none';
			imaDropDown.style.display = 'none';
			propertyDropDown.style.display = 'none';
			researchReportDropDown.style.display = 'inline';
			break;
			
		case 0:		// Fund Group
		default:
			groupDropDown.disabled = false;
			groupDropDown.style.display = 'inline';
			imaDropDown ? imaDropDown.style.display = 'none' : null;
			propertyDropDown ? propertyDropDown.style.display = 'none' : null;
			researchReportDropDown ? researchReportDropDown.style.display = 'none' : null;
			break;

	}
}
function showPensionsDropDowns()
{
	var selectGroup = document.getElementById('selectedType');
	var groupDropDown = document.getElementById('FLInterface.GroupId');
	var imaDropDown = document.getElementById('FLInterface.Sector');
	var seriesDropDown = document.getElementById('FLInterface.SeriesId');
	var seriesExplainedLink= document.getElementById('SeriesExplainedLink');
	
	if (selectGroup.selectedIndex == 0)
	{
		imaDropDown.style.display = 'none';
		groupDropDown.style.display = 'inline';		
		changeSeries();
	}
	else if(selectGroup.selectedIndex == 1)
	{
		groupDropDown.style.display = 'none';
		seriesDropDown.style.display = 'none';
		seriesExplainedLink.style.display='none';
		imaDropDown.style.display = 'inline';	
	}
	else
	{
		groupDropDown.style.display = 'none';
		imaDropDown.style.display = 'none';
		seriesDropDown.style.display = 'none';
		seriesExplainedLink.style.display='none';	
	}
}
function changeSeries()
{		 
	var groupDropDown = document.getElementById('FLInterface.GroupId');
	var seriesDropDown = document.getElementById('FLInterface.SeriesId');
	var seriesExplainedLink= document.getElementById('SeriesExplainedLink');
	var loadingLabel = document.getElementById('seriesLoading');
	var unitFilterList = document.getElementById('FLInterface.UnitFilterList');
	var unitFilter = document.getElementById('FLInterface.UnitFilter');
	
	seriesDropDown.style.display='none';
	seriesExplainedLink.style.display='none';
	if(unitFilterList.value.length == 0)
	{		
		loadingLabel.style.display='inline';						
		if(groupDropDown.style.display=='inline')	
		{
			if(groupDropDown.value.length!=0)
			{
				updateSeriesList('/flweb/FundCentral/GetSeriesSelect/' + groupDropDown.value);
			}			
		}	
	}
	else
	{	
		processUnitFilters();
	}
}
function updateSeriesList(url)
{					
	var req = new DataRequestor();
	req.onreplace=updateSeriesListResponseHandler;
	req.setObjToReplace(document.getElementById('FLInterface.UnitFilterList'));
	req.getURL(url, _RETURN_AS_DOM);
}			
function updateSeriesListResponseHandler () 
{
	var unitFilterList = document.getElementById('FLInterface.UnitFilterList');
	var seriesDropDown = document.getElementById('FLInterface.SeriesId');
	var loadingLabel = document.getElementById('seriesLoading');	
	var lastUnitFilter = document.getElementById('FLInterface.LastUnitFilter');
	var seriesExplainedLink= document.getElementById('SeriesExplainedLink');
	
	loadingLabel.style.display='none';
	seriesDropDown.options.length = 0;
	if(unitFilterList.value.length == 0)
	{		
		seriesDropDown.style.display = 'none';
		seriesExplainedLink.style.display='none';
	}		
	else
	{		
		processUnitFilters();
	}
}

function processUnitFilters()
{
	var unitFilterList = document.getElementById('FLInterface.UnitFilterList');
	var seriesDropDown = document.getElementById('FLInterface.SeriesId');	
	var seriesExplainedLink= document.getElementById('SeriesExplainedLink');
	var currentSeries = document.getElementById('FLInterface.CurrentSeries').value;
	
	var options = unitFilterList.value.substring(1).split('><');
		for (var num=0;   num<options.length;   num++)
		{				
			var val = options[num].split('\'')[1];
			var name = options[num].split('\'>')[1].split('<')[0];
			var option = new Option(name, val);
			option.innerHTML = name;
			if (name == currentSeries)
			    option.selected = true;
			seriesDropDown.appendChild(option);
		}
		
		seriesDropDown.style.display = 'inline';
		seriesExplainedLink.style.display='inline';
}

function processTable(tableName, idList, classList)
{
    // get the reference for the body
    var table = document.getElementById(tableName);
	var rows = table.getElementsByTagName("tr");
	var ids = idList.split(",");
	var searchText = new Array(ids.length);
	var classes = classList.split(",");

	document.body.style.cursor = "wait";

	for(var counter = 0; counter < ids.length; counter++)
	{
		searchText[counter] = document.getElementById(ids[counter]).value.replace("&", "&amp;");
	}
    // process rows
	for (var rowCount = 1; rowCount < rows.length; rowCount++)
	{
		var cells = rows[rowCount].getElementsByTagName("td");
		// process cells
		var showRow = true;
		for (var cellCount = 0; cellCount < cells.length; cellCount++)
		{
			if(HideRow(cells[cellCount], classes, searchText))
			{
				showRow = false;
			}
		}
		if(showRow)
			rows[rowCount].style.display = "";
		else
			rows[rowCount].style.display = "none";
	}
	table.style.display = "";
	document.body.style.cursor = "default";
}

function HideRow(cell, classes, searchText)
{
	// Cell Is the rightClass Without the right Text
	var hideRow = false;
	for(var counter = 0; counter < classes.length; counter++)
	{
		if(cell.className.indexOf(classes[counter])>-1)
		{
			if(searchText[counter].length>0)
			{
				hideRow = true;
				if(cell.getElementsByTagName("a").length>0 && cell.getElementsByTagName("a")[0].innerHTML.toLowerCase().indexOf(searchText[counter].toLowerCase())>-1)
					hideRow = false;
				else if(cell.innerHTML.toLowerCase().indexOf(searchText[counter].toLowerCase())>-1)
					hideRow = false;
			}
		}
	}
	return hideRow;
}

function changeCriteria(workingImage, brand, channel)
{
	var channelString = '';

	if (typeof channel == 'string' && channel.length > 0)
	{
		channelString = '&channel=' + channel;
	}

	var groupId = document.getElementById('FLInterface.GroupId').value;
	var url = '';

	if ((groupId.length != 0 && (brand == ""))) {
		url = '/flweb/DataComparison/GetFundSelect/'
			+ groupId + '/'
			+ brand;
	}
	else if ((groupId.length != 0 && (brand == "fl_co_uk" | brand == "www_jbrearley_co_uk" | brand == "www_ascentric_co_uk" | brand == "www_cofunds_co_uk"))) {
		url = '/flweb/DataComparison/GetFundSelect/'
			+ groupId + '/'
			+ "fl_co_uk";
	}
	else if (brand == "www_barclayswealth_com")
	{
		if (groupId.length == 0 &&
				document.getElementById('FLInterface.BenchmarkId').value.length == 0 &&
				document.getElementById('FLInterface.CurrencyId').value.length == 0 &&
				//document.getElementById('FLInterface.ImaSectorId').value.length == 0 &&
				document.getElementById('FLInterface.RegisteredCountryId').value.length == 0 &&
				document.getElementById('FLInterface.DomicileId').value.length == 0 &&
				document.getElementById('FLInterface.GradeId').value.length == 0
				)
		{
			document.getElementById('fundlist').innerHTML = "Funds matching criteria ...";
			return;
		}

		url = '/flweb/FrameLogin/BWTransfer/DataComparison/GetFundSelectFromQuery/'
			+ brand
			+ getUriPartFromElement('GRP', 'FLInterface.GroupId')
			+ getUriPartFromElement('BM', 'FLInterface.BenchmarkId')
			+ getUriPartFromElement('CUR', 'FLInterface.CurrencyId')
			//+ getUriPartFromElement('IMA', 'FLInterface.ImaSectorId')
			+ getUriPartFromElement('RC', 'FLInterface.RegisteredCountryId')
			+ getUriPartFromElement('DOM', 'FLInterface.DomicileId')
			+ getUriPartFromElement('GRD', 'FLInterface.GradeId')
			+ "?U=bwealth&P=bwealth"
			+ channelString;
	}
	else
	{
		url = '/flweb/FrameLogin/BWTransfer/DataComparison/GetFundSelect/'
			+ groupId + '/'
			+ brand + "?U=bwealth&P=bwealth";

		// TODO: Add other brandings here

	}

	updateFundList(encodeURI(url), workingImage);
}

function getUriPartFromElement(prefix, elementId)
{
	var elementValue = document.getElementById(elementId).value;
	
	if (elementValue.length == 0)
		return '';

	return '/' + encodeURIComponent(prefix + '_' + elementValue);
}

/*
function doOnScroll()
{
	if(document.documentElement.scrollTop>170)
	{
		document.getElementById('headerRow').style.position = "fixed";
		document.getElementById('headerRow').style.top = '0';
	}
	else
	{
		document.getElementById('headerRow').style.position = "";
		document.getElementById('headerRow').style.top = 'auto';
	}
}
*/

function openPopup(elem, width, height){
		window.open(elem.href, "", "width=" + width + ",height=" + height + ",status=yes,location=no,toolbar=no,menubar=no");
}

//level 2 event handling - john resig addEvent rewritten

function addEvent( obj, type, fn )
{
	if (obj.addEventListener)
		obj.addEventListener( type, fn, false );
	else if (obj.attachEvent)
	{
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}
}

function removeEvent( obj, type, fn )
{
	if (obj.removeEventListener)
		obj.removeEventListener( type, fn, false );
	else if (obj.detachEvent)
	{
		obj.detachEvent( "on"+type, obj[type+fn] );
		obj[type+fn] = null;
		obj["e"+type+fn] = null;
	}
}

function getTarget(e){
	var t;
	if(!e) var e = window.event;
	if(e.target) t = e.target;
	else if(e.srcElement) t = e.srcElement;
	if(t.nodeType == 3) //safari dispatches events on text nodes
		t = t.parentNode; 
	return t;
}

function stopEvent(e){
	e.preventDefault ? e.preventDefault() : e.returnValue = false;
	e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;
}

/* UTILITY */

function compareNumbers(a, b) {
	if (a > b) return 1;
	if (a < b) return -1;
	return 0;
}

function arrayContains(arr, obj) {
	for (var i = 0; i < arr.length; i++) {
		if (arr[i] === obj)
			return true;
	}
	return false;
}