/********************************************/
/*	Main JS library of functions available	*/
/*	to all screens.							*/
/********************************************/


/* Broswer Sniffing Code */
var bName = navigator.appName;
var bVer = parseInt(navigator.appVersion);
var NS4 = (bName == "Netscape" && bVer >= 4);
var IE4 = (bName == "Microsoft Internet Explorer" && bVer >= 4);


function addBookmark(text,bookmark){
	if (navigator.appName=="Netscape") {
	 document.write (
	   'To bookmark this site, click '
	  +'<b>Bookmarks -> Add bookmark</b> '
	  +'or press <b>Ctrl+D</b>.'
	 )
	}
	else if (parseInt(navigator.appVersion)>3) {
	 document.write (''
	  +'<a onMouseOver="self.status=\'Bookmark this site\'" '
	  +' onMouseOut="self.status=\'\'" '
	  +' href="javascript:window.external.AddFavorite'
	  +'(\'' + bookmark + '\','
	  +'\'' + bookmark + '\')">'
	  +text+'</a>'
	 )
	}
}


function sort(form,desc,sortCol){
	form.desc.value = desc;
	form.sortCol.value = sortCol;
	form.submit();
}

function checkFldEmpty(fld,msg){
	if(fld.value == '') {
		alert(msg);
		return false;
	}
}

var field_length=0;
function TabNext(obj,event,len,next_field) {
	if (event == "down") {
		field_length=obj.value.length;
	}
	else if (event == "up") {
		if (obj.value.length != field_length) {
			field_length=obj.value.length;
			if (field_length == len) {
				next_field.focus();
			}
		}
	}
}

function highlight (id){
  	hicolor='#ffff66';
  	if (NS4) {
            eval ('window.document.' + id + '.bgColor = \'' + hicolor + '\'');
	} else if (IE4) { 
            eval (id + '.style.background = \'' + hicolor + '\'');
	} 
}

function changeAccountOff (currentForm,offSet) {
	if(offSet)
		var newAcctOff = offSet;
	else
		var newAcctOff = currentForm.currAcct.selectedIndex;
	document.security.currAcct.value = newAcctOff;
	document.cookie = "currAcct=" + newAcctOff + "; path=/";
	
}
// Print out a drop-down menu of accounts in whichDocument
function DisplayAccountList (whichDocument,autoSubmit) {
	if(autoSubmit == null)
		var autoSubmit = true;
	var AcctNumList = unescape(whichDocument.security.acctList.value);
	
	var tmpAcctNumList = "";
	for(i=0;i<AcctNumList.length;i++){
		if(AcctNumList.charAt(i) == "+")
			tmpAcctNumList += " ";
		else
			tmpAcctNumList += AcctNumList.charAt(i);
	}
	AcctNumList = tmpAcctNumList;
	if(AcctNumList.length != 8){
		var AcctNumList = AcctNumList.substr(0,AcctNumList.length);
	}
	else{
		var AcctNumList = AcctNumList.substr(0,AcctNumList.length);
	}
	var AcctNumArray = new Array();
	var AcctNumArray = AcctNumList.split(";");
	var CurrentAccPos = 0;
	// var CurrentAccPos = whichDocument.security.currAcct.value;
	var SelectionString = "";
	if(autoSubmit)
		var autoSubmitCd = "this.form.submit()";
	else
		var autoSubmitCd = "";

	whichDocument.writeln("<select name=\"currAcct\" onChange=\"changeAccountOff(this.form);" + autoSubmitCd + "\">");
	for (var count = 0; count < AcctNumArray.length; count++) {
		var AcctNum = AcctNumArray[count].substring(0,8);
		var AcctName = AcctNumArray[count].substring(8);
		if (CurrentAccPos == count)
			SelectionString = " selected";
		else SelectionString = "";
		whichDocument.writeln("<option value=\"" + count + "\"" + SelectionString + ">" + AcctNum + AcctName + "</option>");
	}
	whichDocument.writeln("</select>");
}
// Add account number list, account offset, and key to baseURL.
function AddAccountsAndHash (baseURL) {
	return baseURL +
		"currAcct=" + document.security.currAcct.value +
		"&acctList=" + escape(document.security.acctList.value) +
		"&key=" + document.security.key.value;
}
function getCurrAccount(){
	var acctList = document.security.acctList.value;
	var acctList = acctList.substr(0,acctList.length-1);
	var currAcct =  document.security.currAcct.value;
	var AcctNumArray = new Array();
	var AcctNumArray = acctList.split(";");
	var account = AcctNumArray[currAcct];
	return account;
}

function getOptions(form,fld){ //for select box
	var result = "";
	len = eval("document" + "." + form + "." + fld + ".length");
	for (i=0;i< len;i++){
		if (eval ("document" + "." + form + "." + fld + ".options[i].selected")){
			result += eval ("document" + "." + form + "." + fld + ".options[i].value") + ";";
		}
	}
	return result;
}

function getSelectedButton(buttonGroup){
	for(var i=0;i<buttonGroup.length;i++){
		if(buttonGroup[i].checked){
			return true;
		}
	}
	return false;
}
function getSelectedButtonVal(buttonGroup){
	for(var i=0;i<buttonGroup.length;i++){
		if(buttonGroup[i].checked){
			return buttonGroup[i].value;
		}
	}
	return false;
}
function setAccountOff (currentForm){
	currentForm.currAcct.options.selectedIndex = document.security.currAcct.value;
}

// Logs the user out and goes to path
function Logout (path, destinationFrame) {
	//alert("http://" + location.host + path);
	document.cookie = "user=; path=/";
	document.cookie = "sviuserid=; path=/";
	//document.cookie = "userName=; path=/";
	//document.cookie = "rtqAgreement=N; path=/";
	if(location.host.search("\.dev") == -1 && location.host.search("\.qa") == -1 && location.host.search("\.staging") == -1)
		protocol = "https://";
	else
		protocol = "http://";
	destinationFrame.location.replace(protocol + location.host + path);
}

/*************************************/
/*	HIDE & SHOW BOX NEEDS TO FIXED	 */
/*	TO BE GENERIC ENOUGH TO ACCEPT	 */
/*	OBJ ARGUMENT INSTEAD OF HARDCOD- */
/*	ING 'naq'						 */
/*************************************/
var ns4=document.layers
var ie4=document.all
var ns6=document.getElementById&&!document.all

function hidebox(){
if (ie4||ns6)
document.all.naq.style.visibility="hidden"
else if (ns4)
document.naq.visibility="hide"
}
function showbox(){
if (ie4||ns6)
document.all.naq.style.visibility="visible"
else if (ns4)
document.naq.visibility="visible"
}

function popWin(url,width,height,scroll,name){
	if(!width) width = 500;
	if(!height) height = 300;
	if(!name) name = '';
	if(!scroll) scroll = 'true';
	window.open(url,name,'width='+width+',height='+height+',scrollbars');
}

function uCase(str){
	str = str.toUpperCase();
	return str;
}

function disableFld(form,fld){
	for(var i=0;i<form.elements.length;i++){
		if(fld.name==form.elements[i].name)
			form.elements[i+1].focus()
	}
}

function GoToPage (page, destinationFrame, extraArgs) {
	var newURL;
	if (extraArgs == null)
		extraArgs = "";
	else
		extraArgs = extraArgs + "&";
	switch (page) {
		case "HOME":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=Investor/home.html&public=yes&wrapper=none&" + extraArgs);
			break;
		case "ACCT_CHANGE":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?tmpl=Investor/ReqStatus/ViewRequests/acctChange.html&" + extraArgs);
			break;
		case "APPRV_ACCT_CHANGE":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?tmpl=Investor/Office/ReqStatus/ViewRequests/acctChange.html&" + extraArgs);
			break;
		case "CREATE_ACH":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?tmpl=Investor/ReqStatus/ViewRequests/achSetup.html&" + extraArgs);
			break;
		case "CREATE_ACH_SCHED":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?tmpl=Investor/ReqStatus/ViewRequests/periodicACH.html&" + extraArgs);
			break;
		case "ACH_XFER":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?tmpl=Investor/ReqStatus/ViewRequests/achXfer.html&" + extraArgs);
			break;
		case "APPRV_NEW_ACCOUNT":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?tmpl=Investor/Office/ReqStatus/ViewRequests/newAccount.html&" + extraArgs);
			break;
		case "DELETE_ACH":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?tmpl=Investor/ReqStatus/ViewRequests/removeACHSetup.html&" + extraArgs);
			break;
		case "DELETE_ACH_SCHED":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?tmpl=Investor/ReqStatus/ViewRequests/removePeriodicACH.html&" + extraArgs);
			break;
		case "UPDATE_ACH_SCHED":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?tmpl=Investor/ReqStatus/ViewRequests/updatePeriodicACH.html&" + extraArgs);
			break;
		case "NEW_IP":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?tmpl=Investor/ReqStatus/ViewRequests/newIP.html&" + extraArgs);
			break;
		case "MF_ORDER_SINGLE":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?tmpl=Investor/ReqStatus/ViewRequests/fund.html&" + extraArgs);
			break;
		case "ORDER_STATUS":
		case "ORDERSTATUS":
			newURL = AddAccountsAndHash("/Shared/Modules/orderStatus.html?" + extraArgs);
			break;
		case "REGISTER":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?tmpl=Investor/ReqStatus/ViewRequests/register.html&" + extraArgs);
		break;
		case "NEW_ACCOUNT":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?tmpl=Investor/ReqStatus/ViewRequests/newAccount.html&" + extraArgs);
			break;
		case "AGREEMENT_RTQ":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?tmpl=Investor/ReqStatus/ViewRequests/agreementRTQ.html&" + extraArgs);
			break;
		case "LINK":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?tmpl=Investor/ReqStatus/ViewRequests/link.html&" + extraArgs);
		break;
		case "NAA":
		case "OPENACCOUNT":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=Investor/NewAcct/openAccount.html&" + extraArgs);
			break;
		case "PUBLIC_NAA":
			newURL = "/Shared/Modules/webForm.html?tmpl=Investor/NewAcct/openAccount.html&public=yes&register=true&" + extraArgs;
			break;
		case "LINKACCOUNT":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=Investor/LinkAcct/linkAccount.html&" + extraArgs);
			break;
		/* added by ES 10/14/2003 for WHI */
		case "UNLINKACCOUNT":
			newURL = AddAccountsAndHash("/Shared/Modules/unLinkAccount.php?" + extraArgs);
			break;
		/* added by ES 10/15/2003 for WHI */
		case "REGLINKACCOUNT":
			newURL = AddAccountsAndHash("/Shared/Modules/multiLinkAccount.php?tmpl=Investor/RegLinkAcct/linkAccount.tmpl&" + extraArgs);
			break;
		case "ADDIP":
			newURL = AddAccountsAndHash("/Shared/Modules/requestIParty.html?tmpl=Investor/AcctMaint/IntParty/addInterestedParty.html&" + extraArgs);
			break;
		case "REQSTAT":
			newURL = AddAccountsAndHash("/Shared/Modules/requestStatus.html?action=query&activity_nm[]=ALL&view[]=process&process_cd[]=&activity_status_cd[]=ALL&date[]=last7days&" + extraArgs);
			break;
		case "CHGACCT":
		case "CHANGEADDRESS":
			newURL = AddAccountsAndHash("/Shared/Modules/requestAcctInfo.html?" + extraArgs);
			break;
		case "REQSTATFLTR":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=Investor/ReqStatus/reqStatusFilter.html&" + extraArgs);
			break;
		case "ACHPROFILE":
			newURL = AddAccountsAndHash("/Shared/Modules/requestAchProfile.html?action=ACHPROFILE&" + extraArgs);
			break;
		case "ACHSET":
			newURL = AddAccountsAndHash("/Shared/Modules/requestAchProfile.html?action=ACH&" + extraArgs);
			break;
		case "PERACHSET":
			newURL = AddAccountsAndHash("/Shared/Modules/requestAchProfile.html?action=ACH_SCHED&" + extraArgs);
			break;
		case "VIEWACHSCHED":
			newURL = AddAccountsAndHash("/Shared/Modules/requestAchProfile.html?action=VIEWACHSCHED&" + extraArgs);
			break;
		case "ACHSCHEDUPDT":
			newURL = AddAccountsAndHash("/Shared/Modules/requestAchProfile.html?action=ACHSCHEDUPDT&" + extraArgs);
			break;
		case "ACHXFER":
			newURL = AddAccountsAndHash("/Shared/Modules/requestAchProfile.html?tmpl=Investor/ACH/Transfer/requestTransfer.html&action=ACHXFER&" + extraArgs);
			break;
		case "REMACHPER":
			newURL = AddAccountsAndHash("/Shared/Modules/requestAchProfile.html?tmpl=Investor/ACH/RemovePeriodic/removePeriodic.html&action=REMACHPER&" + extraArgs);
			break;
		case "REMACHSET":
			newURL = AddAccountsAndHash("/Shared/Modules/requestAchProfile.html?tmpl=Investor/ACH/RemoveProfile/removeProfile.html&action=REMACHSET&" + extraArgs);
			break;
		case "STOCKS":
			newURL = AddAccountsAndHash("/Shared/Modules/stockOrder.html?tmpl=Investor/Stocks/order.html&action=order&" + extraArgs);
			break;
		case "STOCKS_":
			newURL = AddAccountsAndHash("/Shared/Modules/stockOrder.php?tmpl=Investor/Stocks/order.tmpl&action=order&" + extraArgs);
			break;
		case "EXTENDED_TRADING":
			newURL = AddAccountsAndHash("/Shared/Modules/stockOrder.php?tmpl=Investor/Stocks/ext_order.tmpl&action=order&" + extraArgs);
			break;
		case "OPTIONS":
			newURL = AddAccountsAndHash("/Shared/Modules/optionOrder.html?tmpl=Investor/Options/order.html&action=order&" + extraArgs);
			break;
		case "OPTIONS_":
			newURL = AddAccountsAndHash("/Shared/Modules/optionOrder.php?tmpl=Investor/Options/order.tmpl&action=order&" + extraArgs);
			break;
		case "FUNDS":
			//newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=Investor/Funds/order.html&" + extraArgs);
			newURL = AddAccountsAndHash("/Shared/Modules/fundOrder.html?tmpl=Investor/Funds/order.html&" + extraArgs);
			break;
		case "FUNDS_":
			newURL = AddAccountsAndHash("/Shared/Modules/fundOrder.php?tmpl=Investor/Funds/order.tmpl&" + extraArgs);
			break;
		case "FUNDS_ORDER_STATUS":
			newURL = AddAccountsAndHash("/Shared/Modules/requestStatus.html?view[]=summary&date[]=currentWeek&request_type_cd[]=MF_ORDER_SINGLE&task_cd[]=ALL&task_status_cd[]=ALL&tmpl=Investor/OrderStatus/funds.html&searchField1=account_nbr&value1=" + getCurrAccount()+ "&" + extraArgs);
			break;
		case "GETREQUEST":
			newURL = AddAccountsAndHash("/Shared/Modules/requestGet.html?" + extraArgs);
			break;
		case "BALANCES":
			newURL = AddAccountsAndHash("/Shared/Modules/balance.html?tmpl=Investor/Balances/balances.html&" + extraArgs);
			break;
		case "BALANCEDETAILS":
			newURL = AddAccountsAndHash("/Shared/Modules/balance.html?tmpl=Investor/Balances/balanceDetail.html&" + extraArgs);
			break;
		case "BALANCES_":
			newURL = AddAccountsAndHash("/Shared/Modules/balance.php?tmpl=Investor/Balances/balances.tmpl&" + extraArgs);
			break;
		case "BALANCEDETAILS_":
			newURL = AddAccountsAndHash("/Shared/Modules/balance.php?tmpl=Investor/Balances/balanceDetail.tmpl&" + extraArgs);
			break;
		case "BALANCESNAP":
			newURL = AddAccountsAndHash("/Shared/Modules/balanceSummary.html?tmpl=Investor/Balances/balanceSummary.html&" + extraArgs);
			break;
		case "POSITIONS":
			newURL = AddAccountsAndHash("/Shared/Modules/positions.html?tmpl=Investor/Positions/positions.html&" + extraArgs);
			break;
		case "ACCTHISTORY":
			newURL = AddAccountsAndHash("/Shared/Modules/acctHistory.html?tmpl=Investor/AcctHistory/acctHistory.html&order[]=descending&" + extraArgs);
			break;
		case "ACCTHISTORY2":
			newURL = AddAccountsAndHash("/Shared/Modules/acctHistory.php?order=descending&" + extraArgs);
			break;
		case "ACCTINFO":
			newURL = AddAccountsAndHash("/Shared/Modules/acctInfo.html?tmpl=Investor/AcctInfo/acctInfo.html&" + extraArgs);
			break;
		case "ACCTOVERVIEW":
			//newURL = AddAccountsAndHash("/Shared/Modules/acctOverview.html?tmpl=Investor/AcctOverview/acctOverview.html&" + extraArgs);
			newURL = AddAccountsAndHash("/Shared/Modules/acctOverview.php?" + extraArgs);
			break;
		case "INVESTORCNTR":
			newURL = AddAccountsAndHash("/Shared/Modules/investorCenter.html?tmpl=Investor/Home/info.html&" + extraArgs);
			break;
		case "NOACCOUNTS":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=Investor/Home/noAccounts.html&" + extraArgs);
			break;
		case "SENDMAIL":
			newURL = AddAccountsAndHash("/Shared/Modules/sendMail.html?tmpl=Investor/Mail/sendMail.html&" + extraArgs);
			break;
		case "SENDMAILPUBLIC":
			newURL = AddAccountsAndHash("/Shared/Modules/sendMail.html?tmpl=Investor/Mail/sendMailPublic.html&" + extraArgs);
			break;
		case "LOGIN":
			newURL = "/Shared/Modules/authenticate.html?tmpl=Investor/login.html&wrapper=none&" + extraArgs;
			break;
		case "CONTACT":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=Investor/CustomerService/Communication/contactInfo.html&" + extraArgs);
			break;
		case "INVESTMENTCENTER":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=Investor/CustomerService/Communication/investmentCenter.html&" + extraArgs);
			break;
		case "DOCUMENTCENTER":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=Investor/DocumentCenter/documentCenter.html&" + extraArgs);
			break;
		case "CUSTOMERSVC":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=Investor/CustomerService/aboutCustomerService.html&" + extraArgs);
			break;
		case "HELP":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=Investor/CustomerService/Information/faq.html&" + extraArgs);
			break;
		case "AGREEMENTS":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=Investor/CustomerService/Information/agreements.html&" + extraArgs);
			break;
		case "PREFERENCES":	
		case "CHANGELOGINPW":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=/Investor/ChangeLogin/changeLogin.html&" + extraArgs);
			break;
		case "CHANGETRADINGPW":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=/Investor/ChangeTradingLogin/changeTrading.html&" + extraArgs);
			break;
		case "CHANGENICKNAME":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=/Investor/ChangeNickname/changeNickname.html&" + extraArgs);
			break;
		case "CHANGEEMAIL":
			newURL = AddAccountsAndHash("/Shared/Modules/registrationInfo.html?tmpl=/Investor/ChangeEmail/changeEmail.html&" + extraArgs);
			break;
		case "FORGOTPASSWORD":
			newURL = AddAccountsAndHash("/Shared/Modules/forgotLogin.html?tmpl=/Investor/ForgotLogin/forgotLogin.html&public=yes&" + extraArgs);
			break;
		case "REGISTRATION":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=/Investor/Registration/register.html&public=yes&" + extraArgs);
			break;
		case "TRADEHISTORY":
			newURL = AddAccountsAndHash("/Shared/Modules/acctHistory.html?tmpl=/Investor/AcctHistory/tradeHistory.html&showName=transaction&showValue=A,V&" + extraArgs);
			break;
		case "TRADEHISTORY2":
			newURL = AddAccountsAndHash("/Shared/Modules/acctHistory.php?tmpl=/Investor/AcctHistory/tradeHistory.tmpl&showName=transactionType&showValue=Trade&" + extraArgs);
			break;
		case "GLOSSARY":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?tmpl=/Investor/CustomerService/Information/glossary.html&" + extraArgs);
			break;
		case "WEBFORM":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?public=yes&" + extraArgs);
			break;
		case "NOACCOUNTS":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?public=yes&tmpl=/Investor/Home/noAccounts.html&" + extraArgs);
			break;
		case "SITEMAP":
			newURL = AddAccountsAndHash("/Shared/Modules/webForm.html?public=yes&tmpl=/Investor/Home/siteMap.html&" + extraArgs);
			break;
			case "POSITIONS_":
			newURL = AddAccountsAndHash("/Shared/Modules/positions.php?" + extraArgs);
			break;
		case "ACCTDOWNLOAD":
			newURL = AddAccountsAndHash("/Shared/Modules/acctDownload.php?" + extraArgs);
			break;
		default:
			/* IF A PAGE IS NOTE FOUND, CHECK THE CLIENT customGoToPage() in clientFunctions.js */
			newURL = customGoToPage(page, extraArgs);
			break;
	}
		newURL = "http://www.esecuritiesresearch.com" + newURL;
		if(String(destinationFrame) !="")
			destinationFrame.location = newURL;
		else
			window.open(newURL);
	//alert(newURL);
}
function positionsLink(options,index,mode,path){
	if(mode == null)
		mode = "list";
	switch(mode){
		case "list":
			document.writeln("<form name=\""+index+"\">\n");
			document.writeln("<select name=\"link\" onChange=\"positionsLink('','','redirect',document."+index+".link.options[document."+index+".link.options.selectedIndex].value);this.selectedIndex=0\">\n");
			document.writeln(options);
			document.writeln("</select>\n");
			document.writeln("</form>\n");
		break;
		case "redirect":
			//alert(path)
			eval(path);
			//document."+index+".link.options.selectedIndex=0;
		break;
	}
}
function clearForm(form){
	for(var i=0;i<form.elements.length;i++){
		if(form.elements[i].type == "select-one"){
			form.elements[i].options.selectedIndex = 0;
		}
		if(form.elements[i].type == "radio"){
			form.elements[i].checked = 0;
		}
		if(form.elements[i].type == "text"){
			form.elements[i].value = "";
		}
	}
}
