var isFrame=0;
var gNumDisplayed=0;
var gNeedParse=1;
var gAllKnownSys = new Array();
var gAllowDisplay = new Array();
var gNowDisplay=new Array();
var gName= new Array();
var gAge= new Array();
var gNumTrades= new Array();
var gTradeLen= new Array();
var gC2Score= new Array();
var gWinPer= new Array();
var gWL= new Array();
var gAvgWin= new Array();
var gAvgLoss= new Array();
var gAnnRet= new Array();
var gCorr= new Array();
var gTerms1= new Array();
var gTerms2= new Array();
var gStockPercent= new Array();
var gFuturePercent= new Array();
var gOptionPercent= new Array();
var gForexPercent= new Array();
var gAPD=new Array();
var gSharpe=new Array();
var gLastPeriod=new Array();
var gBets=new Array();
var gShorts=new Array();
var gStars=new Array();
var gReviewsToRequest=new Array();
var gReviewText=new Array();
var gReviewHTML=new Array();
var gNoC2Score = 0;

function safari()
{
	var ua = navigator.userAgent.toLowerCase(); 
	if ( ua.indexOf( "safari" ) != -1 ) {return(true);}
	return(false); 
}

function removeDupes(a) {
	var tmp = new Array(0);
	for(i=0;i<a.length;i++){
		if(!contains(tmp, a[i])){
			tmp.length+=1;
			tmp[tmp.length-1]=a[i];
		}
	}
	return tmp;
}


function contains(a, e) {
	for(j=0;j<a.length;j++)if(a[j]==e)return true;
	return false;
}

function parseAndDisplay(s,showAll,noC2Score)
{
    gNoC2Score = noC2Score || 0;
	_parse(s);
	_buildSysDiv(gAllKnownSys,1);
	doFilter(1,showAll);
	refreshMoreFewerLinks();
}
function _buildSysDiv(allS,displayAfterBuild)
{
	var draggableJava='';
	
	var useTarget='';
	var jsTarget='_top';
	if (isFrame)
	{
		 useTarget=' target="_top"';
	}
	
	var htm='';
	
	for (i=0; i<allS.length; i++)
	{
		var sid=allS[i];
		var terms2='';
		if (gTerms2[sid].length>2) {terms2='<br/>'+gTerms2[sid]}
	
	var ta=new Array();
	if (gStockPercent[sid]>.20) {ta.push('Stocks');}
	if (gFuturePercent[sid]>.20) {ta.push('Futures');}
	if (gOptionPercent[sid]>.20) {ta.push('Options');}
	if (gForexPercent[sid]>.20) {ta.push('Forex');}
	var trades=ta.join(', ');

	var hidden='';
	hidden='style="display: none;"'
	
	var starLine='';
	var starImage='';
	var starEnc='';
	if (gStars[sid]>0)
	{
		starImage='<img src="'+SITE_BASE+'/images/smallrate'+Math.round(gStars[sid])+'.gif" id="starRev'+sid+'">';
		starEnc='<table border="0"><tr><td class="linkpic" onMouseOver="handleDisplayReviews('+sid+',this);">'+starImage+'</td></tr></table>';

	}
	var linkdest='c2systems.mpl?systemid='+sid;

var classname='clmFloater';

	
	var starHold=gStars[sid];
	if (gStars[sid]>0)
	{
		starHold='<div onclick="handleDisplayReviews('+sid+',this);return false;" class="star'+Math.round(gStars[sid])+'p" id="starRev'+sid+'">&nbsp;</div>';
	}
	
	
	
	htm=htm+'\
            	<div class="clmFloater">\
		<div id="sys'+sid+'" style="display:none;">\
		<div class="clmFloaterSkel">\
    <table class="findSkel"><tr><td class="lft">\
<div class="findertile" id="finder'+sid+'" onmousedown="handleMouseDown('+sid+');"  onmouseup="handleMouseUp('+sid+',\'syscht'+sid+'\')">\
		<div class="systitl">'+gName[sid]+ '</div>\
                   <img id="syscht'+sid+'" width="161" height="114" src="'+CGI+'/dashcharts.mpl?sid='+sid+'&width=161&height=114&switch=finder" alt=""/>\
</div>\
	    </td><td class="rt">\
                    <div id="sysdet'+sid+'" class="details">\
                    	<div class="instru">'+trades+'</div>'+starHold+'<br />\
                    	<table class="details">\
                        <tr><td>Age</td><td>'+gAge[sid]+'</td></tr>\
                        <tr><td># Trades</td><td>'+gNumTrades[sid]+'</td></tr>\
                        <tr><td>Avg Trade</td><td>'+gTradeLen[sid]+'</td></tr>\
                        <tr><td>Win %</td><td>'+gWinPer[sid]+'</td></tr>\
                        <tr><td>Ann Retn</td><td>'+gAnnRet[sid]+'</td></tr>\
                        <tr><td>Correlatn S&amp;P</td><td>'+gCorr[sid]+'</td></tr>';

    if ( ! gNoC2Score )
    {
        htm = htm + '<tr><td><span style="font-weight:bold;">C2 Score</span> <a onmouseout="Effect.DropOut(\'explain_score\')" onclick="javascript:popupImage(this,\'explain_score\');return false;" href="#"><img style="vertical-align:bottom;" src="/images/question-small.png"/></a></td><td><span style="font-weight:bold">'+gC2Score[sid]+'</font></td></tr>';
    }
 
    htm = htm + '                    </table>';

    htm = htm + '                        <div class="totalMonth">'+gTerms1[sid]+terms2+'</div>\
                    </div>\
	     </td>\
	</tr></table>\
                </div>\
		</div>\
		</div>';
	}
    
    if ( ! gNoC2Score )
    {
        htm = htm + '<div id="explain_score" style="z-index: 99999; width: 300px; border: 2px solid rgb(102, 102, 102); display: none; background: #fff; padding: 5px; position: absolute; left: 0px; top: 0px;"><b>What is the C2 Score?</b><br/><br/>Collective2 rates every trading advisor in its database and assigns a score between 100 and 1000.<br/><br/>In general, a rating above 500 is good. A rating above 700 is excellent.<br/><br/> Collective2 Ratings are recalculated daily based on the entire performance history in our database. The exact formula we use is proprietary, but there are several key variables that go into the Collective2 Rating. One of the most important factors is the length of time we have been able to observe the performance of the trader. Another key factor is the amount by which the trader over-performs or under-performs the S&P 500 index. Finally, the choppiness of the trader\'s results is taken into account. Certainly a more consistent trader will be rated more highly than a trader with erratic results.</div>';
    }
	

	if (displayAfterBuild) {document.getElementById('thumbnailholder').innerHTML=htm;}
	
	return(htm);
	
	
}


function _display(allS)
{
	
	for (i=0; i<allS.length; i++)
	{
		var sid=allS[i];
		
		if ( ((gNowDisplay[sid]==0)||(gNowDisplay[sid]==undefined)) && (gNumDisplayed<gMaxToDisplay)  && (gAllowDisplay[sid]==1))
		{
			show(true,'sys'+sid);
			gSavedDraggable[sid]=new Draggable('finder'+sid,{revert:true, scroll:window});
			document.getElementById('sys'+sid).style.display = "block";
			gNumDisplayed=gNumDisplayed+1;
			gNowDisplay[sid]=1;
		}
		else if (gNowDisplay[sid]==1)
		{
			show(false,'sys'+sid);
			try {gSavedDraggable[sid].destroy();}catch (e){}
			document.getElementById('sys'+sid).style.display = "none";
			gNowDisplay[sid]==0;
			gNumDisplayed=gNumDisplayed-1;

		}
	} 
}

function refreshDisplay(allS,usedropout,forcerefresh)
{
	for (i=0; i<allS.length; i++)
	{
		var sid=allS[i];
		
		//alert ('forcerefresh='+forcerefresh+', --> testing '+sid+': gNowDisplay='+gNowDisplay[sid]+', gAllowDisplay='+gAllowDisplay[sid]+', gNumDisplayed='+gNumDisplayed);
		if (forcerefresh==false)
		{
			if ((gNowDisplay[sid]===1) && (gNumDisplayed>gMaxToDisplay))
			{
				show(false,'sys'+sid);
				document.getElementById('sys'+sid).style.display = "none";
				gNowDisplay[sid]=0;
				gNumDisplayed=gNumDisplayed-1;
				
			     try {gSavedDraggable[sid].destroy();}catch(e){}
			}
			else if ((gAllowDisplay[sid]==-2)&& (gNowDisplay[sid]===1))
			{
				if (usedropout)
				{
					new Effect.DropOut(document.getElementById('sys'+sid));
				}
				else
				{
					show(false,'sys'+sid);
					document.getElementById('sys'+sid).style.display = "none";
				}
				if (gNowDisplay[sid]==1) {gNumDisplayed=gNumDisplayed-1;}
				gNowDisplay[sid]=0;
				try {gSavedDraggable[sid].destroy();}catch(e){}

				
			}
			else if (((gAllowDisplay[sid]==1) || (gAllowDisplay[sid]==undefined)) && (gNowDisplay[sid]!==1))
			{
				if (gNumDisplayed<gMaxToDisplay)
				{
					var o='sys'+sid;
				
					if (safari()) 
					{
						show(true,'sys'+sid);
						document.getElementById('sys'+sid).style.display = "block";
					}
					else
					{
						setTimeout('new Effect.Appear(document.getElementById(\''+o+'\'))',700);
					}
					
					gNumDisplayed=gNumDisplayed+1;
					gNowDisplay[sid]=1;
					gSavedDraggable[sid]=new Draggable('finder'+sid,{revert:true, scroll:window});
			       
				}
			}
			
		}
		else if (forcerefresh==true)
		{
			if ( ((gAllowDisplay[sid]==1)||(gAllowDisplay[sid]==undefined)) && (gNumDisplayed<gMaxToDisplay) )
			{
				var o='sys'+sid;
				
				if (safari()) 
				{
					show(true,'sys'+sid);
					document.getElementById('sys'+sid).style.display = "block";
				}
				else
				{
					setTimeout('new Effect.Appear(document.getElementById(\''+o+'\'))',700);
				}
				
				gNumDisplayed=gNumDisplayed+1;
				gNowDisplay[sid]=1;
				gSavedDraggable[sid]=new Draggable('finder'+sid,{revert:true, scroll:window});
                

				
			}
			else
			{
				gNowDisplay[sid]=0;
				try {gSavedDraggable[sid].destroy();} catch (e){}
			}
		}
		
		
		
		
	} 


	
	
}



function close(sid)
{
	new Effect.DropOut(document.getElementById('sys'+sid));
	gAllowDisplay[sid]=-1;
	gNowDisplay[sid]=0;
	gNumDisplayed=gNumDisplayed-1;
	refreshDisplay(gAllKnownSys,true,false);
	refreshMoreFewerLinks();
}

function _parse(s)
{
	gAllowDisplay.length=0;
	
	gNeedParse=0;
	
	if (s=='none') {return;}
	
	var ar = s.split("=9x");
	for(i=0;i<ar.length;i++)
	{
		var x=ar[i].split('|');
		var sid=x[0];
		
		gName[sid]=x[1];
		
		gAge[sid]=x[2];
		gNumTrades[sid]=x[3];
		gTradeLen[sid]=x[4];
		gWinPer[sid]=x[5];
		gWL[sid]=x[6];
		gAvgWin[sid]=x[7];
		gAvgLoss[sid]=x[8];
		gAnnRet[sid]=x[9];
		
		gSharpe[sid]=x[11];
		gCorr[sid]=x[12];
		gAPD[sid]=x[13];
		gTerms1[sid]=x[19];
		gTerms2[sid]=x[20];
		
		gStars[sid]=x[21];
		
		gLastPeriod[sid]=x[23];
		
		gBets[sid]=x[24];
		gShorts[sid]=x[25];
	    
        gC2Score[sid]= x[26];
	
		if ((gStars[sid]>0) && (gReviewText[sid]==undefined))
		{
			gReviewsToRequest.push(sid);
			gReviewText[sid]='Loading...';
		}
		gStockPercent[sid]=x[15];
		gFuturePercent[sid]=x[16];
		gOptionPercent[sid]=x[18];
		gForexPercent[sid]=x[17];
		gAllKnownSys.push(sid);
		gAllowDisplay[sid]=1;
	}
	gAllKnownSys=removeDupes(gAllKnownSys);
}

function showmore()
{
	var remain=gAllKnownSys.length-gNumDisplayed;
	if (remain>0)
	{
		var add=6;
		if (add>remain) {add=remain;}
		gMaxToDisplay+=add;
		refreshDisplay(gAllKnownSys,true,false);
	}
	refreshMoreFewerLinks();
	sendtoggleinfo('t_numdisplay',gMaxToDisplay);

}

function handleNumberSelect(newnum)
{
	
	gMaxToDisplay=newnum;
	var temp=gAllKnownSys.clone();
	temp.reverse();
	refreshDisplay(temp,true,false);
	
	refreshMoreFewerLinks();
	sendtoggleinfo('t_numdisplay',gMaxToDisplay);
}

function showfewer()
{
	if (gNumDisplayed>0)
	{
		var subtract=6;
		if (subtract>gNumDisplayed) {subtract=gNumDisplayed;}
		gMaxToDisplay-=subtract;
		var temp=gAllKnownSys.clone();
		temp.reverse();
		refreshDisplay(temp,true,false);
	}
	refreshMoreFewerLinks();
	sendtoggleinfo('t_numdisplay',gMaxToDisplay);

}



function refreshMoreFewerLinks()
{
	
	
	
	var testcount=0;
	for (i=0; i<gAllKnownSys.length; i++)
	{
		var sid=gAllKnownSys[i];
		if ((gNowDisplay[sid]==1) && (testcount<=gMaxToDisplay) ) {testcount=testcount+1;}
	}
	
	gNumDisplayed=testcount;
	
	
	
	if (gNumDisplayed>0)
	{
		//document.getElementById('showfewer').innerHTML='<span class="left"><a href="javascript:showfewer();">Show fewer</a></span>';
	}
	else
	{
		//document.getElementById('showfewer').innerHTML='<span class="left">Show fewer</span>';
	}
	
	if (gAllKnownSys.length>gNumDisplayed)
	{
		//document.getElementById('showmore').innerHTML='<span class="right"><a href="javascript:showmore();">Show more</a></span>';
	}
	else
	{
		//document.getElementById('showmore').innerHTML='<span class="right">Show more</span>';
	}
	var status=makeStatus();
	document.getElementById('centerstatus1').innerHTML='<strong class="fleft">'+status+'</strong>';
	document.getElementById('centerstatus2').innerHTML='<strong class="fleft">'+status+'</strong>';
	
}
function makeStatus()
{
	//var hidden='';
	//var numHidden=countHidden();
	//if (numHidden>0)
	//{
	//	hidden='&nbsp;-&nbsp;'+numHidden+'&nbsp;hidden&nbsp;(<a href="javascript:unhide(-1);">unhide</a>)';
	//}
	//var t=gAllKnownSys.length+'&nbsp;potential&nbsp;systems&nbsp;meet&nbsp;criteria'+hidden;
	
	var counthidden=0;
	var countnotshown=0;
	var countshown=0;
	
	for (i=0; i<gAllKnownSys.length; i++)
	{
		var sid=gAllKnownSys[i];
		if ( gAllowDisplay[sid]==-1)
		{
			counthidden++;
		}
		else if ( gAllowDisplay[sid]==-2)
		{
			countnotshown++;
		}
		else if (gNowDisplay[sid]==1)
		{
			countshown++;
		}
	}
	var hidden='';
	var stillavail=gAllKnownSys.length-countnotshown-countshown;
	var t;
	
	if (gAllKnownSys.length==0)
	{
		t='No systems match your choices. Try fewer restrictions.';
	}
	else
	{
		t="Click on a chart to see details. ";
		if (stillavail>0)
		{
			if (stillavail==1)
			{
				t=t+'(One system isn\'t';
			}
			else
			{
				t=t+'('+stillavail+' systems aren\'t';
			}
			t=t+' being shown.)';
		}
	}
	
	return (t);
}
function countHidden()
{
	var count=0;
	for (i=0; i<gAllKnownSys.length; i++)
	{
		var sid=gAllKnownSys[i];
		if ( gAllowDisplay[sid]==-1)
		{
			count++;
		}
	}
	return (count);
}


function unhide(whichStatus)
{
	for (i=0; i<gAllKnownSys.length; i++)
	{
		var sid=gAllKnownSys[i];
		if ( gAllowDisplay[sid]==whichStatus)
		{
			gAllowDisplay[sid]=1;
			
			show(true,'sys'+sid);
			document.getElementById('sys'+sid).style.display = "block";

			gNumDisplayed++;
			
		}
	}
	
	var temp=allDisplayed(gAllKnownSys);
	temp.reverse();
	refreshDisplay(temp,false,false);

	refreshMoreFewerLinks();
}
function allDisplayed(a)
{
	var r=new Array();
	for (i=0; i<a.length; i++)
	{
		var sid=a[i];
		if (gNowDisplay[sid]==1)
		{
			r.push(sid);
		}
	}
	return (r);
}
function show(sw,obj) {
	if (sw && (ie4 || ie5) ) document.all[obj].style.display = 'inline';
	if (!sw && (ie4 || ie5) ) document.all[obj].style.display = 'none';
	if (sw && ns4) document.layers[obj].display = 'inline';
	if (!sw && ns4) document.layers[obj].display = 'none';
}
function ParaOver(c2) {
  c2.style.backgroundColor="66ccff";
}
function ParaOut(c2) {
  c2.style.backgroundColor="transparent";
}





function c2win(url,name,w,h) {
	NewWindow=window.open('http://www.collective2.com/'+url,name,'width='+w+',height='+h+',resizable=yes,scrollbars=yes');
}

function clickany(box)
{
    if (document.tform.all.checked==true)
    {
        document.tform.stocks.checked=false;
		document.tform.options.checked=false;
		document.tform.forex.checked=false;
		document.tform.futures.checked=false;

		document.tform.all.checked=false;
        sendtoggleinfo('t_allfalse',box.name);

        box.checked=true;
    }
	if (box.checked==false)
	{
          document.tform.all.checked=false;
          sendtoggleinfo('t_all',0);
	}

}
function clickallinstr()
{
    var v;
	if (document.tform.all.checked==true)
	{
		v=true;
		document.tform.stocks.checked=v;
		document.tform.options.checked=v;
		document.tform.forex.checked=v;
		document.tform.futures.checked=v;
	 }
    }


function binary(x)
{
	if (x){return '1';}
	return '0';
}

function clickQuery(queryRadio)
{
	
	displayStatus('<span class="dynastatus">Searching database...&nbsp;<img src="../images/loadsmall.gif"></span>');
	var r=Math.random();
	var url=CGIAPP+'?refresh=1&session='+gsess+'&want=handleFinderQuery&query='+queryRadio.value+'&R='+r;
	
	pendURL.push(url);

	return false;

}




function clearStatus()
{
	document.getElementById("centerstatus1").innerHTML='&nbsp;';
	document.getElementById("centerstatus2").innerHTML='&nbsp;';
}
function displayStatus(message)
{
	document.getElementById("centerstatus1").innerHTML='<strong class="fleft"><b>'+message+'</b></strong>';
	document.getElementById("centerstatus2").innerHTML='<strong class="fleft"><b>'+message+'</b></strong>';
}
function sendtoggleinfo(setting,value)
{
	setSessionVal(gsess,setting,value);
}


function clearField()
{
	for (i=0; i<gAllKnownSys.length; i++)
	{
		var sid=gAllKnownSys[i];
		show(false,'sys'+sid);
		document.getElementById('sys'+sid).style.display = "none";
		gNowDisplay[sid]=0;
		gAllowDisplay[sid]=0;
	}
	gAllKnownSys.length=0;
	gNowDisplay.length=0;
	gAllowDisplay.length=0;
	gNumDisplayed=0;
}



function doFilter(newCheckValue,showAll)
{
	// clear previous filters
	
	for (i=0; i<gAllKnownSys.length; i++)
	{
		var sid=gAllKnownSys[i];
		if (gAllowDisplay[sid]==-2)
		{
			
			
			gAllowDisplay[sid]=1;
		}
	}

    if ( ! showAll )
    {	
        for (i=0; i<gAllKnownSys.length; i++)
        {
            var sid=gAllKnownSys[i];
            if ((document.tform.stocks.checked==false) && (gStockPercent[sid]>.20))
            {
                gAllowDisplay[sid]=-2;
            }
            if ((document.tform.options.checked==false) && (gOptionPercent[sid]>.20))
            {
                gAllowDisplay[sid]=-2;
            }
            if ((document.tform.futures.checked==false) && (gFuturePercent[sid]>.20))
            {
                gAllowDisplay[sid]=-2;
            }
            if ((document.tform.forex.checked==false) && (gForexPercent[sid]>.20))
            {
                gAllowDisplay[sid]=-2;
            }

            if ((document.tform.profitable.checked==true)&& (gLastPeriod[sid]<=0))
            {
                gAllowDisplay[sid]=-2;
            }
            
            if ((document.tform.bets.checked==true)&& (gBets[sid]==1))
            {
                gAllowDisplay[sid]=-2;
            }
            

            if ((document.tform.longonly.checked==true)&& (gShorts[sid]==1))
            {
                gAllowDisplay[sid]=-2;
            }
        }
    }
	
	if (newCheckValue==0)
	{
		// we have unchecked. Therefore we need to re-build html
		new Effect.Opacity('thumbnailholder', { from: 1, to: .1, duration: 0.5 });
		setTimeout('gNumDisplayed=0;_buildSysDiv(gAllKnownSys,1);refreshDisplay(gAllKnownSys,true,true);new Effect.Opacity(\'thumbnailholder\', { from: .1, to: 1, duration: 0.5 });',550);
		
		
	}
	else
	{
		refreshDisplay(gAllKnownSys,true,false);
	}
	refreshMoreFewerLinks();
}



function handleDisplayReviews(sid,el)
{
	
	var localReviewHTML='<div id="reviewEncloser"><h3>Real-life Customer Reviews of '+gName[sid]+'</h3> <div class="popCloseBut"><a href="#" class="btnClose" onclick="popupshow(false);return false;">Close</a></div></div><br />\
<div class="nofloat"></div><div id="reviewframe"><p align="center">Loading reviews for '+gName[sid]+'...<BR></p><BR><p align="center"><img src="../images/loading.gif"></div>';
	
	if (gReviewHTML[sid]==undefined)
	{
		
		
		var r=Math.random();
		var url=CGIAPP+'?refresh=1&session='+gsess+'&want=requestReview&systemid='+sid+'&sysname='+encodeURIComponent(gName[sid])+'&R='+r;
		pendURL.push(url);
	}
	else
	{
		
		localReviewHTML='<div id="reviewEncloser"><h3>Real-life Customer Reviews of '+gName[sid]+'</h3> <div class="popCloseBut"><a href="#" class="btnClose" onclick="popupshow(false);return false;">Close</a></div></div><br />\
<div class="nofloat"></div><div id="reviewframe">'+gReviewHTML[sid]+'</div>';
		
	}
	
	
	moveEl1ToLocEl2 ('popupwrapper','sys'+sid,undefined,-340);
	document.getElementById('popupContentDiv').innerHTML=localReviewHTML;
	
	popupshow(true);
	
}

function loadpopupContent(el,contentname)
{
	
	var placeholderHTML='<div class="popCloseBut"><a href="#" class="btnClose" onclick="popupshow(false);return false;">Close</a></div><BR><div id="contentEncloser"><BR><p align="center"><img src="../images/loading.gif"></p></div>';
	
	moveEl1ToAbsolute ('popupwrapper',el,0,50);
	
	document.getElementById('popupContentDiv').innerHTML=placeholderHTML;
	
	popupshow(true);
	
	var r=Math.random();
	var url=CGI+'/page.mpl?want=loadpopup&contentname='+encodeURIComponent(contentname)+'&session='+gsess+'&R='+r;
	pendURL.push(url);
}


