function EvCls(clsName, grpAry)
{
	this.clsName = clsName;
	this.grpAry = grpAry;
	
}

function EvGrp(grpID, grpName, evAry)
{
	this.grpID=grpID;
 	this.grpName= grpName;
	this.evAry=evAry;
}


function addEvent(obj, evType, fn, useCapture){
	if (obj.addEventListener){
		obj.addEventListener(evType, fn, useCapture);
		return true;
	}else if (obj.attachEvent){
		obj.attachEvent("on"+evType, fn);
	} else {
	    alert("Handler could not be attached");
	}
} 

var currEvAry = null;
var expEvAry = null;
var currentEvents = true;
function init(){
	currEvAry = getCurrent();
	currEvAry.sort(classOrder);

	expEvAry = getExpired();
	showAllEvents(true);

        loadInitialSearchPage(resPage);
}

function trade(conID){
	location.href="/index.jsp?request_operation=trade&request_type=action&selConID="+conID;
	return false;
}

function tradeEvent(eventID)
{

	location.href="/index.jsp?request_operation=trade&request_type=action&eventSelect="+eventID;
	return false;


}




function classOrder(a, b){ 
	var ret = 	 (a.clsName.toUpperCase()  > b.clsName.toUpperCase() )?1 :-1; 
	return ret;
}

function showAllEvents(useCurrent){
	currentEvents = useCurrent;
	var mnuDiv = getElementById("indexList");
	
	mnuDiv.innerHTML="";

	var tbl = document.createElement("table");
	tbl.cellSpacing=0;
	tbl.cellPadding=0;	
	tbl.width="100%";
	tbl.border=0;
	mnuDiv.appendChild(tbl);


	row = tbl.insertRow(tbl.rows.length);
	cell = row.insertCell(0);
	cell.width="100%";

	row.className="darkheader";

	var helplink = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=# onclick=\"popUpHtml('/jsp/intrade/help/HTML/p_contract_results.html','results',400,400);return false;\">?</a>";
	if(useCurrent){
		cell.innerHTML="Current Contracts" +helplink;
		showEvents( tbl, useCurrent);
	}else{
		cell.innerHTML="Expired Contracts" +helplink;
		showEvents(tbl, useCurrent);
	}

	

	row = tbl.insertRow(tbl.rows.length);
	cell = row.insertCell(0);
	cell.style.paddingTop="5px";
	cell.style.paddingLeft="0px";
	var lnk = document.createElement("a");
	cell.appendChild(lnk);
	lnk.href="#";
	lnk.className="searchlink";

	if(useCurrent){
		lnk.innerHTML="Show Expired";
		addEvent(lnk, "click", showExpired, false);
	}else{
		lnk.innerHTML="Show Current";
		addEvent(lnk, "click", showCurrent, false);
	}




	var br = document.createElement("br");
	mnuDiv.appendChild(br);

	var spacerImg = document.createElement("img");
	spacerImg.src="/bet/images/spacer.gif";
	spacerImg.width="180";
	spacerImg.height="1";
	mnuDiv.appendChild(spacerImg);

}


function showExpired(){
	if(null == expEvAry){
		alert("No expired contracts listed");
		return;
	}
	expEvAry.sort(classOrder);
	showAllEvents(false);
        reloadMarkets("expired=true");	
}
function showCurrent(){
	showAllEvents(true);
        reloadMarkets("");	
}

function keySearch(event){
    if(event.keyCode==13)
            doSearch();
}

function showEvents( tbl,  useCurrent){

	row = tbl.insertRow(tbl.rows.length);
	cell = row.insertCell(0);
	var grptbl = document.createElement("table");
	grptbl.cellSpacing=0;
	grptbl.cellPadding=0;
	grptbl.width="100%";
	grptbl.className="home_page_menu";
	cell.appendChild(grptbl);


	
	row = grptbl.insertRow(grptbl.rows.length);
	cell = row.insertCell(0);
	cell.innerHTML="<span style='float: left;'>Find: <input name=searchText size=15 id=searchText onkeypress='keySearch(event);'></span><a class='doSearchButton' onclick='doSearch(); return false;' href='#' style='float:right;'>Go</a>";

	row = grptbl.insertRow(grptbl.rows.length);
	cell = row.insertCell(0);
	var lnk = document.createElement("a");
	cell.appendChild(lnk);
	lnk.id="MostTraded";
	lnk.innerHTML="Most Traded";
	lnk.href="#";
	lnk.className="searchlink";
	addEvent(lnk, "click", showMostTraded, false);

	if(useCurrent){
		row = grptbl.insertRow(grptbl.rows.length);
		cell = row.insertCell(0);
		lnk = document.createElement("a");
		cell.appendChild(lnk);
		lnk.id="Upcoming";
		lnk.innerHTML="Upcoming";
		lnk.href="#";
		lnk.className="searchlink";	
		addEvent(lnk, "click", showUpcoming, false);
	}


	var evAry = currEvAry;
	if(!useCurrent)
		evAry= expEvAry;

	for(var i = 0; i< evAry.length; i++){
		var evCls = evAry[i];
		row = grptbl.insertRow(grptbl.rows.length);
		
		cell = row.insertCell(0);
		var lnk = document.createElement("a");
		cell.appendChild(lnk);
		

		lnk.className="searchlink";
		lnk.innerHTML=evCls.clsName;
		lnk.id=evCls.clsName;
		lnk.href="#";
		addEvent(lnk, "click", toggleClass, false);
		addGroupList(cell, evCls, useCurrent);

					
	}

		
}

function addGroupList(cell, evCls, useCurrent){
	var br = document.createElement("br");
//	cell.appendChild(br);


	var tbl = document.createElement("table");
	tbl.cellSpacing=0;
//	tbl.cellPadding=3;
	tbl.border=0;
	tbl.width="100%";
	cell.appendChild(tbl);
	tbl.style.display="none";
	tbl.id=evCls.clsName+"tbl";
	
	var grpAry = evCls.grpAry;
	
	for(var i = 0; i<grpAry.length; i++){
		var evGrp = grpAry[i];
		row = tbl.insertRow(tbl.rows.length);
		
		cell = row.insertCell(0);

		var lnk = document.createElement("a");
		cell.appendChild(lnk);
		lnk.href="#";

		lnk.innerHTML=evGrp.grpName;
	//	lnk.className="searchlink";
		
		cell.style.paddingLeft="10px";
		if(useCurrent)
			lnk.id=evGrp.grpID;
		else
			lnk.id= evGrp.grpID;

		addEvent(lnk, "click", showGroupEvent, false);

					
	}


}

function toggleClass(e){
	elem = getElem(e);
	if(elem){
		var cls = elem.id;
		if(cls){
			var grpTbl = getElementById(cls+"tbl");
			if(grpTbl){
				if(grpTbl.style.display=="none")
					grpTbl.style.display="block";
				else
					grpTbl.style.display="none";
			}
		}
	
	}

	return false;
}


function showClass(cls, grp){
	var grpTbl = getElementById(cls+"tbl");
	if(grpTbl){
		grpTbl.style.display="block";
		var elemLst = grpTbl.getElementsByTagName("A");
		var elem = elemLst[0];
		
		if(grp)
			showGroupById(grp);
		else
			showGroup(elem);
	}
	return false;
}

function getElem(e){
	var elem =null;
	if(e.srcElement){
		if(e.srcElement.tagName!='A')
				return true;
		elem=e.srcElement;
	}else if (e.currentTarget){
		elem=e.currentTarget;
	}

	return elem;

}

function highlightGrp(selectedElem){
	var elem = getElementById("Upcoming");
	if(elem)
		elem.style.color="";

	elem = 	getElementById("MostTraded");
	if(elem)
		elem.style.color="";

	var evAry = currentEvents?currEvAry:expEvAry;
	for(var i = 0; i< evAry.length; i++){
		var evCls = evAry[i];
		var grpAry = evCls.grpAry;

		for(var j = 0; j<grpAry.length; j++){
			var evGrp = grpAry[j];
			var lnk = getElementById(evGrp.grpID);
			if(lnk)
				lnk.style.color="";
		}
	}

	if(selectedElem)
		selectedElem.style.color="red";
}

function showGroupEvent(e){
	elem = getElem(e);
	if(elem){
		showGroup(elem);
	}
	return false;
}

function showGroup(elem){
	if(elem){
		var grpID = elem.id;
		showGroupById(grpID);
	//	highlightGrp(elem);
	}

	return false;
} 



function showGroupById(grpID){
	var z = new Date().getTime();
	if(grpID){
		if(currentEvents) {
                        reloadMarkets("grpID="+grpID);			
		} else {
                        reloadMarkets("expired=true&grpID="+grpID);			
		}

		var elem=getElementById(grpID);
		if(elem)
			highlightGrp(elem);
	}
	

	return false;
} 

function showMostTraded(){
	var z = new Date().getTime();
		if(currentEvents) {
                        reloadMarkets("op=mostActive");			
		} else {
                        reloadMarkets("expired=true&op=mostActive");
                }
                                         
	highlightGrp(getElementById("MostTraded"));
	return false;
}

function showUpcoming(){
	var z = new Date().getTime();
	
        reloadMarkets("op=upcoming");        

	highlightGrp(getElementById("Upcoming"));
	return false;
}

function trim(a){
  return a.replace(/^\s+/,'').replace(/\s+$/,'')
}


function doSearch(){
	var term= getElementById("searchText").value;	        

	if(term==null || trim(term).length<3) {
            alert("Search string must be at least that 3 characters");  
            return;              
        }  
             
        $('searchResultsDiv').innerHTML = "<br><br><b>Searching for \"" + term + "\"</b><br><br>";

        //show a "now loading" image
        $('searchResultsDiv').innerHTML += "<img src='/jsp/intrade/common/images/loading.gif'>";
        reloadMarkets("op=search&searchstr="+term);			        

        return false;
}

function loadInitialSearchPage(url){    
    new Ajax.Request(url,
            {
                method: 'get',
                onSuccess: loadResponseData
            });
}

function reloadMarkets(params){

        var z = new Date().getTime();

        url = "/jsp/intrade/contractSearch/searchPageBuilder.jsp?z="+z+"&"+params;

        new Ajax.Request(url,
            {
                method: 'get',
                onSuccess: loadResponseData
            });
}

function loadResponseData(response){
    $('searchResultsDiv').innerHTML = response.responseText;
    
    //if there is only one event group returned we want to expand it by default
    rowsToTest = document.getElementsByTagName("tr");
    
    numEventsLoaded = 0;
    
    for(i=0; i<rowsToTest.length; i++){  
        
        if($(rowsToTest [i]).id.length>14 && ($(rowsToTest [i]).id.substring(0, 14) == 'eventHeaderRow')) {            
            numEventsLoaded++;
            rowToExpand = rowsToTest [i];
        }
    }
    
    if(numEventsLoaded==1){
        //expand it
        rowToExpandID = rowToExpand.id.substring(14);        
        toggleContracts(rowToExpandID, 'toggleLink' + rowToExpandID);
    }
    
    showPFLinks();
}

function toggleContracts(eventID, toggleElemID){
    elemToToggle = $("event" + eventID + "contractlist");
    toggleElem = $(toggleElemID);            

    if(Element.visible(elemToToggle)){
        //hide the contracts for this event
        Element.hide(elemToToggle);
        document[toggleElemID].src = "/jsp/intrade/common/images/plus.gif";          
        
    } else {
        //show the contracts for this event
        Element.show(elemToToggle);
        document[toggleElemID].src = "/jsp/intrade/common/images/minus.gif";        
    }

    return false;
}

function pf(pfID){
    addToPortfolio(pfID);
}


function showNotifications(){
    showWin("/messaging/handleAddMDSubscription.jsp", "mdsub", 750, 500, false, false);
	return false;

}