class2="tipp3top_2 normalTextBlack";

var topBetLines=new Array();
var topBetTicket=null;
var topBetList=null;

var type;
var keepOpen=false;

var GAMENUMBER="N";
var GAMEDATE="D";
var EVENT="E";
var BET_EVENT="BE";
var BETTYPE="T";
var LEAGUE="L";
var BUTTON_UP=IMAGEPATH+'bright_up.gif';
var BUTTON_DOWN=IMAGEPATH+'bright_down.gif';
var sortButtonArray = new Array('0','0','0','0','0','0');
var currentSort=0;

var round;
var returnInInputField=false;
var MAXBETSONTICKET=maxBetcount; //set by JSP
var exceededBetCount=false;
var presetFilter=false;
var cookieName="publicTipp3Top";

//----------------------------------------
// init the page on load
// table is generated and shown
// cookie is set or used for selected bets
//----------------------------------------
function initRoundTable(type) {
	topBetTicket=new BetTicketTop('topbetticket');	
	showRoundTable(type,-1);
}

function trapKey(event) {
		if (!event) var event = window.event;
		var targ='test';
		if(event.target) targ=event.target;
		else if(event.srcElement) targ=event.srcElement;
		if(targ.nodeType==3) // defeat Safari bug
			targ=targ.parentNode;
		//alert(targ.id);
		var pressedChar='';
		if (event.keyCode) {
			pressedChar = event.keyCode;
		} else {
			pressedChar = event.which;
		}
	
		if ((targ.id=='BETMONEYTICKET1') && (pressedChar == 13)) {
			//alert('returnInInputField=true');
	   		returnInInputField=true;
	   		if (event.stopPropagation) event.stopPropagation();
			event.returnValue=false; // (needed for IE)
			return false;
  		}
}	

function unsetFlag(event) {
		returnInInputField=false;
		return true;
	}

function presetTipp(gameNumber,tippNumber,type) {
	presetFilter=true;
	currentOpenBet=gameNumber;
	showRoundTable(type,gameNumber);
	if((document.getElementById('tipp_'+gameNumber+'_'+tippNumber)!=null)) {
		eval('document.GAMES.tipp_'+gameNumber+'_'+tippNumber+'.checked=true');
		addToTopBetTicket(gameNumber,tippNumber);
		setTicketCookie();
		keepOpen=true;
		showRoundTable(type,gameNumber);
	} else {
		if(tippNumber=='-1') {
			keepOpen=true;
			showRoundTable(type,gameNumber);			
		}
	}
}

function alertChain(marker,aTopBetList) {
	var msg=marker+': ';
	if(aTopBetList.betId!=null) {
		msg+=aTopBetList.betId+'->';
		while(aTopBetList.nextTopBet!=null) {
			aTopBetList=aTopBetList.nextTopBet;
			msg+=aTopBetList.betId+'->';
		}
	}
	msg+='null';
	alert(msg);
}

function alertRound(aRound,number) {
	 alert('creating topBetList['+number+']!\n'+
		'opened: '+aRound[0]+'\n'+
		'num: '+aRound[1]+'\n'+
		'anEvent: '+aRound[2]+'\n'+
		'gDate: '+aRound[3]+'\n'+
		'gTime: '+aRound[4]+'\n'+
		'liga: '+aRound[5]+'\n'+
		'betEvent: '+aRound[6]+'\n'+
		'bettype: '+aRound[7]+'\n'+
		'result: '+aRound[8]+'\n'+
		'title: '+aRound[9]+'\n'+
		'text: '+aRound[10]+'\n'+
		'information: '+aRound[12]+'\n'+
		'betId: '+aRound[13]+'\n'+
		'score24Detail: '+aRound[14]+'\n'+
		'scoreInfo: '+aRound[15]+'\n'+
		'shortDescription: '+aRound[16]+'\n'+
		'status: '+aRound[17])+'\n'+
		'classicBetId: '+aRound[18];
}

function setFilter(type) {
        if(document.filterform!=null && document.filterform.select != null){
		for(var i=0;i<document.filterform.select.length;i++) {
			var indexedValue=document.filterform.select[i].value;
			if(indexedValue==type) {
				document.filterform.select[i].checked=true;
			} else {
				document.filterform.select[i].checked=false;
			}
		}
	}	
}

function showRoundTable(type,openId) {
	setFilter(type);
	this.type=type;
	this.openId=openId;
	var classNumber=1;
	var thisRound = round[0];
	if(topBetList==null) {
		//                       opend          num         anEvent       gDate       gtime          liga                          betEvent      betType      result       title        text         quotes       information    betId       score24       scoreInfo     shortDesc     status           leagueHasLink			classicBetId
		topBetList = new BetTop(thisRound[0],thisRound[1],thisRound[2],thisRound[3],thisRound[4],getLeagueNameById(thisRound[5]),thisRound[6],thisRound[7],thisRound[8],thisRound[9],thisRound[10],thisRound[11],thisRound[12],thisRound[13],thisRound[14],thisRound[15],thisRound[16],thisRound[17], getHasLinkLeagueById(thisRound[5]), round[18] );
		for(i=1;i<round.length;i++) {	
			thisRound = round[i];
			topBetList.addBet(new BetTop(thisRound[0],thisRound[1],thisRound[2],thisRound[3],thisRound[4],getLeagueNameById(thisRound[5]),thisRound[6],thisRound[7],thisRound[8],thisRound[9],thisRound[10],thisRound[11],thisRound[12],thisRound[13],thisRound[14],thisRound[15],thisRound[16],thisRound[17], getHasLinkLeagueById(thisRound[5]), thisRound[18] ));		
		}	
		if(getCookie(cookieName)==null) {
			setTicketCookie();
		} else {			
			setCookieDataToForm(topBetList,getCookie(cookieName));
		}	
		if(BETSTATUS=='1') {
			deleteCookie(cookieName);
			FORCE_REDRAW=true;
			drawTicket(topBetTicket.redrawTicket());
		}
	}
	if (presetFilter == true) {
		this.type=type;	
	} else {
		for(a=0;a<=2;a++) {
			if (document.filterform != null  && document.filterform.select != null && document.filterform.select[a] && document.filterform.select[a].checked == true) {
				this.type=document.filterform.select[a].value;
            		}
	        }
	}
	presetFilter=false;
	drawRoundTable(getTableStart()+topBetList.displayAllTopBets(this.type,myLeagues,openId)+"</table>");	

	if (topBetTicket.bets != null && topBetTicket.alreadyDrawn == false) {
		drawTicket(topBetTicket.redrawTicket());
		topBetTicket.checkTicket();
	}
	if (BETSTATUS == '-1') {
		resetSystemError();
		resetBetStatus();
	}
}

//-----------------------------------------------
// sets an element by its id and take care about
// the used browser
//-----------------------------------------------
function setElementById(id,value) {
	if (document.all) {
		document.getElementById(id).value = value;
	} else if (document.getElementById) {
     		document.getElementById(id).value=value;
   	} else if (document.layers) {
   		document.getElementById(id).value=table;		
   	}
}

//-----------------------------------------
// add a bet to our ticket with gameNumber
// but only when not already added
// after we set the selected/deselected
// sub bet of the bet
// Params:
// gameNumber: number of the betline
// tipp: subbetnumber of currrent betline
//-----------------------------------------
function addToTopBetTicket(gameNumber,tipp) {
   exceededBetCount=false;
   if((BETSTATUS!="")&&(SYSTEMERROR=="")) {
			eval('document.GAMES.tipp_'+gameNumber+'_'+tipp+'.checked=false');
   } else {
	var actBet=topBetList.getTopBetByNumber(gameNumber);			// get the bet where something changed
	if(eval('document.GAMES.tipp_'+gameNumber+'_'+tipp+'.checked')==false) {// select/deselect tipp
		topBetTicket.deleteBet(gameNumber,tipp);
		if(topBetTicket.bets!=null) {
			topBetTicket.renewBetList();
			topBetTicket.renewSummary();
			topBetTicket.renewTitle();
		} else {
			drawTicket('');
		}
		topBetTicket.renewError();
		unmarkLine(gameNumber);		
	} else {
		if(topBetTicket.betCount<MAXBETSONTICKET) {
			actBet.setTippBox(tipp);		
			topBetList.updateTopBet(actBet); 
			topBetTicket.addBet(actBet); 				// add the bet to the ticket
			drawTicket(topBetTicket.redrawTicket()); 	// and draw the ticket
			markLine(gameNumber);		
		} else {
			eval('document.GAMES.tipp_'+gameNumber+'_'+tipp+'.checked=false');  // Silly IE Bug
			exceededBetCount=true;
			topBetTicket.renewTitle();
	  	}
	}
   }
}

function getLeagueNameById(leagueId) {
	for(a=0;a<leagueID.length;a++) {
		if(leagueID[a]==leagueId)
			return leagueName[a];
	}
	return '';
}

function getHasLinkLeagueById(leagueId) {
	for(a=0;a<leagueID.length;a++) {
		if(leagueID[a]==leagueId)
			return leagueHasLink[a];
	}
	return 0;
}

function deleteBetFromTicket(gameNumber,tipp) {
	topBetTicket.deleteBet(gameNumber,tipp);
	if(topBetTicket.bets==null) {
		drawTicket('');
		topBetTicket.alreadyDrawn=false;
		resetErrors();
	} else {
		topBetTicket.renewBetList();
		topBetTicket.renewSummary();
		topBetTicket.renewTitle();
	}
	setTicketCookie();
}

function sendTicket() {
	var elem=document.getElementById('CONFIRMBUTTON');
	elem.style.display='none';
	elem=document.getElementById('CHANGEBUTTON');
	elem.style.display='none';	
	var ticketParams=topBetTicket.getTicketParams();
	window.location.href=pageName+ticketParams;
	return false;
	
}

function resetErrors() {
	for(a=0;a<errorFlags.length;a++)
		errorFlags[a]=topBetTicket.ERROROFF;
	return;
}

function resetSystemError() {
	SYSTEMERROR="";
	return;
}

function resetBetStatus() {
	BETSTATUS="";
	return;
}


function drawTicket(ticket) {
	if (document.all) 
		document.all.topbetticket.innerHTML = ticket;
   	else if (document.getElementById)
     		document.getElementById("topbetticket").innerHTML=ticket;
   	else if (document.layers) 
   		document.getElementById("topbetticket").innerHTML=ticket;	
}

function drawRoundTable(table) {
	if (document.all) 
		document.all.topbetlist.innerHTML = table;
   	else if (document.getElementById)
     		document.getElementById("topbetlist").innerHTML=table;
   	else if (document.layers) 
   		document.getElementById("topbetlist").innerHTML=table;	
}

function setTicketCookie() {
	var today = new Date();
	var expires = new Date(today.getTime() + (56 * 86400000));
	setCookie(cookieName,setCookieValueString(topBetList),expires);
}

function checkOK(opened) {
  if (SYSTEMERROR == "" && BETSTATUS == "1") {	
	handleDeleteAllBets();
	deleteCookie(cookieName);
	resetBetStatus();
	resetSystemError();
	topBetTicket.confirm=false;
	topBetTicket.betCount=0;
  }
}

function handleBet(gameNumber,tippNumber) {
	checkOK(gameNumber);
	addToTopBetTicket(gameNumber,tippNumber);
	setTicketCookie();
}

function handleDeleteBet(gameNumber,tippNumber,betOnTicketNumber) {
	var betList=topBetTicket.bets;
	var actBet=betList.getTopBetByNumber(gameNumber);
	var myTipps=actBet.tipp;
	var newTipp=myTipps.getTippByNumber(myTipps,tippNumber);
	newTipp.selected='0';
	newTipp.betAmount=defaultBetamount;
	actBet.tipp=topBetTicket.bets.tipp.updateTipp(myTipps,newTipp,tippNumber);
	topBetTicket.bets=topBetTicket.bets.updateTopBet(actBet);
	deleteBetFromTicket(gameNumber,tippNumber);
	topBetTicket.checkTicket(betOnTicketNumber);	
	setTicketCookie();
}

function handlePlaceBet() {
	var betCount=topBetTicket.betCount;
	var flag=true;
	for(a=1;a<=betCount;a++) {
		amount=topBetTicket.readElementById("BETMONEYTICKET"+a);
		amount=getFloat(amount);
		var result=''+(amount*amount);
		if(parseFloat(amount)>(topMaxamount/100)) {		
			topBetTicket.setError(INVALID_BETAMOUNT,ERRORON);
			flag=false;
		} else if(parseFloat(amount)<(topMinamount/100)) {
			topBetTicket.setError(INVALID_BETAMOUNT,ERRORON);
			flag=false;
		} else if(result=='NaN') {
			topBetTicket.setError(INVALID_BETAMOUNT,ERRORON);
			flag=false;
		} 		
	}
	
	topBetTicket.renewError();
	topBetTicket.renewTitle();
	if(flag==false)
		return;
	topBetTicket.confirmTicket=true;
	drawTicket(topBetTicket.getBetTicket(topBetTicket.confirmTicket));
}

//----------------------------------------
// handles the change of the betamount
// in our betticket
//----------------------------------------
function handleChangeValue(gameNumber,tippNumber,betOnTicketNumber) {
	var elem = document.getElementById("ticketform");
	var amount=eval("elem.BETMONEYTICKET"+betOnTicketNumber+".value");
	amount=getFloat(amount);	
	var betList=topBetTicket.bets;

	var actBet=betList.getTopBetByNumber(gameNumber);
	var myTipps=actBet.tipp;
	var newTipp=myTipps.getTippByNumber(myTipps,tippNumber);
	//----------------------------------
	// set the new betamount to the tipp
	//----------------------------------
	// multiply 2 times by 10 because
	// a multiply with 100 can cause wrong amounts
	//----------------------------------
	newTipp.betAmount=(amount*10);
	newTipp.betAmount=newTipp.betAmount*10;
	actBet.tipp=topBetTicket.bets.tipp.updateTipp(myTipps,newTipp,tippNumber);
	topBetTicket.bets=topBetTicket.bets.updateTopBet(actBet)
	topBetTicket.renewPossibleWin(betOnTicketNumber,gameNumber,tippNumber);
	topBetTicket.renewSummary();
	topBetTicket.checkTicket(betOnTicketNumber);
	setTicketCookie();
}

function handleDeleteAllBets() {	
	var betList=topBetTicket.bets;
	while(betList!=null) {
		var myBet=topBetList.getTopBetByNumber(betList.gameNumber);
		myBet.tipp.unselectBets(myBet.tipp,myBet.gameNumber);
		myBet.tipp.resetBetAmounts(myBet.tipp);
		topBetList.updateTopBet(myBet);
		betList=betList.nextTopBet;
	}
	topBetTicket.bets=null;
	resetErrors();
	topBetTicket.betCount=0;
	drawTicket('');
	setTicketCookie();
	var bet = topBetList;
	while (bet != null) {
		unmarkLine(bet.gameNumber);
		bet = bet.nextTopBet;
	}
}

function setSortFlag(nr) {
	if(sortButtonArray[nr]=='0')
		sortButtonArray[nr]='1';
	else
		sortButtonArray[nr]='0';
	currentSort=nr;
}

function sort(what) {
	var newArrays;
	var DIRECTION;
	if(what==GAMENUMBER) {
		DIRECTION=setButtonImage('SORTNUMBER');	
		setSortFlag(0);	
		sortIt(what,DIRECTION);								
	}	
	if(what==EVENT) {
		DIRECTION=setButtonImage('SORTEVENT');			
		setSortFlag(1);			
		sortIt(what,DIRECTION);	
	}
	if(what==GAMEDATE) {
		DIRECTION=setButtonImage('SORTDATE');						
		setSortFlag(2);			
		sortIt(what,DIRECTION);	
	}	
	if(what==LEAGUE) {
		DIRECTION=setButtonImage('SORTLEAGUE');			
		setSortFlag(3);			
		sortIt(what,DIRECTION);	
	}	
	if(what==BET_EVENT) {
		DIRECTION=setButtonImage('SORTBETEVENT');			
		setSortFlag(4);			
		sortIt(what,DIRECTION);	
	}
	if(what==BETTYPE) {
		DIRECTION=setButtonImage('SORTBETTYPE');
		setSortFlag(5);			
		sortIt(what,DIRECTION);				
	}			
}

function sortIt(what,DIRECTION) {
	SORT=what; //save the sortkey 
	var newArrays;
	var cell=getTableStart();
	if((what==GAMENUMBER)||(what==GAMEDATE)) {	
		newBetOrder=topBetList.sortByValue(what,DIRECTION,null,null,null);				
	}	

	if((what==LEAGUE)||(what==BET_EVENT)||(what==EVENT)||(what==BETTYPE)) {			
		newBetOrder=topBetList.sortAlphabetic(what,1,DIRECTION,null,null);
	}	
	keepOpen=true;	
	cell=cell+newBetOrder.displayAllTopBets(type,myLeagues,openId);
	keepOpen=false;
	cell=cell+"</table>";
	drawRoundTable(cell);	
}

//---------------------------------------
// changes the sort direction button
// if user clicks to sort
//---------------------------------------
function setButtonImage(id) {
		var dir=ASCENDING;
		var img=document.getElementById(id).src;
		if (img.lastIndexOf('_down.gif') > -1) {
			document.getElementById(id).src=BUTTON_UP;
			dir=ASCENDING;
		} else {
			document.getElementById(id).src=BUTTON_DOWN;
			dir=DESCENDING;		
		}
		return dir;	
}

function getOpenId() {
	return this.openId;	
}

function getButtonImage(nr) {
	var buttonImg=IMAGEPATH;
	if(currentSort==nr) {
		buttonImg+='yellow_';
	} else {
		buttonImg+='bright_';
	}
	if(sortButtonArray[nr]=='0') {
		buttonImg+='up.gif';
	} else {
		buttonImg+='down.gif';
	}
	return buttonImg;
}

function  getTableStart() {
	var start = '<TABLE style="border-top: solid 1px #ffffff; border-left: solid 1px #d78d10; border-right: solid 1px #d78d10; border-bottom: solid 1px #d78d10;" width="589" cellSpacing="0" cellpadding="2" border="0" id="table0">'+
	'	<tr height="25">'+
	'		<TD width="30" colspan="2" nowrap="nowrap" bgcolor="#d78d10" class="normalTextWhite">';
	start=start+'		<a href="javascript:void(0)" title="Sortieren nach Nummer" onClick="sort(GAMENUMBER)">Nr</a><img name="SORTNUMBER" id="SORTNUMBER" class="sort_arrow" src="'+getButtonImage(0)+'" title="Sortieren nach Nummer" onClick="sort(GAMENUMBER)">'+
	'		</TD>'+
	'		<TD width="50" bgcolor="#d78d10" class="normalTextWhite">Ereignis</TD>'+
	'		<TD width="100" colspan="2" nowrap="nowrap" bgcolor="#d78d10" class="normalTextWhite">';
	start=start+'		<a href="javascript:void(0)" title="Sortieren nach Annahmeschluss" onClick="sort(GAMEDATE)">Annahmeschl.</a><img name="SORTDATE" id="SORTDATE" class="sort_arrow" src="'+getButtonImage(2)+'" title="Sortieren nach Annahmeschluss" onClick="sort(GAMEDATE)"> '+
	'		</TD>'+
	'		<TD width="60" bgcolor="#d78d10" class="normalTextWhite">';
	start=start+'		<a href="javascript:void(0)" title="Sortieren nach Liga" onClick="sort(LEAGUE)">Liga</a><img name="SORTLEAGUE" id="SORTLEAGUE" class="sort_arrow" src="'+getButtonImage(3)+'" title="Sortieren nach Liga" onClick="sort(LEAGUE)">'+
	'		</TD>'+
	'		<TD width="180" bgcolor="#d78d10" class="normalTextWhite">Wettereignis</TD>'+
	'		<TD width="95" bgcolor="#d78d10" class="normalTextWhite">Wettart</TD>'+
	'		<TD width="60" bgcolor="#d78d10" class="normalTextWhite">Ergebnis</TD>'+
	'	</tr>';
	return start;
}

function markLine(betID) {
	var elemTR = document.getElementById("GID"+betID+"_TR");
	if (elemTR.className.indexOf("_0") > -1) {
		elemTR.className = "top_line_marked_0 normalTextBlack";
	} else {
		elemTR.className = "top_line_marked_1 normalTextBlack";
	}		
}

function unmarkLine(betID) {
	var unmark = true;
	var actTopBet = topBetTicket.bets;
    while (actTopBet != null && unmark) {
		if (actTopBet.gameNumber == betID)
			unmark = false;
       	actTopBet = actTopBet.nextTopBet;
    }	
	if (unmark) {
		var elemTR = document.getElementById("GID"+betID+"_TR");
		if (elemTR.className.indexOf("_0") > -1) {
			elemTR.className = "top_line_0 normalTextBlack";
		} else {
			elemTR.className = "top_line_1 normalTextBlack";
		}		
	}
}


