/*
// $Workfile:   KFD.js  $
// $Revision:   1.18  $
//
// $Log:   //track01/repository/PVCS/Project Databases/Development Database/archives/Cofunds .NET/Cofunds.Web/NEWPWS/Includes/KFD.js-arc  $

   Rev 1.18   May 19 2008 12:06:42   dvalentine
CR0094 - More than ten funds functionality added

   Rev 1.17   Dec 15 2006 12:55:56   acook
Add alt text to images

   Rev 1.16   Oct 12 2006 17:03:02   slacey
formatting edits

   Rev 1.15   Sep 05 2006 12:18:58   ksandhu
TCL 72378 - Enable/disable KFD User details depending on portfolio selected. 
Also renamed keyfeatures.DynamicProductList to keyfeatures.DynamicPortfolioList
to reflect earlier change to use portfolio

   Rev 1.14   Sep 04 2006 14:59:42   iglass
72701 - add test on argument to UpdateFundBasket() to keep fund count correct

   Rev 1.13   Sep 03 2006 11:03:50   ksandhu
CCR00331 - Remove debugger statement

   Rev 1.12   Sep 03 2006 10:41:06   ksandhu
CCR00331 - Changes to allow filtering on all KFD Funds

   Rev 1.11   Jul 25 2006 11:37:20   chgreaves
Cover not writing comments properly, breaking code.
//
//   Rev 1.10  Jul 25 2006 10:46:04   chgreaves
// Fixed bug taht meant warning was being displayed before funds were added
//
//   Rev 1.9   Jul 25 2006 10:46:04   chgreaves
//Added Javascript event handler, removed superflous code
// 
*/


//--------------------------------------------------------------------------------------------------------
// Functions for dynamically creating KFD fund basket
//--------------------------------------------------------------------------------------------------------

var currentProductType;
var currentOrigoProductType;

function buildKFDFundBasket(arrSelectedFunds){

	var TableHtml="";
	var iCount = 0;
	
	if(maxFunds != 0){
	
		TableHtml = TableHtml + '<table width=100% border="0" cellspacing="0" cellpadding="0">';
	
		for(i=0;i<arrSelectedFunds.length;i++){
			if(arrSelectedFunds[i] != ""){
				for(j=0;j<arrFunds.length;j++){
					
					if(arrFunds[j][FUND_CODE]==arrSelectedFunds[i]){
						 
						iCount = iCount + 1;
						
						TableHtml = TableHtml + '<tr>';
						TableHtml = TableHtml + '<td width=50% nowrap><p class=content>'
						TableHtml = TableHtml + arrFunds[j][FUND_NAME];
						TableHtml = TableHtml + '</p></td>';
						
						TableHtml = TableHtml + '<td>';
						
						TableHtml = TableHtml + '<input type="hidden" name="' + iCount + 'txt_code_id" value="' + arrFunds[j][FUND_CODE] + '"><input type="hidden" name="' + iCount + 'txt_name_id" value="' + arrFunds[j][FUND_NAME] + '">';
						
						TableHtml = TableHtml + '</td>';
						
						TableHtml = TableHtml + '<td width=50% align=right>';

						TableHtml = TableHtml + '<a href="javascript:updateFundBasket(' + "'" + arrKFDFundBasket[i] + "'" + ',false)"><img alt="Remove Fund" src="/brandhelper/brandedasset.aspx?src=/assets/BtnRmveFund.gif" border="0"></a>';
						
						TableHtml = TableHtml + '</td>';
						
						TableHtml = TableHtml + '</tr>';
						
						//TableHtml = TableHtml + '<tr height=2><td>&nbsp;</td></tr>';
						
						//its only at this point now that we've added a fund that we need to worry about warning the user if they change product type.
						if(typeof(ucProductSelector_PptChangedEvent) !== 'undefined')
							ucProductSelector_PptChangedEvent.AddDelegate(ucFundBasketKFD_PptChanged);
					}
				}
			}
		};
		TableHtml = TableHtml + '<tr><td><input type="hidden" name="maxFunds" value=' + maxFunds + '><input type="hidden" name="currentProductType" value=' + currentProductType + '><input type="hidden" name="currentOrigoProductType" value="' + currentOrigoProductType + '"></td></tr>';
		TableHtml = TableHtml + '</table>';
	}else{
		TableHtml = '<table width=100% border="0" cellspacing="0" cellpadding="0">';
		TableHtml = TableHtml + '<tr><td>&nbsp;</td></tr>'
		TableHtml = TableHtml + '</table>'
	};

	var fundbasketDiv = document.getElementById("fundbasket");
	fundbasketDiv.innerHTML = TableHtml;
   		
};

function updateFundBasket(mexid, bAddOrDelete){

	if (mexid == "") 
	{
		throw new Error('Invalid parameter. A blank fundID has been passed into updateFundBasket()');
	}

	if (mexid == "-1") {return;}

	var i, bMaxFlag = false, bFlag = false, bStop = false, bRedraw = true;

	for(i=0;i<arrKFDFundBasket.length;i++ && bStop == false){
			
		if(bAddOrDelete == true){
		
			// If they have reached the maximum
			if(maxFunds == arrKFDFundBasket.length  && bStop == false){
				alert("You have reached the maximum allowable in your fund basket.");
				bStop = true;
				bRedraw = false;
			};
		
			// (add only if does not exist already)
			if(arrKFDFundBasket[i] == mexid && bStop == false){
				bStop = true;
				bRedraw = false;
			};
			// add the fundid where there is an empty
			// space (==0)
			if(arrKFDFundBasket[i] == "" && bStop == false){	
				arrKFDFundBasket[i] = mexid;
				bStop = true;
				++maxFunds;
			};
		}else{
			// find fundid in basket, delete it and shift 
			// everything up one.
			if(arrKFDFundBasket[i] == mexid || bFlag == true){
				if(i==arrKFDFundBasket.length-1){
					arrKFDFundBasket[i] = '';
					--maxFunds;
				}else{
					arrKFDFundBasket[i] = arrKFDFundBasket[i+1];
				};
				bFlag = true;	
			}
		}
	};
	
	if(bRedraw){
		buildKFDFundBasket(arrKFDFundBasket);
	}
};

function validateKFD(){
	if(maxFunds == 0){
		alert('Please select at least one fund.');
	}else{
		document.form1.target = "_blank";
		document.form1.submit();
	}
}

function KFDFilterAllFunds()
{
	MasterAllFundsMC = KFDAllFundsManagementCompanyCode;
	SelectedFunction = KFDAllFundsFilterFunction;
	
	for (i=0;i<arrPPT.length;i++)
	{
	
		cur_arrPPTProductCode = arrPPT[i][PRODUCTPORTFOLIOTYPEDATA_PRODUCTCODE];
		cur_arrPPTPotfolioType = arrPPT[i][PRODUCTPORTFOLIOTYPEDATA_PORTFOLIOTYPE];
		
		// Find the equivalent productcode for current arrPPT PortfolioType/Service Offerening for 'master All Funds MCCode'
		//Start by getting productcode for matching current portfoliotype in ProductPortfolioTypeData
		master_ProductCode="";
		master_PortfolioCode=cur_arrPPTPotfolioType;
		for(j=0;j<ProductPortfolioTypeData.length;j++)
		{
			if ((ProductPortfolioTypeData[j][PRODUCTPORTFOLIOTYPEDATA_PORTFOLIOTYPE]==cur_arrPPTPotfolioType) &&
				(ProductPortfolioTypeData[j][PRODUCTPORTFOLIOTYPEDATA_PRODUCTCODE]!=cur_arrPPTProductCode) )
			{
				//Found matching PortfolioType that isnt current arrPPT productcode
				//Check if productcode belongs to 'master All Funds MCCode' by checking ProductData array
				if (ProductCodeManagementCompanyExists( ProductPortfolioTypeData[j][PRODUCTPORTFOLIOTYPEDATA_PRODUCTCODE],
														MasterAllFundsMC))
				{
					master_ProductCode=ProductPortfolioTypeData[j][PRODUCTPORTFOLIOTYPEDATA_PRODUCTCODE];
					break;
				}
				
			}
		}

		//Found 'Master' eqvialent product/portfolio. Now finds its position in arrProductGrid so we can swap
		//fund array in for current arrPPT product/portfolio
		var master_arrProductGridIndex = GetarrProductGridIndex(master_ProductCode,master_PortfolioCode,selectedServOff);
		var cur_arrProductGridIndex = GetarrProductGridIndex(cur_arrPPTProductCode,cur_arrPPTPotfolioType,selectedServOff);
		if ((master_arrProductGridIndex != -1) && (cur_arrProductGridIndex != -1) ) 
		{
			arrProductGrid[cur_arrProductGridIndex][2]=arrProductGrid[master_arrProductGridIndex][2];
		}

	}

	ProductSelectorInit();
}

function KFDEnableUserDetails(parmProductPortfolioType)
{
//Enable/disable KFD user details depending on portfolio selected
	var tmpPortfolioType="";
	var enableUserDetails = true;
	if (parmProductPortfolioType != "")
	{
		tmpPortfolioType=parmProductPortfolioType.split("_")[1];
		//Check if selected portfolio in KFDDynamicPortfolioList. If it is then enable UserDetails controls
		enableUserDetails = (KFDDynamicPortfolioList.indexOf(tmpPortfolioType) >= 0);
	}
	//Enable/disable user details. Only clear details if disabling controls
	toggleEnabled("KeyFeaturesHeader1_txtCompanyName",enableUserDetails,!enableUserDetails);
	toggleEnabled("KeyFeaturesHeader1_txtIntermediaryName",enableUserDetails,!enableUserDetails);
	toggleEnabled("KeyFeaturesHeader1_txtClientName",enableUserDetails,!enableUserDetails);
}

function ucFundBasketKFD_PptChanged(eventArgs)
{
	var newSelectedPPT = eventArgs.Value;
	//alert("ucFundBasketKFD_PptChanged: newSelectedPPT: " + newSelectedPPT);
	//alert("ucFundBasketKFD_PptChanged: getPPT: " + getPPT(newSelectedPPT));
	//alert("ucFundBasketKFD_PptChanged: eventArgs: " + eventArgs);
	//if (newSelectedPPT!="-1" && getPPT(newSelectedPPT)!=SelectedPPT)
	if (newSelectedPPT != "-1" && newSelectedPPT != SelectedPPT)
	{
		if(maxFunds > 0 ){
			if(window.confirm("You cannot mix your currently selected funds with funds from the product portfolio type that you\nare attempting to change to. Changing the product will clear the selected funds.\nDo you wish to continue?")){
				//Clear the fund basket
				for(var i=0;i<arrKFDFundBasket.length;i++){		
					arrKFDFundBasket[i] = '';
				}
				maxFunds = 0;
				
				//Update display
				buildKFDFundBasket(arrKFDFundBasket);

				//There's no funds in the basket, so we don't need the delegate anymore
				ucProductSelector_PptChangedEvent.RemoveDelegate(ucFundBasketKFD_PptChanged);
			}
			else
			{
				//RemoveDelegate, as we'll be changing the ddl value and we don't want trigger the onchange event unneccessarily
				ucProductSelector_PptChangedEvent.RemoveDelegate(ucFundBasketKFD_PptChanged);
				
				//Reset dropdown to how it was before
				var selectedPPT = txtSelectedPPT().value;
				var pptArray = ddlProductPortfolioType();
				for(var si=0;si<pptArray.length;si++)
				{
					//if(getPPT(pptArray[si].value)==txtSelectedPPT().value)
					if(pptArray[si].value == txtSelectedPPT().value)
					{
						pptArray.selectedIndex = si;

						break;
					}
				}
				
				//Need to add delegate again in case someone changes ppt again!
				ucProductSelector_PptChangedEvent.AddDelegate(ucFundBasketKFD_PptChanged);
			}
		}
	}
}

