
////
//Tab and corresponding table to make visible
////
function ChangeTabs(form, tab)
{
	document.getElementById('Prices').className = (tab == 'Prices' ? 'tabOn' : 'tabOff');
	document.getElementById('PerfC').className = (tab == 'PerfC' ? 'tabOn' : 'tabOff');
	document.getElementById('Category').className = (tab == 'Category' ? 'tabOn' : 'tabOff');
	
	document.getElementById('tabPrices').className = (tab == 'Prices' ? 'selected' : '');
	document.getElementById('tabPerfC').className = (tab == 'PerfC' ? 'selected' : '');
	document.getElementById('tabCategory').className = (tab == 'Category' ? 'selected' : '');
	
	//Loading current table value in hidden input
	document.getElementById('CurrentTab').value=tab;
}

/// Paging
function GoToPage(pageNo){
	document.forms["MainForm"].pageNo.value = pageNo;
	document.forms["MainForm"].submit();	
}


/// Loading a url in new window with specified height & width
function loadFlt(url, height, width, scrollbars)
{
	var browser = navigator.appName + " " + navigator.appVersion; 
    	var Newwindow = window.open(url,"choose","resizable=no,height=" + height + ",status=yes,width=" + width + ",scrollbars=" + scrollbars + ",top=20,left=250");
	
      	if ( browser.substring(0, 8) =="Netscape") 
      	{ 
        	Newwindow.creator = self; 
      	}
        else 
		{
          	if (Newwindow.opener == null) 
          	{
			Newwindow.opener = self;
			} 
      	} 
}

/// For show / hide the advanced search option
function showhide(id)
{ 
	if (document.getElementById)
	{ 
		obj = document.getElementById(id); 
		if (obj.style.display == "none")
		{ 
			obj.style.display = ""; 
		}
		else
		{ 
			obj.style.display = "none"; 
		} 
	} 
} 

/// Navigate on page index
function SetPageIndex(index)
{
	document.getElementById('PgIndex').value=index;
	document.MainForm.submit();
}

/// Maintaining table and advanced options - visibility
function RetainTab(isShortlistPage)
{
	var tab='';
	tab=getQueryValue('CurrentTab');
	if(tab == '')
	{
		contrl = document.getElementById('CurrentTab');
		if(contrl != null)
		{
			tab = document.getElementById('CurrentTab').value;
		}
	}
	if(tab != '')
	{
		ChangeTabs(this.form,tab);
	}
	if(!isShortlistPage)
	{
		var advancesearch='';
		advancesearch=getQueryValue('AdvanceSearch');
		if(advancesearch == '')
		{
			advancesearch = document.getElementById('AdvanceSearch').value;
		}
		if(advancesearch == '1')
		{
			showhide('advanceOption','yes');
		}
	}
}

function URLEncode(value)
{
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

	var plaintext = value;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
			    alert( "Unicode Character '" 
                        + ch 
                        + "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted." );
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for
	return encoded;
}

function URLDecode(encoded)
{
   var HEXCHARS = "0123456789ABCDEFabcdef"; 
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%") {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} else {
				plaintext += "%[ERROR]";
				i++;
			}
		} else {
		   plaintext += ch;
		   i++;
		}
	} // while
   return plaintext;
}

/// To get querystring value from url
function getQueryValue(name) 
{
	var url = document.URL;
	i = url.indexOf(name += '=')
	j = url.indexOf('&', i);
	if(-1 == j) 
	{
		j = url.length;
	}
	if(-1 != i) 
	{
		return url.substring(i + name.length, j);
	}
	else
	{
		return '';
	}
}

/// For Checking in table checkboxes
function ChkBoxSelection()
{
	var elements = document.getElementsByTagName("INPUT");
	for(i=0;i<elements.length;i++)
	{
		if(IsCheckBox(elements[i]) == true && elements[i].id == "ChkFund")
		{
			elements[i].checked = true;
		}
	}
}

/// Checking the control for checkbox
function IsCheckBox(chk)
{
	return (chk.type == 'checkbox');
}

/// Storing the shortlisted fund's typecode in cookie
function ShortListed()
{
	var tabvalue = document.getElementById('CurrentTab').value;
	var elements = document.getElementsByTagName("INPUT");
	var shortlist='';
	shortlist=GetCookie('FPUser');
	var array = new Array();
	array = shortlist.split(',');

	if(array.length>24)
	{
		alert('Maximum (25) Funds have been shortlisted.');
	}
	else
	{
		for(var i=0;i<elements.length;i++)
		{
			if(IsCheckBox(elements[i]) && elements[i].name==tabvalue)
			{
				if(elements[i].checked==true)
				{
					if(shortlist.indexOf(elements[i].value)<0)
					{
						shortlist = (shortlist != '' ? shortlist+',' : '');
						shortlist += elements[i].value;
					}
				}
			}
		}
		SetCookie('FPUser',shortlist);
		shortlist=GetCookie('FPUser');
		array = shortlist.split(',');
		if(shortlist != '')
		{
			document.getElementById('lblshortlist').innerText = "[" + array.length + " Fund(s) totally shortlisted]";
		}
	}
}

/// Clearing All Shortlisted Funds By Clearing Cookie
function ClearAllShorlisted()
{
	SetCookie('FPUser','');
	document.location.href='pricetable.aspx';
}

/// To Get specified Cookie value
function GetCookie(name) 
{
    var start = document.cookie.indexOf(name+"=");
    var len = start+name.length+1;
    if ((!start) && (name != document.cookie.substring(0,name.length))) return '';
    if (start == -1) return '';
    var end = document.cookie.indexOf(";",len);
    if (end == -1) end = document.cookie.length;
    return unescape(document.cookie.substring(len,end));
}

/// To Set specified cookie
function SetCookie(name,value,expires,path,domain,secure)
{
    document.cookie = name + "=" +escape(value) +
        ( (expires) ? ";expires=" + expires.toGMTString() : "") +
        ( (path) ? ";path=" + path : "") + 
        ( (domain) ? ";domain=" + domain : "") +
        ( (secure) ? ";secure" : "");
}

/// Storing sort field and direction of sorting
function Sort(field)
{
	var array = new Array();
	array = field.split(' ');
	if(array.length > 1)
	{
		array[1] = ((array[1] == 'asc')? 'desc' : 'asc');
		field = array[0] + ' ' + array[1];
		document.MainForm.SortField.value = array[0];
		document.MainForm.SortDirection.value = array[1];
	}
	
	document.MainForm.submit();
}

// Adding Additional funds outside FriendsProvident
function AddFunds()
{
	var fundarray='';
	var fundnamearray='';
	var selectedindex=document.MainForm.fund.selectedIndex;
	
	fundarray = document.getElementById('fundsarray').value;
	fundnamearray = document.getElementById('fundsnamearray').value;
	if(document.getElementById('fund').selectedValue != '')
	{
		if(fundarray.indexOf(document.MainForm.fund.options[selectedindex].value)<0)
		{
			if(fundarray != '')
			{
				fundarray += ',';
				fundnamearray += ',';
			}
			fundarray += document.MainForm.fund.options[selectedindex].value;
			fundnamearray += document.MainForm.fund.options[selectedindex].text;
		}
	}
	document.getElementById('fundsarray').value = fundarray;
	document.getElementById('fundsnamearray').value = fundnamearray;
	
	document.MainForm.submit();
}

// Remove particular Additional funds in comparison funds
function RemoveSelectedFund(fundtypecode)
{
	var fundarray = document.getElementById('fundsarray').value;
	var fundnamearray = document.getElementById('fundsnamearray').value;
	var farray = new Array();
	var fnarray = new Array();
	farray = fundarray.split(',');
	fnarray = fundnamearray.split(',');
	fundarray = '';
	fundnamearray = '';
	
	for(var i=0;i<farray.length;i++)
	{
		if(farray[i] != fundtypecode)
		{
			if(fundarray != '')
			{
				fundarray += ',';
				fundnamearray += ',';
			}
			fundarray += farray[i];
			fundnamearray += fnarray[i];
		}
	}
	
	document.getElementById('fundsarray').value = fundarray;
	document.getElementById('fundsnamearray').value = fundnamearray;
	document.MainForm.submit();
}

// default filter values
function ClearFilters()
{
	document.MainForm.Manager.selectedIndex = 0;
	document.MainForm.Performance.selectedIndex = 0;
	document.MainForm.submit();
}

// Storing value in hidden control & Submitting form
function SetHiddenValueAndSubmit(controlid,value)
{
	document.getElementById(controlid).value = value;
	document.MainForm.submit();
}

// To Calculate Portfolio Weight
function CalcPortfolioPercentage()
{
	var elements = document.getElementsByTagName("INPUT");
	var totalpercentage = 0;
	for(var l=0;l<elements.length;l++)
	{
		if((IsTextBox(elements[l]) == true) && (elements[l].name == 'PortfolioPercentage') && (elements[l].value != ''))
		{
			if(checkNumeric(elements[l],0,100) == true)
			{
				totalpercentage += eval(elements[l].value);
			}
		}
	}
	document.getElementById('total').value = eval(totalpercentage);
}

// Return true if argument is input textbox
function IsTextBox(txt)
{
	return (txt.type == 'text');
}

// To Check Numeric value in text input
function checkNumeric(objName,minval, maxval)
{
	var numberfield = objName;
	if (chkNumeric(objName,minval,maxval) == false)
	{
		numberfield.select();
		numberfield.focus();
		return false;
	}
	else
	{
		return true;
	}
}

function chkNumeric(objName,minval,maxval)
{
	// only allow 0-9 be entered, plus any values passed
	var checkOK = "0123456789" + ".";
	var checkStr = objName;
	var allValid = true;
	var decPoints = 0;
	var allNum = "";
	document.getElementById('ValidValues').value = '0';
	
	for (i = 0;  i < checkStr.value.length;  i++)
	{
		ch = checkStr.value.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
			if (ch == checkOK.charAt(j))
			break;
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}
		if (ch != ",")
			allNum += ch;
	}
	if (!allValid)
	{	
		alert("Invalid Entry");
		return (false);
	}

	// set the minimum and maximum
	var chkVal = allNum;
	var prsVal = parseInt(allNum);
	if (chkVal != "" && !(prsVal > minval && prsVal <= maxval))
	{
		alert("Invalid Range");
		return (false);
	}
	document.getElementById('ValidValues').value = '1';
	return (true);
}

// Redirect to Specified page with setting cookie with selected fund
function RedirectTo(page)
{
	var fundarray = "";
	var elements = document.getElementsByTagName("INPUT");
	for(i=0;i<elements.length;i++)
	{
		if(IsCheckBox(elements[i]) == true && elements[i].id == "ChkFund")
		{
			if(elements[i].checked == true && fundarray.indexOf(elements[i].value) < 0)
			{
				fundarray = (fundarray != '' ? fundarray+',' : '');
				fundarray += elements[i].value;
			}
		}
	}
	if(fundarray != "")
	{
		SetCookie('FPUser',fundarray);
		window.location = page;
	}
	else
	{
		alert("Select Some Funds for Comparison/Portfolio.");
	}
}

// Redirecting to Comparison funds pdf
function CompareFunds()
{
	var fundarray = document.getElementById('fundsarray').value;
	var farray = new Array();
	
	var elements = document.getElementsByTagName("INPUT");
	for(i=0;i<elements.length;i++)
	{
		if(IsCheckBox(elements[i]) == true && elements[i].id == "ChkFund")
		{
			if(elements[i].checked == true && fundarray.indexOf(elements[i].value) < 0)
			{
				fundarray = (fundarray != '' ? fundarray+',' : '');
				fundarray += elements[i].value;
			}
		}
	}
	farray = fundarray.split(',');
	if(farray.length < 5 && farray.length > 1)
	{
		window.location = "ComparisionReport.aspx?typecode=" + fundarray;
	}
	else
	{
		alert("Comparison of Funds should range from (2 - 4)");
	}
}

// Validating fund weight and redirecting to portfolio pdf
function ViewPortfolio()
{
	var shortlist=GetCookie('FPUser');
	var weight = '';
	var elements = document.getElementsByTagName("INPUT");
	var isvalid = 1;
	for(var l=0;l<elements.length;l++)
	{
		if((IsTextBox(elements[l]) == true) && (elements[l].name == 'PortfolioPercentage'))
		{
			if(elements[l].value != '')
			{
				if(checkNumeric(elements[l],0,100) == true)
				{
					weight = (weight != '' ? (eval(weight) + ',') : '');
					weight += elements[l].value;
				}
				else
				{
					isvalid = 0;
				}
			}
			else
			{
				isvalid = 0;
			}
		}
	}
	if(document.MainForm.total.value > 100)
	{
		isvalid = 0;
	}
	if(isvalid == 1)
	{
		var selectedindex=document.MainForm.DurationMonths.selectedIndex;
		var span = document.MainForm.DurationMonths.options[selectedindex].value;
		selectedindex=document.MainForm.Benchmark.selectedIndex;
		var benchmark = document.MainForm.Benchmark.options[selectedindex].value;
		var benchmarktext = URLEncode(document.MainForm.Benchmark.options[selectedindex].text);
		window.location = "PortfolioScanReport.aspx?typecode=" + shortlist + "&weight=" + weight + "&span=" + span + "&benchmark=" + benchmark + "&benchmarkname=" + benchmarktext;
	}
	else
	{
		alert("Invalid Entry");
	}
}

function GoDisclaimer(){
		window.open("Disclaimer.htm","disclaimer","width=750,height=450");
}

