////////////////////////////////////////////
// MAIN Scripts
////////////////////////////////////////////

var mngrDataArr;
var subscribed = false;
var subStyle = false;

var cols,total,firstId,LastId,divNo, cont;
if (funDT.length > 0){
  funDT.length = funDT.length-1; //Done to remove extra row added by trailing comma
  firstId = funDT[0].fD[0];
}

divNo = 0;


function writeNav(){
  var alphabet = new Array('0','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
  var str = '<table border=0 cellpadding=0 cellspacing=0><tr>';
  for (var i=0; i<alphabet.length; i++){
    str += '<td><a class=alpha href="broadsheet.wsp?unittype=' + unittype + '&alpha=' + alphabet[i] + '&format=' + format + '">' + alphabet[i] + '</a></td>';
    str += '<td><img src="images/1x1.gif" border=0 width=4 height=1></td>';
  }
  str += "</tr></table>";
  var navDiv = document.getElementById("nav");
  navDiv.innerHTML = str;
}

function setArrPos(){
  if ((id + alpha) == ''){; // Default page - No previous.
    arrPos = 0;
  }
  else if (alpha != ''){  //Start of letter's range, no 'contd.' calc. necessary.
    arrPos = 0;
  }
  else {  // Must be ID passed, in which case start at arrPos[0] so 'contd.' can be calc'd.
    if (cont == '1'){
      arrPos = 0;
    }
    else{
      if (id < 0 || id < funDT[0].fD[0]){
      	//alert('start of array-'+funDT[0].fD[0]+'-'+id)
        arrPos = 0;
      }
      else{
        //alert('second ordinal-'+funDT[0].fD[0]+'-'+id)
        arrPos = 1;
      }
    }
  }
}

function writeContent(format){
  writeNav();
  var w = 800
  cols = parseInt((w) / 250);			//Max No. of price columns. (i.e. 1050/250 = 4 + 50px avail)
  var availWidth = w - (cols * 250);		//1050 - (1000) = 50(px)
  var sep = 15
  var str1,str2,str3,str4,str5;
  var mngCode = "";
  var mngNames = 0;
  var col,row,k;
  setArrPos(); 
  var v = 0;
  var z = 0;
  var incRow = false; // Increment Row (due to manager's line being written)
  if (format == 'broadsheet'){
    var rows = 80;
    var colLength = 1210;
  }
  else{
    var rows = parseInt(545 / 13.6);
    var colLength = 605;
  }
//alert(rows)
  var contentArr = new Array(1000);
  if (funDT.length < 1){
    str1 = '<div style="z-index: 0; left: 20px; top: 180px; position: absolute"><table border=0 cellpadding=0 cellspacing=0><tr><td nowrap="nowrap"><span class=mRow>No Entries Found.</span></td></tr></table></div>';
    document.write(str1);
    return;
  }
  var footer = true // bool for writing disclaimer and fedBy logo
  for (col=0; col<cols; col++){
    k = 0;
    top = 155;
    pW = 38 // Price column width
    if (col == 0){left = sep;}
    else {left = (sep+(col*colWidth)) + (col * sep); }  // Margin + colNumber*250 + seperator

// insert AFI link if on home page of fund type//
    var AFIBool = false;
    if (col == 0 && id == '' && alpha == 0){
      AFIBool = createAFIDiv();
    }
    if (AFIBool){
      top = 355;
    }
    else{
      top = 155;
    }
// end AFI link code

    str1 = writeColHeader();

    str2 = '<div style="left:'+ left +'px; top:' + top + 'px; width: ' + colWidth + 'px; position: absolute">' + str1 + '</div>';
    
    top = top + 30;
    contentArr[v] = str2;
    v++;
    if (row == funDT.length-1){
      break;
    }
    var drawRow = true
    for (row=k; drawRow; row++){
      if (arrPos == funDT.length-1){ // End of Data
//alert('end');
        break;
      }
      if (mngCode != funDT[arrPos].fD[1] && row == (rows - 1)){
      	//check to see if the last row would be a manager's title.. if so, do nothing but move to next row.
      }
      else if (mngCode != funDT[arrPos].fD[1]){
//alert('stage1 - '+row)
	if ((top + 15) < colLength){
	        mngCode = funDT[arrPos].fD[1];
	        var contLabel = "";
		if (id != '' && funDT[0].fD[1] == funDT[1].fD[1] && arrPos == 1){
		  contLabel = " - Contd.";
		}
		if (cont == '1' && arrPos == 0){
		  contLabel = " - Contd.";
		}
		//debugger
		mngrDataArr = getManagerData(mngCode);
		subscribed = false
		if (mngrDataArr[2] == 1){
			subscribed = true;
			subStyle = true;
		}
		tmpManagerLabel = mngrDataArr[1];
		tmpHeight = mngrDataArr[4];
		if (tmpHeight > 85) tmpHeight = 85; // force height to be under 85px
		if (subscribed && contLabel != " - Contd."){  //If subscribed and first row of new manager's funds, write out manager logo image
			str3  = '<div style="z-index: 0; left:'+ left +'px; top: ' + top + 'px;position: absolute"><table border="0" cellpadding="0" cellspacing="0"><tr height="' + (tmpHeight + 15) + '"><td style="padding-top: 10px; padding-bottom: 5px" align="left" valign="bottom" nowrap="nowrap">';
			str3 += '<a href="' + mngrDataArr[3] + '" onclick="javascript: hitCount(\'' + mngCode + '\');" target="_blank"><img src="images/' + mngCode + '.gif" border="0" height="' + tmpHeight + '" /></a></td></tr></table></div>';
			top  += tmpHeight + 15; // add the extra space used by image to 'top' var and another 15px for the padding.
			str3 += '<div style="z-index: 0; left:'+ left +'px; top: ' + top + 'px;position: absolute"><table border=0 cellpadding=0 cellspacing=0><tr><td nowrap="nowrap"><span class="mRow">'+ tmpManagerLabel + contLabel + '</span></td></tr></table></div>';
		}
		else { 
			if (contLabel == ""){
				subStyle = false;
			}
			str3 = '<div style="z-index: 0; left:'+ left +'px; top: ' + top + 'px;position: absolute"><table border=0 cellpadding=0 cellspacing=0><tr><td nowrap="nowrap"><span class="mRow">'+ tmpManagerLabel + contLabel + '</span></td></tr></table></div>';
			
		}
		contentArr[v] = str3;
		v++;
	}
	top += 15;
	incRow = true;
      }
      else if(row == k){
//alert('stage2 '+row)
        str3  = '<div style="z-index: 0; left:'+ left +'px; top: ' + top + 'px;position: absolute">'
        str3 += '<table border=0 cellpadding=0 cellspacing=0><tr><td nowrap="nowrap"><span class=mRow>'+ tmpManagerLabel + ' - Contd.</span></td></tr></table></div>';
	 contentArr[v] = str3;
	 v++;
	 top += 15;
	 incRow = true;
      }
      else {
	str4 = writeRowName();
        contentArr[v] = str4;
	v++
	str5 = writeRowPrices();
        contentArr[v] = str5;
	 v++;
        top += 11;
        if (incRow){
          row++;
	   mngNames++;
          incRow = false;
        }
        arrPos++;
      }
      if (top > colLength){  //if column is over 605px long, then write footer on first pass and stop drawing rows..
      	if (footer) {
          var warning = '<div style="z-index: 2; left: 15px; top:'+ (top+15) +'px; width: 450px; position: absolute"><span class="disclaimer">Please note that past performance is not a guide to future performance.</span></div>';
          document.write(warning);	   
          var fedby = '<div class=vals style="z-index: 2; left:'+ ((3 * (sep + colWidth)) - 43) +'px;top:'+ (top+10) +'px; width: '+ pW +'; position: absolute"><img src="images/fedby.png" width="33" height="28" border="0"></div>';
          document.write(fedby);	   
	}
        footer = false
	drawRow = false;
      }
    }
    lastId = funDT[arrPos].fD[0];
  }
  // Write out DIVs
  //for (var z = 0; z<10; z++){
 //alert(contentArr[z]); 	
//}
  document.write(contentArr.join(''));

  //if number of numrecsvar < number able to display on page, then no next button.
  total = cols * rows;
  if (numrecs > total){
    if (funDT[arrPos+1].fD[1] == mngCode){
      cont = 1;
    }
    else {cont = 0};
    for (var h=1; h<2; h++){
      var nextLink = document.getElementById("next"+h);
      var nextStr = '<a class=alpha href="javascript:move(1,' + cont + ');"><img src="images/next.png" border="0" width="96" height="19" alt="Go forward a page"></a>';
      nextLink.innerHTML = nextStr;
    }
  }
  //DEBUG
  var db = document.getElementById("debug");
  dbStr = "firstId="+ firstId +" lastId="+ lastId +" arrPos="+ arrPos +" mngNames="+ mngNames +" rows="+ rows +" cols="+ cols +" total="+ total +" v="+ v;
  db.innerHTML = dbStr;

}

function writeColHeader(){
	var str1
	if (unittype == 'U'){
		str1 = "<table border=0 class=colTable width='" + (colWidth + 2) + "' height='100%' cellpadding=0 cellspacing=0>";
		str1 += "<tr><th width='162'>&nbsp;</th><th width='30'>Initial</th><th width='30'>Buy</th><th width='38'>Sell/Nav</th><th width='33'>+ or -</th><th width='25'>Yield</th></tr>";
		str1 += "<tr><th>&nbsp;</th><th>Charge</th><th>Price</th><th>Price</th><th>&nbsp;</th><th>&nbsp;</th></tr>";
		str1 += '<tr><th colspan=6><img src="images/1x1.gif" border=0 width=1 height=10></th></tr></table>';
	}
	else if (unittype == 'I'){
		str1 = "<table border=0 class=colTable width='" + (colWidth + 2) + "' height='100%' cellpadding=0 cellspacing=0>";
		str1 += "<tr><th width='192'>&nbsp;</th><th width='30'>Buy</th><th width='38'>Sell</th><th width='33'><span style='font-size: 12px; font-weight: bold; color: #0033CC'>+</span> or <span style='font-size: 14px; font-weight: bold; color: #CC0000'>-</span></th><th width='25'>Yield</th></tr>";
		str1 += "<tr><th>&nbsp;</th><th>Price</th><th>Price</th><th>&nbsp;</th><th>&nbsp;</th></tr>";
		str1 += '<tr><th colspan=5><img src="images/1x1.gif" border=0 width=1 height=10></th></tr></table>';
	}
	else{
		str1 = "<table border=0 class=colTable width='" + (colWidth + 2) + "' height='100%' cellpadding=0 cellspacing=0>";
		str1 += "<tr><th width='192'>&nbsp;</th><th width='30'>Buy</th><th width='38'>Sell/Nav</th><th width='33'><span style='font-size: 12px; font-weight: bold; color: #0033CC'>+</span> or <span style='font-size: 14px; font-weight: bold; color: #CC0000'>-</span></th><th width='25'>Yield</th></tr>";
		str1 += "<tr><th>&nbsp;</th><th>Price</th><th>Price</th><th>&nbsp;</th><th>&nbsp;</th></tr>";
		str1 += '<tr><th colspan=5><img src="images/1x1.gif" border=0 width=1 height=10></th></tr></table>';
	}
	return str1
}

function writeRowName(){
	
	var style = "link";
	if (subStyle){
		style = "subLink";	
	}
	var str4;
	str4  = '<div id='+ funDT[arrPos].fD[0] +' style="z-index: 1; left:'+ left +'px;top:'+ top +'px; position: absolute; clip: rect(auto '+ (nameWidth + 15) +' auto auto)">'
	str4 += '<div class=fRow><table border=0 cellpadding=0 cellspacing=0><tr><td nowrap="nowrap">'
	str4 += '<a class="' + style + '" onClick="javascript:this.blur();" href="javascript:openDetail(\''+ arrPos +'\',\''+ funDT[arrPos].fD[0] +'\',\''+ funDT[arrPos].fD[3] +'\');">'
	str4 += funDT[arrPos].fD[2] + '........................................</a></td></tr></table></div></div>';
        
        return str4;	
}

function writeRowPrices(){

	var style = "vals";
	if (subStyle){
		style = "subVals";	
	}
	var str5, changeVal, changeCol;
	str5 = "";
	changeVal = funDT[arrPos].fD[7];
	if (changeVal == 999.00){changeVal = '&nbsp;';}
	// add initial charge
	if (icPad > 0){
	  str5 += '<div class="' + style + '" style="z-index: 2; left:'+ (left+nameWidth) +'px;top:'+ top +'px; width: ' + icPad + '; position: absolute">'+ writeFraction(funDT[arrPos].fD[9]) +'</div>';
	  left += icPad;  // make space for the initial charge
	}

	var blankPad = 0 // used when icPad is 0.  fleshes out the bit between the name and the prices..
	if (icPad <= 0){blankPad = 30}
	left += blankPad;
	if (funDT[arrPos].fD[4] != 0){ // if BID is '0' then use NAV
	  str5 += '<div class="' + style + '" style="z-index: 2; left:'+ (left+nameWidth) +'px;top:'+ top +'px; width: '+ pW +'; position: absolute">'+ funDT[arrPos].fD[5] +'</div>';
	  str5 += '<div class="' + style + '" style="z-index: 2; left:'+ ((left+nameWidth)+pW) +'px;top:'+ top +'px; width: '+ pW +'; position: absolute">'+ funDT[arrPos].fD[4] +'</div>';
	}
	else{
	  str5 += '<div class="' + style + '" style="z-index: 2; left:'+ (left+nameWidth) +'px;top:'+ top +'px; width: '+ (pW*2) +'; position: absolute">'+ funDT[arrPos].fD[6] +'</div>';
	}
	if (changeVal < 0){
	  changeCol = 'down';
	  changeVal = changeVal.substr(1,changeVal.length);
	}
	else if (funDT[arrPos].fD[7] == 0){changeCol = 'same'}
	else {changeCol = 'up'}
	str5 += '<div class="' + style + changeCol + '" style="z-index: 2; left:'+ ((left+nameWidth)+(pW*2)) +'px;top:'+ top +'px; width: '+ (pW-8) +'; position: absolute">'+ changeVal +'</div>';
	str5 += '<div class="' + style + '" style="z-index: 2; left:'+ ((left+nameWidth)+(pW*3-12)) +'px;top:'+ top +'px; width: '+ (pW-8) +'; position: absolute">'+ funDT[arrPos].fD[8] +'</div>';
	
	left -= blankPad //removes blankspace for next line to be written in line with the LHS of column
	left -= icPad; // remove extra padding so name can be written inline.

	return(str5);
}

function writeFraction(Num){
  var str = "";
  if (Num == "0.00"){return('&nbsp;');}  // don't write out anything for 0.00..
  str += Num.substr(0,Num.indexOf('.'));
  var flt = Num.substr(Num.indexOf('.')+1,2);
  switch(flt){
    case '00': break;
    case '25': str += '<span style="font-size: 10px">&#188;</span>'; break;
    case '50': str += '<span style="font-size: 10px">&#189;</span>'; break;
    case '75': str += '<span style="font-size: 10px">&#190;</span>'; break;
    //case '25': str += '<img src="images/p25.gif" border="0" width="6" height="9" />'; break;
    //case '50': str += '<img src="images/p5.gif" border="0" width="6" height="9" />'; break;
    //case '75': str += '<img src="images/p75.gif" border="0" width="6" height="9" />'; break;
    default  : str = Num; break;
  }
  return(str);
}

function zeroToDash(num){
  if (num == 0){
    num = '---';
  }
  return num;
}


function truncate(name){
  var len = name.length;
  if (len > 28){
    name = name.substr(0,28);
    len = 28;
  }
  for (var i=0; i<(30-len); i++){
    name += ".";
  }
  return name;
}

function getManagerData(code){
//alert(code)
  var mngrData = "";
  for (var i=0; i<mngDT.length; i++){
//alert(mngDT[i].mD[0] + '-' + i + '/' + mngDT.length)
    if (mngDT[i].mD[0] == code){
//alert('match')
      mngrData = new Array(mngDT[i].mD[0],mngDT[i].mD[1],mngDT[i].mD[2],mngDT[i].mD[3],mngDT[i].mD[4]);
      return mngrData;
    }
  }
}



function popManagers(){
  var manSel = document.getElementById("manager");
  for (var i=0; i<mngDT.length; i++){
    manSel.options.length++
    manSel.options[manSel.options.length-1].value = mngDT[i].mD[0];
    manSel.options[manSel.options.length-1].text = mngDT[i].mD[1];
  }
}

function goManager(code){
  code = code.replace('&','%26');
  url = 'broadsheet.wsp?unittype=' + unittype + '&format=' + format + '&managercode=' + code;
  window.location.replace(url);
}

function hitCount(mngCode){
	var hitBox = document.getElementById("hitFrame");
	hitBox.src = 'counter.wsp?mg=' + mngCode;	
}


///////////////////////////////////////////
// Open Details
///////////////////////////////////////////


function openDetail(id,divId,code){
  openLoading(divId);
  var dataFr = document.getElementById(["dataFrame"]);
  dataFr.src = 'dataFrame.wsp?unittype=' + unittype + '&id=' + id + '&divId=' + divId + '&code=' + code;
}

var loadingDiv = document.createElement("DIV");
function openLoading(divId){
  divNo++
  var div = document.getElementById(divId);
  var l = div.style.left;
  var t = div.style.top;
  t = (Number(t.substr(0,t.indexOf('p'))) + 10).toString() + 'px';

  var str = '<table border="0" width="310" height="160" cellpadding="2" cellspacing="2" bgcolor="#FFFFFF">';
  str += '<tr height="60"><td><img src="images/1x1.gif" width="1" height="1" border="0" /></td></tr>';
  str += '<tr><td align="center" class="loading"><img src="images/loading.gif" width="150" height="40" border="0" /></td></tr>';
  str += '<tr height="60"><td align="right" valign="bottom"><img src="images/fedby.png" width="33" height="28" border="0" /></td></tr>';
  str += '</table>';

  loadingDiv.id = "loadDiv" + divNo;
  loadingDiv.className = 'loadDiv';
  loadingDiv.style.zIndex = 10 + divNo;
  loadingDiv.innerHTML = str;
  loadingDiv.style.left = l;
  loadingDiv.style.top = t;
  document.body.appendChild(loadingDiv);  	
}


var data;
var crs;
var globDataArr = new Array(400);
function openDetail2(id,divId,code){

  globDataArr[divId] = window.frames["dataFrame"].getData(divId)
  data = globDataArr[divId];  // divId is the FUND'S ID  (what-eva)

  mngrDataArr = getManagerData(globDataArr[divId]["managerCode"]);
  subscribed = false
  if (mngrDataArr[2] == 1){
	subscribed = true;
	subStyle = true;
  }

//alert(loadingDiv.id);
  if (loadingDiv.id != '')
  	document.body.removeChild(loadingDiv);
 
  var trFlag = (unittype=='F')?'':'~TR';
  var div = document.getElementById(divId);
  var l = div.style.left;
  var t = div.style.top;
  t = (Number(t.substr(0,t.indexOf('p'))) + 10).toString() + 'px';
  crs = 'gifchart.asp?wd=310&ht=150&code=F'+ code + trFlag + '&gpcolour=H003399&ftcolour=H000000&bgcolour=HFFFFFF&gdcolour=H9999CC&bdcolour=HFFFFFF&axcolour=HCC0000&gphtype=4&span=12&ShowDate=1&chartbgcolour=HFFFFFF&hdg=0&hdgpos=1&fg=3&vgridint=1&plotpixsize=2&pn=1&yoffs=0&compareflag=I';

  // Title/Controls Div
  var str = '<table border=0 width="310" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">';
  if (subscribed){
  	str += '<tr><td colspan="3" bgcolor="#FFFFFF" align="left"><a href="' + mngrDataArr[3] + '" onclick="javascript: hitCount(\'' + mngrDataArr[3] + '\');" target="_blank"><img src="images/' + globDataArr[divId]["managerCode"] + '.gif" border="0" /></a></td></tr>';
  }
  str += '<tr><td colspan="3" bgcolor="#000000"><img src="images/1x1.gif" width=1 height=1 border=0></td></tr>';
  str += '<tr>';
  str += '	<td colspan="2" class=detailHead align="left" onMouseDown="javascript:dragStart(event,\'detDiv'+ divNo +'\');">' + globDataArr[divId]["unitNameLong"] + '</td>';
  str += '	<td colspan="1" class=detailHead align="right" style="font: small fonts; font-size: 9px; font-weight: normal;" onMouseDown="javascript:dragStart(event,\'detDiv'+ divNo +'\');">(left-click to move)</td>';
  str += '</tr>';
  str += '<tr><td colspan="3" bgcolor="#000000"><img src="images/1x1.gif" width=1 height=1 border=0></td></tr>';
  str += '<tr>'
  str += '  <td align=left width="220" style="cursor: move" onMouseDown="javascript:dragStart(event,\'detDiv'+ divNo +'\');">';
  str += '    <table border=0><tr><td align=left><img src="images/move.png" width=10 height=10 border=0></td><td class=link>Move</td></tr></table></td>';
  str += '  <td width="5"><img src="images/1x1.gif" width="1" height="1" border="0"></td>';
  str += '  <td align="right" width="85" style="cursor: pointer" onClick="javascript:hide('+ divNo +');"><table border=0><tr><td class=link>Close</td><td align=left><img src="images/close.png" width=10 height=10 border=0></td></tr></table></td>';
  str += '</tr>';
  str += '</table>';

  //Chart Div
  var detailType = 'chart';
  str += '<div id="' + detailType + divId + '" class="toggleDiv"><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>';
  str += '  <th valign="middle" width="7%"><div class="toggle"><a id="' + detailType + divId + 'Toggle" class="toggle" href="javascript:toggleDetails(\'' + detailType + '\',\'' + divId + '\')" onFocus="this.blur();">+</a></div></th>';
  str += '  <th valign="middle" width="93%" align="left" class="toggleTitle">&nbsp;Chart</th></tr>';
  str += '<tr><td bgcolor="#0C2E82" colspan="2"><img src="images/1x1.gif" width="1" height="1" border="0"/></td></tr>'
  str += '</table></div>';

  var typeTest = unittype;
  typeTest = typeTest.toUpperCase(); 
  /*
  // Performance Div
  if (unittype != 'I'){
	  var detailType = 'performance';
	  str += '<div id="' + detailType + divId + '" class="toggleDiv"><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>';
	  str += '  <th valign="middle" width="7%"><div class="toggle"><a id="' + detailType + divId + 'Toggle" class="toggle" href="javascript:toggleDetails(\'' + detailType + '\',\'' + divId + '\')" onFocus="this.blur();">+</a></div></th>';
	  str += '  <th valign="middle" width="93%" align="left" class="toggleTitle">&nbsp;Performance</th></tr>';
	  str += '<tr><td bgcolor="#0C2E82" colspan="2"><img src="images/1x1.gif" width="1" height="1" border="0"/></td></tr>'
	  str += '</table></div>';
  }

  // Discrete Performance Div
  if (unittype != 'I'){
	  if (typeTest != 'F'){
		  var detailType = 'discperf';
		  str += '<div id="' + detailType + divId + '" class="toggleDiv"><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>';
		  str += '  <th valign="middle" width="7%"><div class="toggle"><a id="' + detailType + divId + 'Toggle" class="toggle" href="javascript:toggleDetails(\'' + detailType + '\',\'' + divId + '\')" onFocus="this.blur();">+</a></div></th>';
		  str += '  <th valign="middle" width="93%" align="left" class="toggleTitle">&nbsp;Discrete Performance</th></tr>';
	  	  str += '<tr><td bgcolor="#0C2E82" colspan="2"><img src="images/1x1.gif" width="1" height="1" border="0"/></td></tr>'
	  	  str += '</table></div>';
	  }
  }
  */
  /*
  // Facts Div
  var detailType = 'facts';
  str += '<div id="' + detailType + divId + '" class="toggleDiv"><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>';
  str += '  <th valign="middle" width="7%"><div class="toggle"><a id="' + detailType + divId + 'Toggle" class="toggle" href="javascript:toggleDetails(\'' + detailType + '\',\'' + divId + '\')" onFocus="this.blur();">+</a></div></th>';
  str += '  <th valign="middle" width="93%" align="left" class="toggleTitle">&nbsp;Fund Facts</th></tr>';
  str += '<tr><td bgcolor="#0C2E82" colspan="2"><img src="images/1x1.gif" width="1" height="1" border="0"/></td></tr>'
  str += '</table></div>';
  
  // Facts Div
  var detailType = 'mngrdetails';
  str += '<div id="' + detailType + divId + '" class="toggleDiv"><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>';
  str += '  <th valign="middle" width="7%"><div class="toggle"><a id="' + detailType + divId + 'Toggle" class="toggle" href="javascript:toggleDetails(\'' + detailType + '\',\'' + divId + '\')" onFocus="this.blur();">+</a></div></th>';
  str += '  <th valign="middle" width="93%" align="left" class="toggleTitle">&nbsp;Manager Details</th></tr>';
  str += '<tr><td bgcolor="#0C2E82" colspan="2"><img src="images/1x1.gif" width="1" height="1" border="0"/></td></tr>'
  str += '</table></div>';
  */
  // Footer
  str += '<table border=0 width="310" cellpadding=0 cellspacing=0 bgcolor="#FFFFFF">';
  str += '<tr><td class="noteCell" bgcolor="#FFFFFF" colspan=5 align="center">Source: Financial Express, ';
  if (typeTest == 'U' || typeTest == 'L' || typeTest == 'I'){
    switch(data["offer"]){ //Check Offer field to establish if dual-price fund
	case '0.00' : str += 'mid to mid net'; break;
	default : str += 'bid to bid net'; break;
    }
    str += ' income reinvested.<br>Chart rebased to 100.';
  }
  else { // Offshore fund
    switch(data["offer"]){ //Check Offer field to establish if dual-price fund
	case '0.00' : str += 'mid to mid gross'; break;
	default : str += 'bid to bid gross'; break;
    }
    str += ' income reinvested.<br>Chart rebased to 100.';
  }
  
  str += '</td></tr></table>';

  var detailDiv = document.createElement("DIV");
  detailDiv.id = "detDiv" + divNo;
  detailDiv.className = 'detDiv';
  detailDiv.style.zIndex = 10 + divNo;
  detailDiv.innerHTML = str;
  detailDiv.style.left = l;
  detailDiv.style.top = t;
  document.body.appendChild(detailDiv);
  toggleDetails('chart',divId);
}

function getchart(divId){
  var str = ""
  str += '<table border="0" width="310" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">';
  str += '<tr><td><img src="' + crs + '" width="310" height="150" border="0" /></td></tr>';
  str += '<tr><td bgcolor="#000000"><img src="images/1x1.gif" width="1" height="1" border="0"></td></tr></table>';
  return(str);
}

function getperformance(divId){
  var str = ""
  str += '<table border=0 width="310" cellpadding=0 cellspacing=0 bgcolor="#FFFFFF">';
  str += '<tr><td class=perfHead width="20%" align=center>1 Year</td><td class=perfHead width="20%" align=center>3 Year</td><td class=perfHead width="20%" align=center>5 Year</td><td class=perfHead width="20%" align=center>Updated</td></tr>';
  str += '<tr><td colspan=4 bgcolor="#000000"><img src="images/1x1.gif" width=1 height=1 border=0></td></tr>';
  str += '<tr height="20"><td class=perfCell width="20%" align=center>'+ zeroToDash(globDataArr[divId]["perf12month"]) +'</td><td class=perfCell width="20%" align=center>'+ zeroToDash(globDataArr[divId]["perf36month"]) +'</td><td class=perfCell width="20%" align=center>'+ zeroToDash(globDataArr[divId]["perf60month"]) +'</td><td class=perfCell width="20%" align=center>'+ zeroToDash(globDataArr[divId]["updateTime"]) +'</td></tr>';
  //<td class=perfHead width="20%" align=center>Since Launch</td>
  //<td class=perfCell width="20%" align=center>'+ zeroToDash(globDataArr[divId]["sinceLaunch"]) +'</td>
  str += '<tr><td colspan=4 bgcolor="#000000"><img src="images/1x1.gif" width=1 height=1 border=0></td></tr></table>';
  return(str);
}

function getdiscperf(divId){
  var str = ""
    str += '<table border=0 width="310" cellpadding=0 cellspacing=0 bgcolor="#FFFFFF">';
    str += '<tr><td class=perfHead width="20%" align=center>' + discDate1 + ' to<br>' + discDate0 + '</td>';
    str += '<td class=perfHead width="20%" align=center>' + discDate2 + ' to<br>' + discDate1 + '</td>'
    str += '<td class=perfHead width="20%" align=center>' + discDate3 + ' to<br>' + discDate2 + '</td>'
    str += '<td class=perfHead width="20%" align=center>' + discDate4 + ' to<br>' + discDate3 + '</td>'
    str += '<td class=perfHead width="20%" align=center>' + discDate5 + ' to<br>' + discDate4 + '</td></tr>'
    str += '<tr><td colspan="5" bgcolor="#000000"><img src="images/1x1.gif" width=1 height=1 border=0></td></tr>';
    str += '<tr height="20"><td class=perfCell width="20%" align=center>'+ zeroToDash(globDataArr[divId]["p12m"]) +'</td><td class=perfCell width="20%" align=center>'+ zeroToDash(globDataArr[divId]["p24m"]) +'</td><td class=perfCell width="20%" align=center>'+ zeroToDash(globDataArr[divId]["p36m"]) +'</td><td class=perfCell width="20%" align=center>'+ zeroToDash(globDataArr[divId]["p48m"]) +'</td><td class=perfCell width="20%" align=center>'+ zeroToDash(globDataArr[divId]["p60m"]) +'</td></tr>';
    str += '</table>';
  return(str);
}

function getfacts(divId){
  var objText = "" + emptyStringToNA(globDataArr[divId]["objectiveText"]);
  var str = "";
  str += '<table border=0 width="310" cellpadding="2" cellspacing="0" bgcolor="#FFFFFF">';
  str += '<tr><td class="perfHead" width="50%">&nbsp;Launch Date</td><td class="perfHead" width="50%">&nbsp;Fund Size</td></tr>'
  str += '<tr><td class="perfCell" width="50%">&nbsp;' + emptyStringToNA(globDataArr[divId]["launchDate"]) + '</td><td class="perfCell" width="50%">&nbsp;' + emptyStringToNA(globDataArr[divId]["fundSize"]) + '</td></tr>'
  str += '<tr><td class="perfHead" colspan="2">&nbsp;Objective</td></tr>';
  str += '<tr><td class="perfCell" colspan="2">' + objText + '</td></tr>';
  //str += '<tr><td bgcolor="#000000" colspan="2"><img src="images/1x1.gif" width=1 height=1 border=0></td></tr>';
  str += '</table>';
  return(str);
}

function getmngrdetails(divId){
  var str = "";
  str += '<table border=0 width="310" cellpadding="2" cellspacing="0" bgcolor="#FFFFFF">';
  str += '<tr><td class="perfHead" colspan="2">&nbsp;' + globDataArr[divId]["managerName"] + '</td></tr>';
  if (globDataArr[divId]["address1"] != ""){
  	str += '<tr><td class="perfCell" colspan="2">'
    	str += globDataArr[divId]["address1"] + "<br>";
	  if (globDataArr[divId]["address2"] != "")
	  	str += globDataArr[divId]["address2"] + "<br>";
	  if (globDataArr[divId]["address3"] != "")
	  	str += globDataArr[divId]["address3"] + "<br>";
	  if (globDataArr[divId]["address4"] != "")
	  	str += globDataArr[divId]["address4"] + "<br>";
	str += '</td></tr>';
  }
  if (globDataArr[divId]["mainTel"] != ""){
	str += '<tr height="18"><td class="perfCell" colspan="2">' + globDataArr[divId]["mainTel"] + '</td></tr>';
  }
  if (globDataArr[divId]["email"] != ""){
	str += '<tr height="18"><td class="perfHead" colspan="2"><a class="link" href="mailto:' + globDataArr[divId]["email"] + '" target="_blank">' + globDataArr[divId]["email"] + '</a></td></tr>';
  }
  if (globDataArr[divId]["webURL"] != ""){
	str += '<tr height="18"><td class="perfCell" colspan="2"><a class="link" href="' + globDataArr[divId]["webURL"] + '" target="_blank">' + globDataArr[divId]["webURL"] + '</a></td></tr>';
  }
  str += '</table>';
  return(str);
}


function emptyStringToNA(str){
  if (str == ""){
    return("N/A");	
  }
  else{
    return(str);
  }
}

function emptyStringToNBSP(str){
  if (str == ""){
    return("&nbsp;");	
  }
  else{
    return(str);
  }
}

function toggleDetails(detailName,divId){

  var detail = document.getElementById(detailName+divId);
  var toggle = document.getElementById(detailName+divId+"Toggle");
  var table = detail.firstChild
  
  var boolOpen;  // is TRUE when icon is set to OPEN the data panel
  if (toggle.innerHTML == '+'){
	boolOpen = true;
	toggle.innerHTML = '-';
	toggle.className = 'toggleOn';
	var tbody = document.createElement("tbody");
	var tr = document.createElement("tr");
	var td = document.createElement("td");
	td.innerHTML = eval('get'+detailName+'(' + divId + ')');
	tr.appendChild(td);
	td.setAttribute("colSpan","2");
	td.setAttribute("className","detailPanel");
	tbody.appendChild(tr);
	table.appendChild(tbody);
  }
  else{
	boolOpen = false;
	toggle.innerHTML = '+';
	toggle.className = 'toggle';
	var openDetail = table.lastChild;
	table.removeChild(openDetail);
  }
}



//////////////////////////////////////
// Miscellaneous
//////////////////////////////////////


function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

MM_preloadImages('images/trustnetMo.gif','images/adviserMo.gif','images/marketeyeMo.gif','images/annMo.gif','images/analyticsMo.gif','images/webtoolsMo.gif','images/datafeedsMo.gif','images/factsheetMo.gif','images/intelligenceMo.gif')


function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function goLink(link){
  var str = link;
  window.document.location.href = str;  
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


function closeAll(){
  for(var i=1; i<=divNo; i++){
    hide(i);
  }
}

function hide(divNo){
  var div = document.getElementById("detDiv"+divNo);
  if (div){
    document.body.removeChild(div);
  }
}

function move(dir,cont){
  if (format == 'tabloid'){
	subtractID = 95;
  }
  else{
	subtractID = 245;
  }
  if (dir == 0){
    newId = (firstId - subtractID);
    cont = 0;
  }
  else{
    newId = lastId - 1;
  }
  url = 'broadsheet.wsp?unittype=' + unittype + '&format=' + format + '&id=' + newId + '&cont=' + cont;
  window.location.replace(url);
}

function toggleHelp(){
  var help = document.getElementById("help");
  if (help.style.visibility == 'hidden' || help.style.visibility == '')
    help.style.visibility = 'visible';
  else
    help.style.visibility = 'hidden';
}







//////////////////////////////////////
// Determine browser and version.
//////////////////////////////////////

function Browser() {

  var ua, s, i;

  this.isIE    = false;
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as NS 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}

var browser = new Browser();


//////////////////////////////////////
// Drag Script
//////////////////////////////////////


// Global object to hold drag information.

var dragObj = new Object();
dragObj.zIndex = 20;

function dragStart(event, id) {

  var el;
  var x, y;

  // If an element id was given, find it. Otherwise use the element being
  // clicked on.

  if (id)
    dragObj.elNode = document.getElementById(id);
  else {
    if (browser.isIE)
      dragObj.elNode = window.event.srcElement;
    if (browser.isNS)
      dragObj.elNode = event.target;

    // If this is a text node, use its parent element.

    if (dragObj.elNode.nodeType == 3)
      dragObj.elNode = dragObj.elNode.parentNode;
  }

  // Get cursor position with respect to the page.

  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

  // Save starting positions of cursor and element.

  dragObj.cursorStartX = x;
  dragObj.cursorStartY = y;
  dragObj.elStartLeft  = parseInt(dragObj.elNode.style.left, 10);
  dragObj.elStartTop   = parseInt(dragObj.elNode.style.top,  10);

  if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
  if (isNaN(dragObj.elStartTop))  dragObj.elStartTop  = 0;

  // Update element's z-index.

  dragObj.elNode.style.zIndex = ++dragObj.zIndex;

  // Capture mousemove and mouseup events on the page.

  if (browser.isIE) {
    document.attachEvent("onmousemove", dragGo);
    document.attachEvent("onmouseup",   dragStop);
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS) {
    document.addEventListener("mousemove", dragGo,   true);
    document.addEventListener("mouseup",   dragStop, true);
    event.preventDefault();
  }
}

function dragGo(event) {

  var x, y;

  // Get cursor position with respect to the page.

  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

  // Move drag element by the same amount the cursor has moved.

  dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
  dragObj.elNode.style.top  = (dragObj.elStartTop  + y - dragObj.cursorStartY) + "px";

  if (browser.isIE) {
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS)
    event.preventDefault();
}

function dragStop(event) {

  // Stop capturing mousemove and mouseup events.

  if (browser.isIE) {
    document.detachEvent("onmousemove", dragGo);
    document.detachEvent("onmouseup",   dragStop);
  }
  if (browser.isNS) {
    document.removeEventListener("mousemove", dragGo,   true);
    document.removeEventListener("mouseup",   dragStop, true);
  }
}


var AFILinkDiv = document.createElement("DIV");
function createAFIDiv(){

  var str = '';
  str += '<table border="0" cellpadding="0" cellspacing="0">';
  str += '<tr><td><a href="http://www.trustnet.com/general/afi.asp" target="_blank">';
  str += '<img src="images/AFILink.png" width="310" height="200" border="0" alt="Adviser Fund Index link" />';
  str += '</a></td></tr></table>'
  AFILinkDiv.id = "AFILinkDiv";
  AFILinkDiv.style.position = 'absolute';
  AFILinkDiv.style.zIndex = 10;
  AFILinkDiv.innerHTML = str;
  AFILinkDiv.style.left = 16;
  AFILinkDiv.style.top = 155;
  document.body.appendChild(AFILinkDiv);

  return true;
  	
}


