/*======================================= header =============================================*/
/*======================================= header =============================================*/
/*======================================= header =============================================*/
function headerOnload(){
	//showLoading("setPortfolio");
	getField("link12").src.onclick=function(){showLoading("setPortfolio");}
	getField("menuItem2").src.onmouseup=function(){showLoading("setPortfolio");}
	getField("menuItem3").src.onmouseup=function(){showLoading("setPortfolio");}
	getField("menuItem4").src.onmouseup=function(){showLoading("setPortfolio");}
	getField("menuItem5").src.onmouseup=function(){showLoading("setPortfolio");}
	getField("menuItem6").src.onmouseup=function(){showLoading("setPortfolio");}

	//detect and fix the DIV size
	var loading = getField("setPortfolio");
	if (loading.src != null){
		window.onscroll = function(){
			loading.setWidth(document.body.clientWidth + document.body.scrollLeft); 
			loading.setHeight(document.body.clientHeight + document.body.scrollTop); 
		}
		window.onresize = function(){
			loading.setWidth(document.body.clientWidth + document.body.scrollLeft); 
			loading.setHeight(document.body.clientHeight + document.body.scrollTop); 
		}
	}
}

/*=================================== setPortfolio ======================================*/
/*=================================== setPortfolio ======================================*/
/*=================================== setPortfolio ======================================*/
function setPortOnload(){
	//document.body.onfocus=hiddenAlldiv;
	var myForm = getField("myForm");
	var keys=myForm.src.getElementsByTagName("input");

	//high light onSelect
	for (i=0;i<keys.length;i++){
		keys[i].onfocus=function(){this.select();}
	}

	//event listener
	document.onkeypress = stopRKey; 
	var sym, rat, mfe, mFeeBlock, row, annualReturn;
	var i=1;

	for (;i<=allocMax;i++){
		symbol= "symbol"+i;
		assignRatio = "assignRatio"+i;
		mFee = "mFee"+i;
		rows = "row"+i;
		dels = "delete"+i;

		//check symbol
		sym = getField(symbol).src;
		//sym.onkeyup=function(){autoClassComplete(this);}
		//sym.onchange=function(){checkSymbol(this);}
		sym.onblur=function(){checkDuplicate(this);checkSymbol(this);}
		//check rate
		rat = getField(assignRatio).src;
		rat.onblur=function(){checkEmpty(this);checkAssignRatio();}
		rat.onkeyup=function(){noAlpha(this);}
		//check mfee
		mfe = getField(mFee).src;
		mfe.onblur=function(){checkEmpty(this);checkMFee(this);}
		mfe.onkeyup=function(){noAlpha(this);}
		//mouseover effect
		row = getField(rows).src;
		row.onmouseover=function(){getField(this.id).setBgColor("8FC9FF");}
		row.onmouseout=function(){getField(this.id).setBgColor("FFFFFF");}
		//remove row
		del = getField(dels).src;
		del.onclick=function(){id=this.id.substring(6,this.id.length); delIt(id); moveUpRow(); checkAssignRatio();} 
		//hidden mFeeBlock initialize
		mFeeBlock = "mFeeBlock" + i;
		getField(mFeeBlock).setNone();
	}
	assignRatio = "assignRatio"+i;
	ratCash = getField(assignRatio).src;
	ratCash.onblur=function(){checkEmpty(this);checkAssignRatio();}
	ratCash.onkeyup=function(){noAlpha(this);}

	mFee = "mFee"+i;
	mfeCash = getField(mFee).src;
	mfeCash.onblur=function(){checkEmpty(this);checkMFee(this);}
	mfeCash.onkeyup=function(){noAlpha(this);}

	annualReturn = getField("annualReturn").src;
	annualReturn.onblur=function(){checkAnnualReturn(this);}

	//button
	var search = getField("search");
	search.src.onclick=function(){getCatResult(1,1,1);}

	//search en.
	var search_type = getField("type");
	var fund_family = getField("fund_family");
	var fund_cat = getField("fund_cat");
	var fund_fa_name = getField("fund_fa_name");
	var fund_cat_name = getField("fund_cat_name");
	var className_name = getField("className_name");
	var className = getField("className");

	//auto complete for search
	//className.src.onkeyup=function(){autoClassComplete(this,2);}

	search_type.src.onchange=function(){
		if (this.value == "Stock"){
			fund_fa_name.setHidden();
			fund_cat_name.setHidden();
			fund_family.setHidden();
			fund_cat.setHidden();
			className_name.setVisible();
			className.setVisible();
			//search.setVisible();
		}else if (this.value == "Index"){
			fund_fa_name.setHidden();
			fund_cat_name.setHidden();
			fund_family.setHidden();
			fund_cat.setHidden();
			className_name.setHidden();
			className.setHidden();
			//search.setHidden();
			getCatResult(1,1,1);
		}else{
			fund_fa_name.setVisible();
			fund_cat_name.setVisible();
			fund_family.setVisible();
			fund_cat.setVisible();
			className_name.setVisible();
			className.setVisible();
			//search.setVisible();
		}

	}

	//explain wordings
	var explain = getField("explain");
		explain.setNone();
	
	var ex1 = getField("ex1").src;
	ex1.str = "Characters arranged to signify each unique security <br />NYSE 3 characters <br />NASDAQ 4 characters <br />Mutual funds alphanumeric, end with X";
	ex1.explain = explain;
	ex1.onmouseover=showExplain;
	ex1.onmouseout=function(){explain.setNone();}

	var ex2 = getField("ex2").src;
	ex2.str = "This is the full name of a particular stock or ticker symbol.";
	ex2.explain = explain;
	ex2.onmouseover=showExplain;
	ex2.onmouseout=function(){explain.setNone();}

//	var ex3 = getField("ex3").src;
//	ex3.str = "This indicates the percentage of the entire portfolio invested in the particular security."; 
//	ex3.explain = explain;
//	ex3.onmouseover=showExplain;
//	ex3.onmouseout=function(){explain.setNone();}

	var ex4 = getField("ex4").src;
	ex4.str = "Often times, funds will charge a fee to manage an account which has a collection of securities. These fees pay the salaries of fund managers as well as the costs associated with maintaining the fund (for example, trading fees). The lower the fees, the more return you get to keep!";
	ex4.explain = explain;
	ex4.onmouseover=showExplain;
	ex4.onmouseout=function(){explain.setNone();}

	var reset = getField("reset").src;
//	reset.onclick=function(){location.reload(true);}
	reset.str = "This clears the current mix of securities shown above. Make sure you really want to press this button, please.";
	reset.explain = explain;
	reset.onmouseover=showExplain;
	reset.onmouseout=function(){explain.setNone();}

	var getAlloc = getField("getAlloc").src;
	getAlloc.onclick=function(){checkSubmit('../getFrontierAction.do','myForm','setPortfolio');}
	getAlloc.str = "This is where things get interesting! Sit back, relax. We&#39;ll do the work, and you can enjoy a diversified portfolio tailored to your risk and return preferences. For more information see <b class='blue'>HOW IT WORKS.</b>";
	getAlloc.explain = explain;
	getAlloc.onmouseover=showExplain;
	getAlloc.onmouseout=function(){explain.setNone();}
}

// action for check all the symbols
function checkAllSymbolAction(target ,reply){
	var replyArr = reply.split("|");
	
	var j=1;
	var mfee,assignRatio,mFeeBlock,del,symbol,symMsg,className,row,category;

	for (i=1;i<replyArr.length-1; i+=6){
		//alert(j+","+replyArr[i]+","+replyArr[i+1]+","+replyArr[i+2]+","+replyArr[i+3]+","+replyArr[i+4]);
		symbol = "symbol" + j;
		className = "className" + j;
		assignRatio = "assignRatio" + j;
		mFeeBlock = "mFeeBlock" + j;
		mfee = "mFee" + j;
		del = "delete" + j;
		row = "row" + j;
		category = "cat" + j;
		
		//1 = All ok and is stock, 
		//2 = All ok and is fund or index,
		//3 = Empty
		//4 = All Empty
		//5 = ok but insufficient data
		//0 = something wrong
		switch (replyArr[i]){
		case "0":
			getField(className).setValue("Not Available");
			getField(className).setColor("Red");
			getField(assignRatio).setValue("0");
			getField(mFeeBlock).setNone();
			getField(mfee).setValue("0");
			getField(category).setValue("");
			del = getField(del);
			del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' />");
			del.setCursor("pointer");
			break;
		case "1":
			getField(symbol).setValue(replyArr[i+1]);
			getField(className).setColor();
			getField(className).setValue(replyArr[i+2]);
			getField(assignRatio).setValue(replyArr[i+3]);
			getField(mFeeBlock).setNone();
			getField(category).setValue(replyArr[i+4]);
			del = getField(del);
			del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' /> ");
			del.setCursor("pointer");
			break;
		case "2":
			getField(symbol).setValue(replyArr[i+1]);
			getField(className).setColor();
			getField(className).setValue(replyArr[i+2]);
			getField(assignRatio).setValue(replyArr[i+3]);
			getField(mFeeBlock).setDisplay();
			getField(category).setValue(replyArr[i+4]);
			getField(mfee).setValue(replyArr[i+5]);
			del = getField(del);
			del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' />");
			del.setCursor("pointer");
			break;
		case "3":
			break;
		case "4":
			break;
		case "5":
			getField(className).setValue("Insufficient Data");
			getField(className).setColor("Red");
			getField(assignRatio1).setValue("0");
			getField(assignRatio2).setValue("0");
			getField(assignRatio3).setValue("0");
			getField(minRatio).setValue("0");
			getField(mFeeBlock).setNone();
			getField(mfee).setValue("0");
			getField(category).setValue("");
			del = getField(del);
			del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' />");
			del.setCursor("pointer");
			break;
		}
	j++;
	}
}

// check all the symbols and go to check the form
function checkAllSymbol(){
	var target = "";
	var xmlMsg;

	//getField("checkPoint").setValue("true");
	xmlMsg = buildPOST("myForm");
	doAjax("../checkAllClassAction.do",xmlMsg,'checkAllSymbolAction','0',target);
}

// action for check the symbol and enable the mFee field
function checkSymbolAction(target ,reply){
	var no = target.src.id.substring(6,target.src.id.length);
	var mfee = "mFee" + no;
	var assignRatio = "assignRatio" + no;
	var mFeeBlock = "mFeeBlock" + no;
	var del = "delete" + no;
	var symbol = "symbol" + no;
	var className = "className" + no;
	var row = "row" + no;
	var category = "cat" + no;
	var replyArr = reply.split("|");

	//1 = All ok and is stock, 
	//2 = All ok and is fund or index, 
	//3 = Empty
	//4 = ok but insufficient data
	//0 = something wrong
	switch (replyArr[0]){
	case "0":
		getField(className).setValue("Not Available");
		getField(className).setColor("Red");
		getField(assignRatio).setValue("0");
		getField(mfee).setValue("0");
		getField(mFeeBlock).setNone();
		getField(category).setValue("");
		del = getField(del);
		del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' />");
		del.setCursor("pointer");
		break;
	case "1":
		getField(mFeeBlock).setNone();
		getField(symbol).setValue(replyArr[1]);
		getField(className).setValue(replyArr[2]);
		getField(className).setColor();
		//getField(assignRatio).setValue("0");
		getField(category).setValue(replyArr[3]);
		del = getField(del);
		del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' />");
		del.setCursor("pointer");
		break;
	case "2":
		getField(mFeeBlock).setDisplay();
		getField(symbol).setValue(replyArr[1]);
		getField(className).setValue(replyArr[2]);
		getField(className).setColor();
		//getField(assignRatio).setValue("0");
		getField(category).setValue(replyArr[3]);
		getField(mfee).setValue(replyArr[4]);
		del = getField(del);
		del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' />");
		del.setCursor("pointer");
		break;
	case "3":
		delIt(no);
		break;
	case "4":
		getField(className).setValue("Insufficient Data");
		getField(className).setColor("Red");
		getField(assignRatio).setValue("0");
		getField(mfee).setValue("0");
		getField(mFeeBlock).setNone();
		getField(category).setValue("");
		del = getField(del);
		del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' />");
		del.setCursor("pointer");
		break;
	}
}

// check the symbol
function checkSymbol(symbol){
	var field = (symbol.id).substring(6,symbol.id.length);
	var targetName = "symbol" + field;
	var target = getField(targetName);
	var xmlMsg = "symbol="+ trim(symbol.value);

	if (trim(symbol.value).length == 0){
		checkSymbolAction(target ,"3");
	}else{
		target.setDisplay();
		doAjax("../checkClassAction.do",xmlMsg,'checkSymbolAction','0',target);
	}
}

// del row
function delIt(no){
	var symMsg,mfee,assignR,mFeeBlock,del,symbol,className,category;

	symbol = "symbol" + no;
	className = "className" + no;
	mFeeBlock = "mFeeBlock" + no;
	assignR = "assignRatio" + no;
	mfee = "mFee" + no;
	del = "delete" + no;
	category = "cat" + no;
			
	getField(symbol).setValue("");
	getField(className).setValue("");
	getField(assignR).setValue("0");
	getField(mFeeBlock).setNone();
	getField(mfee).setValue("0");
	getField(del).setInnerHTML("");
	getField(del).setCursor("");
	getField(category).setValue("");
}

//moveup
function moveUpRow(){
	var mfee,assignR,mFeeBlock,del,symbol,className,category;
	var mfee_src,assignR_src,mFeeBlock_src,del_src,symbol_src,className_src,category_src;
	var symkey = "";
	var classkey = "";
	var classColorkey = "";
	var sMsgkey = "";
	var asskey = "";
	var mfeekey = "";
	var delkey = "";
	var catekey = "";

	//get data from form
	for (i=1;i<=allocMax;i++){
		symbol = "symbol" + i;
		className = "className" + i;
		assignR = "assignRatio" + i;
		mFeeBlock = "mFeeBlock" + i;
		mfee = "mFee" + i;
		del = "delete" + i;
		category = "cat" + i;

		symbol_src = getField(symbol);
		className_src = getField(className);
		assignR_src = getField(assignR);
		mFeeBlock_src = getField(mFeeBlock);
		mfee_src = getField(mfee);
		del_src = getField(del);
		category_src = getField(category);

		//get all data
		if(trim(symbol_src.getValue()) !=""){
			symkey += symbol_src.getValue()+"|";
			classkey += className_src.getValue()+"|";
			classColorkey += className_src.getColor()+"|";
			asskey += assignR_src.getValue()+"|";
			mfeekey += mfee_src.getValue()+"|";
			delkey += del_src.getInnerHTML()+"|";
			catekey += category_src.getValue()+"|";
		}
	}

	//moveup
	var symkeyArr = symkey.split("|");
	var classkeyArr = classkey.split("|");
	var classColorkeyArr = classColorkey.split("|");
	var asskeyArr = asskey.split("|");
	var mfeekeyArr = mfeekey.split("|");
	var delkeyArr = delkey.split("|");
	var catekeyArr = catekey.split("|");

	for (i=1;i<=allocMax;i++){
		symbol = "symbol" + i;
		className = "className" + i;
		assignR = "assignRatio" + i;
		mFeeBlock = "mFeeBlock" + i;
		mfee = "mFee" + i;
		del = "delete" + i;
		category = "cat" + i;

		symbol_src = getField(symbol);
		className_src = getField(className);
		assignR_src = getField(assignR);
		mFeeBlock_src = getField(mFeeBlock);
		mfee_src = getField(mfee);
		del_src = getField(del);
		category_src = getField(category);

		//moveup data
		if(symkeyArr[i-1]){
			symbol_src.setValue(symkeyArr[i-1]);
			className_src.setValue(classkeyArr[i-1]);
			className_src.setColor(classColorkeyArr[i-1]);
			assignR_src.setValue(asskeyArr[i-1]);
			if (mfeekeyArr[i-1] == 0) mFeeBlock_src.setNone();
			else  mFeeBlock_src.setDisplay();
			mfee_src.setValue(mfeekeyArr[i-1]);
			del_src.setInnerHTML(delkeyArr[i-1]);
			category_src.setValue(catekeyArr[i-1]);
		}else{
			delIt(i);
		}
	}
}


/*=================================== setPortfolio - search ======================================*/
/*=================================== setPortfolio - search ======================================*/
/*=================================== setPortfolio - search ======================================*/
// action for get search by Category result AJAX
function getStockAction(target ,reply){
	target.setBorder();
	target.setInnerHTML(reply);
}

// find DB and show the result of search by category via AJAX
function getCatResult(limit, order, nowPage){
	var xmlHttp = xmlHttpObject();
	var target = getField("result");

	var type = getField("type").getValue();
	var className = getField("className").getValue();
	var classNameArr = className.split(" ");
	className = "";

	//pass the data to str form array
	for (i=0;i<classNameArr.length; i++){
		if (!trim(classNameArr[i]).length == 0){
			className += "&className="+classNameArr[i];
		}
	}
	if (className==""){className += "&className=";}

	//check the type
	if(type == "Stock"){		
		var xmlMsg = "type="+type+className+"&limit="+limit+"&order="+order+"&nowPage="+nowPage;
	}else{
		var fund_family = getField("fund_family").getValue();
		var fund_cat = getField("fund_cat").getValue();
		var xmlMsg = "type="+type+"&fund_family="+fund_family+"&fund_cat="+fund_cat+className+"&limit="+limit+"&order="+order+"&nowPage="+nowPage;
	}

	hiddenAlldiv();
	target.setDisplay();
	target.setVisible();
	target.setLoading(2);
	doAjax("../searchByCat.do",xmlMsg,'getStockAction','0',target);
}

// action for get return of symbol
function getReturnAction(target ,reply){
	target.setBgColor("#EEEEEE");
	target.setInnerHTML(reply);
}

// find DB and show the return of symbol via AJAX
function getReturn(symbol){
	var xmlHttp = xmlHttpObject();
	var targetName = symbol;
	var xmlMsg = "symbol="+symbol;
	var target = getField(targetName);

	if(target.src.innerHTML == "" || target.src.innerHTML == null ){
		target.setVisible();
		target.setLoading(2);
		doAjax("../getReturnAction.do",xmlMsg,'getReturnAction','0',target);
	}else{
		target.setHidden();
		target.setInnerHTML("");
	}
}

// add the symbol to input field
function addToForm(symbol,name){	
	var targetName;
	var targetName2;
	var target;
	var target2;
	var sign;

	for (i=1;i<=allocMax;i++ ){
		targetName = "symbol" +i;
		targetName2 = "className" +i;
		target = getField(targetName);
		target2 = getField(targetName2);

		if (trim(target.src.value).length==0 || i >= allocMax){
			target.setValue(symbol);
			target2.setValue(name);
			hiddenAlldiv();
			target.focus(); // focus field after add
			sign = true;
			break;
		}else sign = false;
	}
	if (!sign) alert("Full");
}


/*=================================== editPortfolio ======================================*/
/*=================================== editPortfolio ======================================*/
/*=================================== editPortfolio ======================================*/
//edit Portfolion onload
function editPortOnload(){
	//document.body.onfocus=hiddenAlldiv;
	var myForm = getField("myForm");
	var keys=myForm.src.getElementsByTagName("input");

	//high light onSelect
	for (i=0;i<keys.length;i++){
		keys[i].onfocus=function(){this.select();}
	}
	
	//event listener
	document.onkeypress = stopRKey; 
	var sym, rat1, rat2, rat3, minR, mfe, mFeeBlock, row, annualReturn;
	var i=1;
	for (;i<=allocMax;i++){
	
		symbol = "symbol"+i;
		assignRatio1 = "assignRatio1_"+i;
		assignRatio2 = "assignRatio2_"+i;
		assignRatio3 = "assignRatio3_"+i;
		minRatio = "minRatio"+i;
		mFee = "mFee"+i;
		rows = "row"+i;
		dels = "delete"+i;
	
		//check symbol
		sym = getField(symbol).src;
		//sym.onkeyup=function(){autoClassComplete(this);}
		//sym.onchange=function(){checkSymbol_edit(this);}
		sym.onblur=function(){checkDuplicate(this);checkSymbol_edit(this);}
		//check rate
		rat1 = getField(assignRatio1).src;
		rat1.onblur=function(){checkEmpty(this);checkAssignRatio("1_");}
		rat1.onkeyup=function(){noAlpha(this);}
		rat2 = getField(assignRatio2).src;
		rat2.onblur=function(){checkEmpty(this);checkAssignRatio("2_");}
		rat2.onkeyup=function(){noAlpha(this);}
		rat3 = getField(assignRatio3).src;
		rat3.onblur=function(){checkEmpty(this);checkAssignRatio("3_");}
		rat3.onkeyup=function(){noAlpha(this);}
		//check min rate
		minR = getField(minRatio).src;
		minR.onblur=function(){checkEmpty(this);checkMinRatio();}
		minR.onkeyup=function(){noAlpha(this);}
		//check mfee
		mfe = getField(mFee).src;
		mfe.onblur=function(){checkEmpty(this);checkMFee(this);}
		mfe.onkeyup=function(){noAlpha(this);}
		//mouseover effect
		row = getField(rows).src;
		row.onmouseover=function(){getField(this.id).setBgColor("8FC9FF");}
		row.onmouseout=function(){getField(this.id).setBgColor("FFFFFF");}
		//remove row
		del = getField(dels).src;
		del.onclick=function(){id=this.id.substring(6,this.id.length);
								delIt_edit(id); 
								moveUpRow_edit(); 
								checkAssignRatio("1_"); 
								checkAssignRatio("2_"); 
								checkAssignRatio("3_");
								checkMinRatio();}
		//hidden mFeeBlock initialize
		mFeeBlock = "mFeeBlock" + i;
		getField(mFeeBlock).setNone();
	}
	assignRatio1 = "assignRatio1_"+i;
	rat1Cash = getField(assignRatio1).src;
	rat1Cash.onblur=function(){checkEmpty(this);checkAssignRatio("1_");}
	rat1Cash.onkeyup=function(){noAlpha(this);}

	assignRatio2 = "assignRatio2_"+i;
	rat2Cash = getField(assignRatio2).src;
	rat2Cash.onblur=function(){checkEmpty(this);checkAssignRatio("2_");}
	rat2Cash.onkeyup=function(){noAlpha(this);}
	
	assignRatio3 = "assignRatio3_"+i;
	rat3Cash = getField(assignRatio3).src;
	rat3Cash.onblur=function(){checkEmpty(this);checkAssignRatio("3_");}
	rat3Cash.onkeyup=function(){noAlpha(this);}
	
	minRatio = "minRatio"+i;
	minRCash = getField(minRatio).src;
	minRCash.onblur=function(){checkEmpty(this);checkMinRatio();}
	minRCash.onkeyup=function(){noAlpha(this);}

	mFee = "mFee"+i;
	mfeCash = getField(mFee).src;
	mfeCash.onblur=function(){checkEmpty(this);checkMFee(this);}
	mfeCash.onkeyup=function(){noAlpha(this);}

	annualReturn = getField("annualReturn").src;
	annualReturn.onblur=function(){checkAnnualReturn(this);}

		//button
	var search = getField("search");
	search.src.onclick=function(){getCatResult(1,1,1);}

	//search en.
	var search_type = getField("type");
	var fund_family = getField("fund_family");
	var fund_cat = getField("fund_cat");
	var fund_fa_name = getField("fund_fa_name");
	var fund_cat_name = getField("fund_cat_name");
	var className_name = getField("className_name");
	var className = getField("className");

	//auto complete for search
	//className.src.onkeyup=function(){autoClassComplete(this,2);}

	search_type.src.onchange=function(){
		if (this.value == "Stock"){
			fund_fa_name.setHidden();
			fund_cat_name.setHidden();
			fund_family.setHidden();
			fund_cat.setHidden();
			className_name.setVisible();
			className.setVisible();
			//search.setVisible();
		}else if (this.value == "Index"){
			fund_fa_name.setHidden();
			fund_cat_name.setHidden();
			fund_family.setHidden();
			fund_cat.setHidden();
			className_name.setHidden();
			className.setHidden();
			//search.setHidden();
			getCatResult(1,1,1);
		}else{
			fund_fa_name.setVisible();
			fund_cat_name.setVisible();
			fund_family.setVisible();
			fund_cat.setVisible();
			className_name.setVisible();
			className.setVisible();
			//search.setVisible();
		}

	}

	//explain wordings
	var explain = getField("explain");
		explain.setNone();
	
	var ex1 = getField("ex1").src;
	ex1.str = "Characters arranged to signify each unique security <br />NYSE 3 characters <br />NASDAQ 4 characters <br />Mutual funds alphanumeric, end with X";
	ex1.explain = explain;
	ex1.onmouseover=showExplain;
	ex1.onmouseout=function(){explain.setNone();}

	var ex2 = getField("ex2").src;
	ex2.str = "This is the full name of a particular stock or ticker symbol.";
	ex2.explain = explain;
	ex2.onmouseover=showExplain;
	ex2.onmouseout=function(){explain.setNone();}

	var ex3 = getField("ex3").src;
	ex3.str = "This indicates the percentage of the entire portfolio invested in the particular security."; //This indicates the percentage of the entire portfolio invested in the particular security.
	ex3.explain = explain;
	ex3.onmouseover=showExplain;
	ex3.onmouseout=function(){explain.setNone();}

	var ex4 = getField("ex4").src;
	ex4.str = "Often times, funds will charge a fee to manage an account which has a collection of securities. These fees pay the salaries of fund managers as well as the costs associated with maintaining the fund (for example, trading fees). The lower the fees, the more return you get to keep!";
	ex4.explain = explain;
	ex4.onmouseover=showExplain;
	ex4.onmouseout=function(){explain.setNone();}

	var reset_btn = getField("reset_btn").src;
	reset_btn.onclick=function(){document.getElementById("myForm").reset();checkAllSymbol_edit();checkAssignRatio('1_');checkAssignRatio('2_');checkAssignRatio('3_');}
//	reset_btn.str = "This clears the current mix of securities shown above. Make sure you really want to press this button, please.";
//	reset_btn.explain = explain;
//	reset_btn.onmouseover=showExplain;
//	reset_btn.onmouseout=function(){explain.setNone();}

	var getAlloc = getField("getAlloc").src;
	getAlloc.onclick=function(){checkSubmit_edit();}
}

// update action for myPortfolio
function updateAction(target ,reply){
	//alert(reply);
}

// action for check all the symbols
function checkAllSymbolAction_edit(target ,reply){
	var replyArr = reply.split("|");
	var j=1;
	var mfee,assignRatio1,assignRatio2,assignRatio3,mFeeBlock,del,symbol,className,row,category;

	for (i=1;i<replyArr.length-1; i+=9){
		//alert(j+","+replyArr[i]+","+replyArr[i+1]+","+replyArr[i+2]+","+replyArr[i+3]+","+replyArr[i+4]+","+replyArr[i+5]+","+replyArr[i+6]+","+replyArr[i+7]+","+replyArr[i+8]);
		symbol = "symbol" + j;
		className = "className" + j;
		assignRatio1 = "assignRatio1_" + j;
		assignRatio2 = "assignRatio2_" + j;
		assignRatio3 = "assignRatio3_" + j;
		minRatio = "minRatio" + j;
		mFeeBlock = "mFeeBlock" + j;
		mfee = "mFee" + j;
		del = "delete" + j;
		row = "row" + j;
		category = "cat" + j;
		
		//1 = All ok and is stock, 
		//2 = All ok and is fund or index,
		//3 = Empty
		//4 = All Empty
		//5 = ok but insufficient data
		//0 = something wrong
		switch (replyArr[i]){
		case "0":
			getField(className).setValue("Not Available");
			getField(className).setColor("Red");
			getField(assignRatio1).setValue("0");
			getField(assignRatio2).setValue("0");
			getField(assignRatio3).setValue("0");
			getField(minRatio).setValue("0");
			getField(mFeeBlock).setNone();
			getField(mfee).setValue("0");
			getField(category).setValue("");
			del = getField(del);
			del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' />");
			del.setCursor("pointer");
			break;
		case "1":
			getField(symbol).setValue(replyArr[i+1]);
			getField(className).setColor();
			getField(className).setValue(replyArr[i+2]);
			getField(assignRatio1).setValue(replyArr[i+3]);
			getField(assignRatio2).setValue(replyArr[i+4]);
			getField(assignRatio3).setValue(replyArr[i+5]);
			getField(minRatio).setValue(replyArr[i+6]);
			getField(mFeeBlock).setNone();
			getField(category).setValue(replyArr[i+7]);
			del = getField(del);
			del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' /> ");
			del.setCursor("pointer");
			break;
		case "2":
			getField(symbol).setValue(replyArr[i+1]);
			getField(className).setColor();
			getField(className).setValue(replyArr[i+2]);
			getField(assignRatio1).setValue(replyArr[i+3]);
			getField(assignRatio2).setValue(replyArr[i+4]);
			getField(assignRatio3).setValue(replyArr[i+5]);
			getField(minRatio).setValue(replyArr[i+6]);
			getField(mFeeBlock).setDisplay();
			getField(category).setValue(replyArr[i+7]);
			if (getField(mfee).getValue == 0 || getField(mfee).getValue == "" )getField(mfee).setValue(replyArr[i+8]);
			del = getField(del);
			del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' />");
			del.setCursor("pointer");
			break;
		case "3":
			break;
		case "4":
			break;
		case "5":
			getField(className).setValue("Insufficient Data");
			getField(className).setColor("Red");
			getField(assignRatio1).setValue("0");
			getField(assignRatio2).setValue("0");
			getField(assignRatio3).setValue("0");
			getField(minRatio).setValue("0");
			getField(mFeeBlock).setNone();
			getField(mfee).setValue("0");
			getField(category).setValue("");
			del = getField(del);
			del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' />");
			del.setCursor("pointer");
			break;
		}
	j++;
	}
}

// check all the symbols and go to check the form
function checkAllSymbol_edit(){
	var target = "";
	var xmlMsg;

	//getField("checkPoint").setValue("true");
	xmlMsg = buildPOST("myForm");
	doAjax("../checkAllClassAction_edit.do",xmlMsg,'checkAllSymbolAction_edit','0',target);
}

// action for check the symbol and enable the mFee field
function checkSymbolAction_edit(target ,reply){
	var no = target.src.id.substring(6,target.src.id.length);
	var mfee = "mFee" + no;
	var assignRatio1 = "assignRatio1_" + no;
	var assignRatio2 = "assignRatio2_" + no;
	var assignRatio3 = "assignRatio3_" + no;
	var minRatio = "minRatio" + no;
	var mFeeBlock = "mFeeBlock" + no;
	var del = "delete" + no;
	var symbol = "symbol" + no;
	var className = "className" + no;
	var row = "row" + no;
	var category = "cat" + no;
	var replyArr = reply.split("|");

	//1 = All ok and is stock, 
	//2 = All ok and is fund or index, 
	//3 = Empty
	//4 = ok but insufficient data
	//0 = something wrong
	switch (replyArr[0]){
	case "0":
		getField(className).setValue("Not Available");
		getField(className).setColor("Red");
		getField(assignRatio1).setValue("");
		getField(assignRatio2).setValue("");
		getField(assignRatio3).setValue("");
		getField(minRatio).setValue("");
		getField(mfee).setValue("");
		getField(mFeeBlock).setNone();
		getField(category).setValue("");
		del = getField(del);
		del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' />");
		del.setCursor("pointer");
		break;
	case "1":
		getField(mFeeBlock).setNone();
		getField(symbol).setValue(replyArr[1]);
		getField(className).setColor();
		getField(className).setValue(replyArr[2]);
		getField(category).setValue(replyArr[3]);
		del = getField(del);
		del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' />");
		del.setCursor("pointer");
		break;
	case "2":
		getField(mFeeBlock).setDisplay();
		getField(symbol).setValue(replyArr[1]);
		getField(className).setColor();
		getField(className).setValue(replyArr[2]);
		getField(category).setValue(replyArr[3]);
		getField(mfee).setValue(replyArr[4]);
		del = getField(del);
		del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' />");
		del.setCursor("pointer");
		break;
	case "3":
		delIt_edit(no);
		break;
	case "4":
		getField(className).setValue("Insufficient Data");
		getField(className).setColor("Red");
		getField(assignRatio1).setValue("");
		getField(assignRatio2).setValue("");
		getField(assignRatio3).setValue("");
		getField(minRatio).setValue("");
		getField(mfee).setValue("");
		getField(mFeeBlock).setNone();
		getField(category).setValue("");
		del = getField(del);
		del.setInnerHTML("<img src='../templates/default/images/portfolio/cross.jpg' alt='Remove' />");
		del.setCursor("pointer");
		break;
	}
}

// check the symbol
function checkSymbol_edit(symbol){
	var field = (symbol.id).substring(6,symbol.id.length);
	var targetName = "symbol" + field;
	var target = getField(targetName);
	var xmlMsg = "symbol="+ trim(symbol.value);

	if (trim(symbol.value).length == 0){
		checkSymbolAction_edit(target ,"3");
	}else{
		target.setDisplay();
		//target.setLoading(1);
		doAjax("../checkClassAction_edit.do",xmlMsg,'checkSymbolAction_edit','0',target);
	}
}

// del row
function delIt_edit(no){
	var mfee = "mFee" + no;
	var assignRatio1 = "assignRatio1_" + no;
	var assignRatio2 = "assignRatio2_" + no;
	var assignRatio3 = "assignRatio3_" + no;
	var minRatio = "minRatio" + no;
	var mFeeBlock = "mFeeBlock" + no;
	var del = "delete" + no;
	var symbol = "symbol" + no;
	var className = "className" + no;
	var category = "cat" + no;

	getField(symbol).setValue("");
	getField(className).setValue("");
	getField(assignRatio1).setValue("0");
	getField(assignRatio2).setValue("0");
	getField(assignRatio3).setValue("0");
	getField(minRatio).setValue("0");
	getField(mFeeBlock).setNone();
	getField(mfee).setValue("0");
	getField(del).setInnerHTML("");
	getField(del).setCursor("cursor");
	getField(category).setValue("");
}

//moveup
function moveUpRow_edit(){
	var symMsg,mfee,assignR1,assignR2,assignR3,minR,mFeeBlock,del,symbol,className,category;
	var symMsg_src,mfee_src,assignR1_src,assignR2_src,assignR3_src,minR_src,mFeeBlock_src,del_src,symbol_src,className_src,category_src;
	var symkey = "";
	var classkey = "";
	var classColorkey = "";
	var asskey1 = "";
	var asskey2 = "";
	var asskey3 = "";
	var minkey = "";
	var mfeekey = "";
	var delkey = "";
	var catekey = "";

	//get data from form
	for (i=1;i<=allocMax;i++){
		symbol = "symbol" + i;
		className = "className" + i;
		assignR1 = "assignRatio1_" + i;
		assignR2 = "assignRatio2_" + i;
		assignR3 = "assignRatio3_" + i;
		minR = "minRatio" + i;
		mFeeBlock = "mFeeBlock" + i;
		mfee = "mFee" + i;
		del = "delete" + i;
		category = "cat" + i;

		symbol_src = getField(symbol);
		className_src = getField(className);
		assignR1_src = getField(assignR1);
		assignR2_src = getField(assignR2);
		assignR3_src = getField(assignR3);
		minR_src = getField(minR);
		mFeeBlock_src = getField(mFeeBlock);
		mfee_src = getField(mfee);
		del_src = getField(del);
		category_src = getField(category);

		//get all data
		if(trim(symbol_src.getValue()) !=""){
			symkey += symbol_src.getValue()+"|";
			classkey += className_src.getValue()+"|";
			classColorkey += className_src.getColor()+"|";
			asskey1 += assignR1_src.getValue()+"|";
			asskey2 += assignR2_src.getValue()+"|";
			asskey3 += assignR3_src.getValue()+"|";
			minkey += minR_src.getValue()+"|";
			mfeekey += mfee_src.getValue()+"|";
			delkey += del_src.getInnerHTML()+"|";
			catekey += category_src.getValue()+"|";
		}
	}

	//moveup
	var symkeyArr = symkey.split("|");
	var classkeyArr = classkey.split("|");
	var classColorkeyArr = classColorkey.split("|");
	var asskeyArr1 = asskey1.split("|");
	var asskeyArr2 = asskey2.split("|");
	var asskeyArr3 = asskey3.split("|");
	var minkeyArr = minkey.split("|");
	var mfeekeyArr = mfeekey.split("|");
	var delkeyArr = delkey.split("|");
	var catekeyArr = catekey.split("|");

	for (i=1;i<=allocMax;i++){
		symbol = "symbol" + i;
		className = "className" + i;
		assignR1 = "assignRatio1_" + i;
		assignR2 = "assignRatio2_" + i;
		assignR3 = "assignRatio3_" + i;
		minR = "minRatio" + i;
		mFeeBlock = "mFeeBlock" + i;
		mfee = "mFee" + i;
		del = "delete" + i;
		category = "cat" + i;

		symbol_src = getField(symbol);
		className_src = getField(className);
		assignR1_src = getField(assignR1);
		assignR2_src = getField(assignR2);
		assignR3_src = getField(assignR3);
		minR_src = getField(minR);
		mFeeBlock_src = getField(mFeeBlock);
		mfee_src = getField(mfee);
		del_src = getField(del);
		category_src = getField(category);
	
	
		//moveup data
		if(symkeyArr[i-1]){
			symbol_src.setValue(symkeyArr[i-1]);
			className_src.setValue(classkeyArr[i-1]);
			className_src.setColor(classColorkeyArr[i-1]);
			assignR1_src.setValue(asskeyArr1[i-1]);
			assignR2_src.setValue(asskeyArr2[i-1]);
			assignR3_src.setValue(asskeyArr3[i-1]);
			minR_src.setValue(minkeyArr[i-1]);
			if (mfeekeyArr[i-1] == 0) mFeeBlock_src.setNone();
			else  mFeeBlock_src.setDisplay();
			mfee_src.setValue(mfeekeyArr[i-1]);
			del_src.setInnerHTML(delkeyArr[i-1]);
			category_src.setValue(catekeyArr[i-1]);
		}else{
			delIt_edit(i);
		}
	}
}


/*=================================== getFrontier ======================================*/
/*=================================== getFrontier ======================================*/
/*=================================== getFrontier ======================================*/
function getFrontOnload(){
	//event listener
	getField("nav-1").src.onclick=function(){goTabs(1);}
	getField("nav-2").src.onclick=function(){goTabs(2);}
	getField("nav-3").src.onclick=function(){goTabs(3);}
	if (tabNum > 3){
		getField("nav-4").src.onclick=function(){goTabs(4);}
		getField("nav-5").src.onclick=function(){goTabs(5);}
	}

	var explain = getField("explain");
		explain.setNone();

	var ex1 = getField("ex1").src;
	ex1.str = "The Efficient Frontier is the line on the graph below that represents all of the portfolios with the highest possible returns for any given level of risk *.";
	ex1.explain = explain;
	ex1.onmouseover=showExplain;
	ex1.onmouseout=function(){explain.setNone();}
}

// go to tab
function goTabs(form){
	tabsAction(form,tabNum,"nav-");
	switch (form){
		case 1: getAllocChart();break;
		case 2: getComparisonChart();break;
		case 3: getProjectChart();break;
		case 4: getMarketAss();break;
		case 5: getCustomOpt();break;
	}
}

/*=================================== getAllocation ======================================*/
/*=================================== getAllocation ======================================*/
/*=================================== getAllocation ======================================*/
function getAllocOnload(){
	//event listener
	var explain = getField("explain");
		explain.setNone();

	//check premium and initial the suggestion option
	if (premium){
		var now = parseFloat(getField("num_2").src.value);
		for (i=1;i<=25;i++ ){
			var name = "n1-sub" + i;
			eval("var Sub"+i+" = getField('"+name+"').src");
			eval("Sub"+i+".onclick=function(){setPremiumNum("+i+");getAllocChart();}");

			var name2 = "point" + i;
			eval("var point"+i+" = getField('"+name2+"').src");
			eval("if ( point"+i+" != null){	point"+i+".onclick=function(){setPremiumNum("+i+");getAllocChart();}}");
		}

		var lower = getField("lower").src;
		if (now<=1){lower.className = "Selected";}
		else{lower.onclick=function(){setPremiumNum(now-1);getAllocChart();}}

		var higher = getField("higher").src;
		if (now>=25){higher.className = "Selected";}
		else{higher.onclick=function(){setPremiumNum(now+1);getAllocChart();}}
		
		var target = "n1-sub" + now;
		if (document.getElementById(target)){getField(target).src.selected = "Selected";}

		var target2 = "point" + now;
		if (document.getElementById(target2)){getField(target2).src.className = "Selected";}		
	}else{
		for (i=1;i<=5;i++ ){
			var name = "n1-sub" + i;
			eval("var Sub"+i+" = getField('"+name+"').src");
			eval("Sub"+i+".onclick=function(){setNum("+i+");getAllocChart();}");
		}

		var target = "n1-sub" + getField("num_2").src.value;
		if (document.getElementById(target)){getField(target).src.className = "Selected";}
	}

	var subhelp = getField("n1-sub-help").src;
	subhelp.str = "All Investors have different tolerances of risk and return for their portfolio. The more aggressive your portfolio is, it has a higher probability of making higher returns, but also has added volatility, which could create more severe negative returns. Conversely, a more conservative portfolio is much more likely to produce more modest returns with a lower potential for volatility. You should choose a portfolio which most closely matches your investment goals with your tolerance for risk.";
	subhelp.explain = explain;
	subhelp.onmouseover=showExplain;
	subhelp.onmouseout=function(){explain.setNone();}

	var re_1 = getField("return_1").src;
	re_1.str = "Return definition - Growth percent caused by investment choices and their market performance. ";
	re_1.explain = explain;
	re_1.onmouseover=showExplain;
	re_1.onmouseout=function(){explain.setNone();}

	var risk_1 = getField("risk_1").src;
	risk_1.str = "Risk definition - Probability that an the actual return of an investment will be different than the expected return. Furthermore, risk also addresses how substantial the difference between the actual and expected returns is. ";
	risk_1.explain = explain;
	risk_1.onmouseover=showExplain;
	risk_1.onmouseout=function(){explain.setNone();}

	var re_2 = getField("return_2").src;
	re_2.str = "Return definition - Growth percent caused by investment choices and their market performance. ";
	re_2.explain = explain;
	re_2.onmouseover=showExplain;
	re_2.onmouseout=function(){explain.setNone();}

	var risk_2 = getField("risk_2").src;
	risk_2.str = "Risk definition - Probability that an the actual return of an investment will be different than the expected return. Furthermore, risk also addresses how substantial the difference between the actual and expected returns is. ";
	risk_2.explain = explain;
	risk_2.onmouseover=showExplain;
	risk_2.onmouseout=function(){explain.setNone();}
	
	if (document.getElementById("savePortfolio")){
		var savePort = getField("savePortfolio").src;
		savePort.onclick=function(){
			var savePort_name = getField("savePort_name")
				
			var savePort_nameArr = savePort_name.getValue().split("|");

			var answer = confirm("Confirm to replace "+savePort_nameArr[1]+"?")
			if (answer){
				var xmlHttp = xmlHttpObject();
				var xmlMsg = buildPOST("myForm")+"&savePort_name="+savePort_nameArr[0];

				//showLoading("setPortfolio");
				doAjax("/portfolio/replace.page",xmlMsg,'replaceAction','0',target);
			}
		}
	}

	if (document.getElementById("delPortfolio")){
		var delPort = getField("delPortfolio").src;
		delPort.onclick=function(){
			var xmlHttp = xmlHttpObject();
			var xmlMsg = buildPOST("myForm");
			getField("pid").setValue(getField("pid").getValue()-1);

			doAjax("/portfolio/delete.page",xmlMsg,'delAction','0',target);
		}
	}

	if (document.getElementById("portfolio_id")){
		var portfolio_id = getField("portfolio_id").src;
		portfolio_id.onchange=function(){setNum(this.value);getAllocChart();}
	}
}

// Save action for myPortfolio
function replaceAction(target ,reply){
	//alert(reply);
	getAllocChart();
}

/* Delete action for myPortfolio
function delAction(target ,reply){
	alert("Delete!");
	setNum(reply);
	getAllocChart();
}*/

// action for get AllocChart AJAX
function getAllocChartAction(target ,reply){
	target.setInnerHTML(reply);
	
	//set height
	var row1=0
	var row2=0;
	var times=0;

	var count=2100; //start point
	for (i=count; i > 0 && i < reply.length ;i=count )	{
		//searching and counting
		count = reply.indexOf("count1", i+1); 
		row1 ++;
	}
	
	count=2100;
	for (i=count; i > 0 && i < reply.length ;i=count )	{
		//searching and counting
		count = reply.indexOf("count2", i+1); 
		row2 ++;
	}	
	if (row2>row1){	times = row2; }else{ times = row1; }

	var height=530+(times*17);
	target.setHeight(height);

	getAllocOnload(); //onload function
}

// get AllocChart
function getAllocChart(){
	var xmlHttp = xmlHttpObject();
	var xmlMsg = buildPOST("myForm");
	var target = getField("chartDiv");
	target.setVisible();
	target.setLoading(2);

	document.forms["myForm"].action = "/portfolio/getAllocation.page";
	doAjax(document.forms["myForm"].action,xmlMsg,'getAllocChartAction','0',target);
}



/*=================================== getProjection ======================================*/
/*=================================== getProjection ======================================*/
/*=================================== getProjection ======================================*/
function getPorjOnload(){
	//check premium and initial the suggestion option
	if (premium){
		for (i=1;i<=25;i++ ){
			var name = "n1-sub" + i;
			eval("var Sub"+i+" = getField('"+name+"').src");
			eval("Sub"+i+".onclick=function(){setPremiumNum("+i+");getProjectChart();}");
		}
		
		var target = "n1-sub" + getField("num_2").src.value;
		if (document.getElementById(target)){getField(target).src.selected = "Selected";}

	}else{
		for (i=1;i<=5;i++ ){
			var name = "n1-sub" + i;
			eval("var Sub"+i+" = getField('"+name+"').src");
			eval("Sub"+i+".onclick=function(){setNum("+i+");getProjectChart();}");
		}

		var target = "n1-sub" + getField("num_2").src.value;
		if (document.getElementById(target)){getField(target).src.className = "Selected";}
	}

	//event listener
	var explain = getField("explain");
		explain.setNone();

	var subhelp = getField("n1-sub-help").src;
	subhelp.str = "All Investors have different tolerances of risk and return for their portfolio. The more aggressive your portfolio is, it has a higher probability of making higher returns, but also has added volatility, which could create more severe negative returns. Conversely, a more conservative portfolio is much more likely to produce more modest returns with a lower potential for volatility. You should choose a portfolio which most closely matches your investment goals with your tolerance for risk. ";
	subhelp.explain = explain;
	subhelp.onmouseover=showExplain;
	subhelp.onmouseout=function(){explain.setNone();}

	var ex2 = getField("ex2").src;
	ex2.str = "Combined employer and employee contribution % of annual salary";
	ex2.explain = explain;
	ex2.onmouseover=showExplain;
	ex2.onmouseout=function(){explain.setNone();}

	if (document.getElementById("portfolio_id")){
		var portfolio_id = getField("portfolio_id").src;
		portfolio_id.onchange=function(){setNum(this.value);getProjectChart();}
	}

	//allocation
	var type = getField("type").src.value;
	var num_2 = getField("num_2").src.value;
	var target = "n1-sub" + num_2;
	if (document.getElementById(target)){getField(target).src.className = "Selected";}

	var keys=getField("projForm").src.getElementsByTagName("input");

	//high light onSelect
	for (i=0;i<keys.length;i++){
		keys[i].onfocus=function(){this.select();}
	}
	

	//event listener
	var pri, con, sal;
	pri = getField("principle_src").src;
	pri.onkeyup=function(){noAlpha(this);}
	pri.onblur=function(){checkEmpty(this);}

	con = getField("contRate_src").src;
	con.onkeyup=function(){noAlpha(this);}
	con.onblur=function(){checkEmpty(this);}

	sal = getField("salary_src").src;
	sal.onkeyup=function(){noAlpha(this);}
	sal.onblur=function(){checkEmpty(this);}

	getField("recal").src.onclick=function(){setAB();getComparisonChart();}

	
	// Change method
	var method = getField("type").src.value;
	var ma = getField("ma");
	var mb = getField("mb");
	var method_a = getField("method_a");
	ma.src.onclick=function(){setType("Compare Investment Balances");getProjectChart();changeAB("Compare Investment Balances");}
	mb.src.onclick=function(){setType("Compare Investment Returns");getProjectChart();changeAB("Compare Investment Returns");}

	changeAB(method);

	function changeAB(m){
		if (m == "Compare Investment Balances"){
			method_a.setDisplay();
			ma.setCursor('');
			ma.setClass('Selected');
			mb.setCursor('pointer');
			mb.setClass('');

		}else if (m == "Compare Investment Returns"){
			ma.setCursor('pointer');
			ma.setClass('');
			mb.setCursor('');
			mb.setClass('Selected');
		}
	}
}


// action for get ProjectionChart AJAX
function getProjectChartAction(target ,reply){
	target.setInnerHTML(reply);
	if (document.getElementById("type").value=="Compare Investment Balances"){
		target.setHeight(790);
	}else{
		target.setHeight(740);
	}
	getPorjOnload(); //onload function
}

// get ProjectionChart
function getProjectChart(){
	var xmlHttp = xmlHttpObject();
	var xmlMsg = buildPOST("myForm");
	var target = getField("chartDiv");

	target.setVisible();
	target.setLoading(2);
	document.forms["myForm"].action = "/portfolio/getProjection.page"; //"../getProjectionAction.do"
	doAjax(document.forms["myForm"].action,xmlMsg,'getProjectChartAction','0',target);
}

/*=================================== getComparison ======================================*/
/*=================================== getComparison ======================================*/
/*=================================== getComparison ======================================*/
function getCompOnload(){
	//event listener
	var explain = getField("explain");
		explain.setNone();

	var ex2 = getField("ex2").src;
	ex2.str = "Combined employer and employee contribution % of annual salary";
	ex2.explain = explain;
	ex2.onmouseover=showExplain;
	ex2.onmouseout=function(){explain.setNone();}

	var keys=getField("compForm").src.getElementsByTagName("input");

	//high light onSelect
	for (i=0;i<keys.length;i++){
		keys[i].onfocus=function(){this.select();}
	}

	//event listener
	var pri, con, sal;
	pri = getField("principle_src").src;
	pri.onkeyup=function(){noAlpha(this);}
	pri.onblur=function(){checkEmpty(this);}

	con = getField("contRate_src").src;
	con.onkeyup=function(){noAlpha(this);}
	con.onblur=function(){checkEmpty(this);}

	sal = getField("salary_src").src;
	sal.onkeyup=function(){noAlpha(this);}
	sal.onblur=function(){checkEmpty(this);}

	getField("recal").src.onclick=function(){setAB();getComparisonChart();}

	// Change method
	var method = getField("type").src.value;
	var ma = getField("ma");
	var mb = getField("mb");
	var method_a = getField("method_a");
	ma.src.onclick=function(){setType("Compare Investment Balances");getComparisonChart();changeAB("Compare Investment Balances");}
	mb.src.onclick=function(){setType("Compare Investment Returns");getComparisonChart();changeAB("Compare Investment Returns");}

	changeAB(method);
	
	function changeAB(m){
		if (m == "Compare Investment Balances"){
			method_a.setDisplay();
			ma.setCursor('');
			ma.setClass('Selected');
			mb.setCursor('pointer');
			mb.setClass('');

		}else if (m == "Compare Investment Returns"){
			method_a.setNone();
			ma.setCursor('pointer');
			ma.setClass('');
			mb.setCursor('');
			mb.setClass('Selected');
		}
	}
}

// action for get Comparison Chart AJAX
function getComparisonChartAction(target ,reply){
	target.setInnerHTML(reply);
	if (document.getElementById("type").value=="Compare Investment Balances"){
		target.setHeight(710);
	}else{
		target.setHeight(640);
	}
	getCompOnload(); //onload function
}

// get Comparison Chart
function getComparisonChart(){
	var xmlHttp = xmlHttpObject();
	var xmlMsg = buildPOST("myForm");
	var target = getField("chartDiv");

	target.setVisible();
	target.setLoading(2);
	document.forms["myForm"].action = "/portfolio/getComparison.page";
	doAjax(document.forms["myForm"].action,xmlMsg,'getComparisonChartAction','0',target);
}


// set investment strategy
function setNum(pnum){
	var pid = getField("pid");
	var name = getField("name");
	var num = getField("num");

	var name_2 = getField("name_2");
	var num_2 = getField("num_2");

	if (pnum.length <2){
		var pnum = parseInt(pnum); 
	}else{ 
		num.setValue(pnum);
	}
	
	switch (pnum){
		case 1:name_2.setValue("Very Conservative");
			   num_2.setValue(pnum);
			   break;
		case 2:name_2.setValue("Conservative");
			   num_2.setValue(pnum);
			   break;
		case 3:name_2.setValue("Moderate");
			   num_2.setValue(pnum);
	 		   break;
		case 4:name_2.setValue("Aggressive");
			   num_2.setValue(pnum);
			   break;
		case 5:name_2.setValue("Very Aggressive");
			   num_2.setValue(pnum);
			   break;
		default:var protfolioArr = pnum.split("|");
				pid.setValue(protfolioArr[0]);
				name.setValue(protfolioArr[1]);
				break;
	}
	//alert(pnum+"|"+pid.getValue()+","+name.getValue()+","+num.getValue()+"|"+name_2.getValue()+","+num_2.getValue());
}

// set investment strategy
function setPremiumNum(pnum){
	var pid = getField("pid");
	var name = getField("name");
	var num = getField("num");

	var name_2 = getField("name_2");
	var num_2 = getField("num_2");

	if (pnum.length <2){
		var pnum = parseInt(pnum); 
	}else{ 
		num.setValue(pnum);
	}
	
	num_2.setValue(pnum);
	name_2.setValue(pnum);
	
	/*switch (pnum){
		case 5:name_2.setValue("Very Conservative");
			   num_2.setValue(pnum);
			   break;
		case 10:name_2.setValue("Conservative");
			   num_2.setValue(pnum);
			   break;
		case 15:name_2.setValue("Moderate");
			   num_2.setValue(pnum);
	 		   break;
		case 20:name_2.setValue("Aggressive");
			   num_2.setValue(pnum);
			   break;
		case 25:name_2.setValue("Very Aggressive");
			   num_2.setValue(pnum);
			   break;
		default:num_2.setValue(pnum);
				name_2.setValue(pnum);
				break;
	}*/
	
	//alert(pnum+"|"+pid.getValue()+","+name.getValue()+","+num.getValue()+"|"+name_2.getValue()+","+num_2.getValue());
}

// set Type
function setType(method){
	var type = getField("type");
	type.setValue(method);
}

// set Investment Balances
function setAB(){
	document.getElementById("principle").value = document.getElementById("principle_src").value;
	document.getElementById("salary").value = document.getElementById("salary_src").value;
	document.getElementById("contRate").value = document.getElementById("contRate_src").value;
}


/*=================================== getCustomOpt ======================================*/
/*=================================== getCustomOpt ======================================*/
/*=================================== getCustomOpt ======================================*/
function getCustomOptOnload(){
	document.onkeypress = stopRKey; 
	var keys=getField("customOptForm").src.getElementsByTagName("input");
	//high light onSelect
	for (i=0;i<keys.length;i++){
		keys[i].onfocus=function(){this.select();}
	}

	//event listener
	var explain = getField("explain");
		explain.setNone();

	var ex2 = getField("ex2").src;
	ex2.str = "Combined employer and employee contribution % of annual salary";
	ex2.explain = explain;
	ex2.onmouseover=showExplain;
	ex2.onmouseout=function(){explain.setNone();}
	
	// Change Portfolio
	if (document.getElementById("portfolio_id")){
		var portfolio_id = getField("portfolio_id").src;
		portfolio_id.onchange=function(){setNum(this.value);getCustomOpt();}
	}
	
	// Change method
	var ma = getField("ma");
	var mb = getField("mb");
	ma.src.onclick=function(){changeAB('a');}
	mb.src.onclick=function(){changeAB('b');}
	method = getField("method").src.value;
	changeAB(method);

	function changeAB(m){
		if (m == 'a'){
			ma.setCursor('');
			ma.setClass('Selected');
			mb.setCursor('pointer');
			mb.setClass('');
			getField("method_b").setNone();
			getField("method_a").setDisplay();
		}else if (m == 'b'){
			ma.setCursor('pointer');
			ma.setClass('');
			mb.setCursor('');
			mb.setClass('Selected');
			getField("method_b").setDisplay();
			getField("method_a").setNone();
		}
	}

	// Expected Return A
	var maxRate = document.getElementById("maxRate_src").value;
	var minRate = document.getElementById("minRate_src").value;

	var expectedReturn = getField("expectedReturn_src").src;
	expectedReturn.onkeyup=function(){noAlpha(this);}
	expectedReturn.onblur=function(){checkEmpty(this);}

	// Submit by method A
	var sign = false;
	getField("recal").src.onclick=function(){
		sign = checkExpReturn(maxRate, minRate);
		if (sign){
			setIB('a');
			setRate();
			getCustomOpt();
		}
	}

	// Expected Return B
	var principle = getField("principle_src").src;
	principle.onkeyup=function(){noAlpha(this);}
	principle.onblur=function(){checkEmpty(this);}

	var con = getField("contRate_src").src;
	con.onkeyup=function(){noAlpha(this);}
	con.onblur=function(){checkEmpty(this);}

	var sal = getField("salary_src").src;
	sal.onkeyup=function(){noAlpha(this);}
	sal.onblur=function(){checkEmpty(this);}

	var exp10yr = getField("exp10yr_src").src;
	exp10yr.onkeyup=function(){noAlpha(this);}
	exp10yr.onblur=function(){checkEmpty(this);}

	// Submit by method B
	getField("recal_b").src.onclick=function(){
		setIB('b');
		getCustomOpt();
	}

	// Save Portfolio
	var target;
	if (document.getElementById("savePortfolio")){
		var savePort = getField("savePortfolio").src;
		savePort.onclick=function(){
			var savePort_name = getField("savePort_name")
				
			var savePort_nameArr = savePort_name.getValue().split("|");

			var answer = confirm("Confirm to replace "+savePort_nameArr[1]+"?")
			if (answer){
				var xmlHttp = xmlHttpObject();
				var xmlMsg = buildPOST("myForm")+"&savePort_name="+savePort_nameArr[0];

				//showLoading("setPortfolio");
				doAjax("/portfolio/replace.page",xmlMsg,'CustomOptReplaceAction','0',target);
			}
		}
	}
}

// set expected rate
function setRate(){
		document.getElementById("expectedReturn").value = document.getElementById("expectedReturn_src").value;
}

// set Investment Balances
function setIB(method){
	document.getElementById("principle").value = document.getElementById("principle_src").value;
	document.getElementById("salary").value = document.getElementById("salary_src").value;
	document.getElementById("contRate").value = document.getElementById("contRate_src").value;
	document.getElementById("expectedReturn").value = document.getElementById("expectedReturn_src").value;
	document.getElementById("maxRate").value = document.getElementById("maxRate_src").value;
	document.getElementById("minRate").value = document.getElementById("minRate_src").value;
	document.getElementById("exp10yr").value = document.getElementById("exp10yr_src").value;	
	document.getElementById("method").value = method;
}

function CustomOptReplaceAction(target ,reply){
	//alert(reply);
	getCustomOpt();
}

// action for get Customized Optimization AJAX
function getCustomOptAction(target ,reply){
	target.setInnerHTML(reply);
	
	//set height
	var row1=0
	var row2=0;
	var times=0;

	var count=2100; //start point
	for (i=count; i > 0 && i < reply.length ;i=count )	{
		//searching and counting
		count = reply.indexOf("count1", i+1); 
		row1 ++;
	}
	
	count=2100;
	for (i=count; i > 0 && i < reply.length ;i=count )	{
		//searching and counting
		count = reply.indexOf("count2", i+1); 
		row2 ++;
	}	
	if (row2>row1){	times = row2; }else{ times = row1; }

	var height=630+(times*17);
	target.setHeight(height);

	getCustomOptOnload(); //onload function
}

// get Customized Optimization 
function getCustomOpt(){
	var xmlHttp = xmlHttpObject();
	var xmlMsg = buildPOST("myForm");
	var target = getField("chartDiv");
	target.setVisible();
	target.setLoading(2);

	document.forms["myForm"].action = "/portfolio/getCustomOpt.page";
	doAjax(document.forms["myForm"].action,xmlMsg,'getCustomOptAction','0',target);
}



/*=================================== getMarketAss ======================================*/
/*=================================== getMarketAss ======================================*/
/*=================================== getMarketAss ======================================*/

// action for get Customized Optimization AJAX
function getMarketAssAction(target ,reply){
	target.setInnerHTML(reply);

	//set height
	var row1=0
	var times=0;

	var count=1400; //start point
	for (i=count; i > 0 && i < reply.length ;i=count )	{
		//searching and counting
		count = reply.indexOf("count1", i+1); 
		row1 ++;
	}
	times = row1;
	var height=270+(times*17);

	target.setHeight(height);
	//getMarketAssOnload(); //onload function
}

// get Customized Optimization 
function getMarketAss(){
	var xmlHttp = xmlHttpObject();
	var xmlMsg = buildPOST("myForm");
	var target = getField("chartDiv");
	target.setVisible();
	target.setLoading(2);

	document.forms["myForm"].action = "/portfolio/getMarketAss.page";
	doAjax(document.forms["myForm"].action,xmlMsg,'getMarketAssAction','0',target);
}
