function StringBuffer() { 
  this.buffer = []; 
} 

StringBuffer.prototype.append = function append(string) { 
  this.buffer.push(string); 
  return this; 
}; 

StringBuffer.prototype.toString = function toString() { 
  return this.buffer.join(""); 
}; 


var oPopupTimer = "";
var currentPopup = ""; 

var popupTimeout = 500; 

oPopup = $("wx_OddsPopup");
oPopup.absolutize();

function HidePopup() {
	if(oPopupTimer) clearTimeout(oPopupTimer); 
	oPopupTimer = setTimeout("oPopup.hide(); ", popupTimeout); 
	
}

function ShowPopup() {
	if(oPopupTimer) {
		clearTimeout(oPopupTimer); 
	}		
}

Event.observe(oPopup, "mouseover", function (event) {				
	ShowPopup(); 
});
Event.observe(oPopup, "mouseout", function (event) {
	HidePopup(); 
	 
}); 

function ImposePopup() {	
	$$(".E1X2 img").each (function (oItem){
		Event.observe(oItem, "mouseout", function (event) {
			HidePopup(); 
		}); 
		
		
		
		Event.observe(oItem, "mouseover", function (event) {
			oElement = event.element(); 
			oOddsString = new String(oElement.getAttribute("__odds")); 
			if(!GenerateOddsPreview(oOddsString)) return false; 
			if(currentPopup != oElement) {
				UpdatePanel($("Category1x2"));
				currentPopup = oElement; 				 
			} 
			
			
			
			oPopupElement = $("wx_OddsPopup"); 
			
			oPopupElement.hide(); 
			
			
			
			
			
			ShowPopup();  
			
			elementPosition = oElement.cumulativeOffset();
			popupLeft = elementPosition.left + oElement.getWidth() - 22;		   
			oPopupElement.style.left = popupLeft + "px";
			
			
			
			//console.log(oPopupElement.getHeight());
			//console.log(oElement.viewportOffset().top + oElement.getHeight() + oPopupElement.getHeight());
			//console.log(document.viewport.getHeight());  
			
			if(oElement.viewportOffset().top + oElement.getHeight() + oPopupElement.getHeight() > document.viewport.getHeight()) {
				popupTop = elementPosition.top - oPopupElement.getHeight() - 2; 
			} else {
				popupTop = elementPosition.top + oElement.getHeight() + 2;
			}
			
			
			 
			oPopupElement.style.top = popupTop + "px"; 
			
			
			oPopupElement.show();
			
			ImplementBookMakerPopups(); 
		}); 
	});  
	
	$$(".Event1X2 img").each (function (oItem){
		Event.observe(oItem, "mouseout", function (event) {
			HidePopup(); 
		}); 
		
		
		
		Event.observe(oItem, "mouseover", function (event) {
			oElement = event.element(); 
			oOddsString = new String(oElement.getAttribute("__odds")); 
			if(!GenerateOddsPreview(oOddsString)) return false; 
			if(currentPopup != oElement) {
				UpdatePanel($("Category1x2"));
				currentPopup = oElement; 				 
			} 
			
			oPopupElement = $("wx_OddsPopup"); 
			
			oPopupElement.hide(); 
			
			ShowPopup();  
			
			elementPosition = oElement.cumulativeOffset();
			popupLeft = elementPosition.left - oPopupElement.getWidth();		   
			oPopupElement.style.left = popupLeft + "px";
			
			
			
			//console.log(oPopupElement.getHeight());
			//console.log(oElement.viewportOffset().top + oElement.getHeight() + oPopupElement.getHeight());
			//console.log(document.viewport.getHeight());  
			
			if(oElement.viewportOffset().top + oElement.getHeight() + oPopupElement.getHeight() > document.viewport.getHeight()) {
				popupTop = elementPosition.top - oPopupElement.getHeight() - 2; 
			} else {
				popupTop = elementPosition.top + oElement.getHeight() + 2;
			}
			
			
			 
			oPopupElement.style.top = popupTop + "px"; 
			
			
			oPopupElement.show();
			ImplementBookMakerPopups();
		}); 
	}); 
	
	
}

	
function UpdatePanel (oHeadElement) {		 
	Element.extend(oHeadElement); 	
	if(oHeadElement.hasClassName("Active")) return;
	$$(".Item.Active").each(function (oItem) {
		oItem.removeClassName("Active"); 
	}); 
	oHeadElement.addClassName("Active");
	
	$$(".wsOddsContainer .Panel").each(function (oPanel) {
		oPanel.hide(); 
	}); 
	
	oPanelElement = $("Panel" + oHeadElement.id); 
	oPanelElement.show(); 
}


 

function GenerateOddsPreview (oOddsValues) {
	
	oOdds = oOddsValues.evalJSON();
	
	if(!oOdds) return false;  
	
	$("Foot-Link-Odds").href = oOdds.Link; 
	Generate1X2OddsPreview(oOdds); 
	GenerateOUOddsPreview(oOdds); 
	
	return true; 
	
}

function GenerateOUOddsPreview(oOdds) {
	contents = new StringBuffer; 
	contents.append("<table cellspacing='0' cellpadding='0' border='0' width='100%'>"); 
		contents.append('<tr class="greybackground">'); 
			contents.append('<td width="40%" >&nbsp;</td>');
			contents.append('<td width="30%" class="cell heading">Over 2&frac12;</td>'); 
			contents.append('<td width="30%" class="cell heading">Under 2&frac12;</td>'); 
		contents.append('</tr>');
		OverTotals = 0.00; 
		UnderTotals = 0.00; 
		providersWithOdds = 0; 
		oOdds.Odds.each (function (oOdd, index) {
			oProvider = DetermineProvider (oOdd.pr); 
			backgroundColor = (index % 2) ? "greybackground" : "whitebackground"; 
			contents.append('<tr class="' + backgroundColor + '">');
			contents.append('<td class="provider" style="height: 16px"><img id="'+ (oProvider.name.toLowerCase().replace(" ", "")) + '" class="Bookmaker-Image" src="/livegoals/img/odd.popup/info-icon.gif" style="margin-right: 8px; margin-top: 1px; " align="absmiddle" /><a target="_blank" href="' + oProvider.url + '">' + oProvider.name + '</a></td>');
			
			if(oOdd.O && oOdd.U) {
				OverTotals += parseFloat(oOdd.O);
				UnderTotals += parseFloat(oOdd.U); 
				providersWithOdds++;   
			}
			
			highlightUnder = (parseFloat(oOdds.Highest.U) == parseFloat(oOdd.U)) ? "highlight" : "";
			highlightOver = (parseFloat(oOdds.Highest.O) == parseFloat(oOdd.O)) ? "highlight" : "";
			
			oddsOver = (oOdd.O) ? parseFloat(oOdd.O).toFixed(2).toString().replace(".", ",") : "-";
			oddsUnder = (oOdd.U) ? parseFloat(oOdd.U).toFixed(2).toString().replace(".", ",") : "-"; 
			
			overStatusDisplay = ""; 
			underStatusDisplay = ""; 
			
			 
			overStatusDisplay = (parseFloat(oOdd.OC) > 0.00) ? "up" : "";
			overStatusDisplay = (parseFloat(oOdd.OC) < 0.00) ? "down" : overStatusDisplay;
			
			underStatusDisplay = (parseFloat(oOdd.OC) > 0.00) ? "up" : "";
			underStatusDisplay = (parseFloat(oOdd.OC) < 0.00) ? "down" : underStatusDisplay;   
			
			titleOver = ""; 
			titleUnder = ""; 
			
			if(overStatusDisplay != "") {
				titleOver = "Previous Odds: " + parseFloat(parseFloat(oOdd.O) - parseFloat(oOdd.OC)).toFixed(2).toString().replace(".", ","); 	
			}
			
			if(underStatusDisplay != "") {
				titleUnder = "Previous Odds: " + parseFloat(parseFloat(oOdd.U) - parseFloat(oOdd.UC)).toFixed(2).toString().replace(".", ","); 	
			}
			
			  
			
			contents.append('<td style="height: 16px" title="' + titleOver + '" class="cell ' + overStatusDisplay + ' ' + highlightOver + '" ><a target="_blank" href="' + oProvider.url + '">' + oddsOver + '</a></td>');  
			contents.append('<td style="height: 16px" title="' + titleUnder + '" class="cell ' + underStatusDisplay + ' ' + highlightUnder + '" ><a target="_blank" href="' + oProvider.url + '">' + oddsUnder + '</a></td>');
			contents.append('</tr>'); 
		});
		
	overAverage = OverTotals / providersWithOdds; 
	underAverage = UnderTotals / providersWithOdds;
	
	showOverAverage = (isNaN(overAverage)) ? "-" : overAverage.toFixed(2).toString().replace(".", ",");
	showUnderAverage = (isNaN(underAverage)) ? "-" : underAverage.toFixed(2).toString().replace(".", ","); 
	
	totalPercentage = 0; 
	
	if(!isNaN(overAverage)) totalPercentage += 1/overAverage;
	if(!isNaN(underAverage)) totalPercentage += 1/underAverage; 
	
	probabilityOver = "-"; 
	probabilityUnder = "-"; 
	
	if(totalPercentage > 0) {
		if(!isNaN(winAverage)) {
			probabilityOver = (1 / overAverage)  / totalPercentage * 100;		
			probabilityOver = probabilityOver.toFixed(2).toString().replace(".", ",").concat("%"); 	 
		}
		
		if(!isNaN(lossAverage)) {
			probabilityUnder = (1 / underAverage)  / totalPercentage * 100;		
			probabilityUnder = probabilityUnder.toFixed(2).toString().replace(".", ",").concat("%"); 	 
		}

	}
	
			
	contents.append("</table>");  
	contents.append('<table width="100%" cellpadding="0" cellspacing="0" class="seperator Averages">'); 		 
		contents.append('<tr class="whitebackground">');
			contents.append('<td width="40%" class="label" style="height: 16px" >Average</td>');
			contents.append('<td width="30%" class="cell" style="height: 16px" >' + showOverAverage  + '</td>');
			contents.append('<td width="30%" class="cell" style="height: 16px" >' + showUnderAverage + '</td>');
		contents.append('</tr>');
			contents.append('<tr class="greybackground">');
			contents.append('<td class="label" style="height: 16px" >Probability</td>');
			contents.append('<td class="cell" style="height: 16px" >' + probabilityOver + '</td>');
			contents.append('<td class="cell" style="height: 16px" >' + probabilityUnder + '</td>');
		contents.append('</tr>');
	contents.append('</table>');
	
	$("PanelCategoryou").update(contents.toString()); 

}

function Generate1X2OddsPreview(oOdds) {
	contents = new StringBuffer; 
	contents.append("<table cellspacing='0' cellpadding='0' border='0' width='100%'>"); 
		contents.append('<tr class="greybackground">'); 
			contents.append('<td width="40%" >&nbsp;</td>');
			contents.append('<td width="20%" class="cell heading">1</td>'); 
			contents.append('<td width="20%" class="cell heading">X</td>'); 
			contents.append('<td width="20%" class="cell heading">2</td>');  
		contents.append('</tr>');
		winTotals = 0.00; 
		drawTotals = 0.00; 
		lossTotals = 0.00; 
		providersWithOdds = 0; 
		oOdds.Odds.each (function (oOdd, index) {
			oProvider = DetermineProvider (oOdd.pr); 
			backgroundColor = (index % 2) ? "greybackground" : "whitebackground"; 
			contents.append( '<tr class="' + backgroundColor + '">');
			contents.append('<td class="provider" style="height: 16px"><img id="'+ (oProvider.name.toLowerCase().replace(" ", "")) + '" class="Bookmaker-Image" src="/livegoals/img/odd.popup/info-icon.gif" style="margin-right: 8px; margin-top: 1px; " align="absmiddle" /><a target="_blank" href="' + oProvider.url + '">' + oProvider.name + '</a></td>');
			
			highlightWin= (parseFloat(oOdds.Highest.W) == parseFloat(oOdd.W)) ? "highlight" : "";
			highlightDraw = (parseFloat(oOdds.Highest.D) == parseFloat(oOdd.D)) ? "highlight" : "";
			highlightLoss = (parseFloat(oOdds.Highest.L) == parseFloat(oOdd.L)) ? "highlight" : "";
			
			if(oOdd.W && oOdd.D && oOdd.L) {
				winTotals += parseFloat(oOdd.W);
				drawTotals += parseFloat(oOdd.D); 
				lossTotals += parseFloat(oOdd.L);
				providersWithOdds++;   
			}
			
			oddsWin = (oOdd.W) ? parseFloat(oOdd.W).toFixed(2).toString().replace(".", ",") : "-";
			oddsDraw = (oOdd.D) ? parseFloat(oOdd.D).toFixed(2).toString().replace(".", ",") : "-"; 
			oddsLoss = (oOdd.L) ? parseFloat(oOdd.L).toFixed(2).toString().replace(".", ",") : "-";
			
			winStatusDisplay = ""; 
			lossStatusDisplay = ""; 
			drawStatusDisplay = "";
			
			
			 
			winStatusDisplay = (parseFloat(oOdd.WC) > 0.00) ? "up" : "";
			winStatusDisplay = (parseFloat(oOdd.WC) < 0.00) ? "down" : winStatusDisplay;
			
			drawStatusDisplay = (parseFloat(oOdd.DC) > 0.00) ? "up" : "";
			drawStatusDisplay = (parseFloat(oOdd.DC) < 0.00) ? "down" : drawStatusDisplay;   
			  
			lossStatusDisplay = (parseFloat(oOdd.LC) > 0.00) ? "up" : "";
			lossStatusDisplay = (parseFloat(oOdd.LC) < 0.00) ? "down" : lossStatusDisplay;   
			
			titleWin = ""; 
			titleDraw = ""; 
			titleLoss = ""; 
			
			if(winStatusDisplay != "") {
				titleWin = "Previous Odds: " + parseFloat(parseFloat(oOdd.W) - parseFloat(oOdd.WC)).toFixed(2).toString().replace(".", ","); 	
			}
			
			if(drawStatusDisplay != "") {
				titleDraw = "Previous Odds: " + parseFloat(parseFloat(oOdd.D) - parseFloat(oOdd.DC)).toFixed(2).toString().replace(".", ","); 	
			}
			
			if(lossStatusDisplay != "") {
				titleLoss = "Previous Odds: " + parseFloat(parseFloat(oOdd.L) - parseFloat(oOdd.LC)).toFixed(2).toString().replace(".", ","); 	
			}
			
			
			
			contents.append('<td style="height: 16px" title="' + titleWin + '" class="cell ' + winStatusDisplay + ' ' + highlightWin + '" ><a target="_blank" href="' + oProvider.url + '">' + oddsWin + '</a></td>');  
			contents.append('<td style="height: 16px" title="' + titleDraw + '" class="cell ' + drawStatusDisplay + ' ' + highlightDraw + '" ><a target="_blank" href="' + oProvider.url + '">' + oddsDraw + '</a></td>');
			contents.append('<td style="height: 16px" title="' + titleLoss + '" class="cell ' + lossStatusDisplay + ' ' + highlightLoss + '" ><a target="_blank" href="' + oProvider.url + '">' + oddsLoss + '</a></td>');
			contents.append( '</tr>'); 
		});
		
	winAverage = winTotals / providersWithOdds; 
	lossAverage = lossTotals / providersWithOdds;
	drawAverage = drawTotals / providersWithOdds;
	
	showWinAverage = (isNaN(winAverage)) ? "-" : winAverage.toFixed(2).toString().replace(".", ","); 
	showLossAverage = (isNaN(lossAverage)) ? "-" : lossAverage.toFixed(2).toString().replace(".", ",");
	showDrawAverage = (isNaN(drawAverage)) ? "-" : drawAverage.toFixed(2).toString().replace(".", ",");
	 
	totalPercentage = 0; 
	
	if(!isNaN(winAverage)) totalPercentage += 1/winAverage;
	if(!isNaN(lossAverage)) totalPercentage += 1/lossAverage; 
	if(!isNaN(drawAverage)) totalPercentage += 1/drawAverage;  
	
	probabilityWin = "-"; 
	probabilityDraw = "-"; 
	probabilityLoss = "-"; 
	
	if(totalPercentage > 0) {
		if(!isNaN(winAverage)) {
			probabilityWin = (1 / winAverage)  / totalPercentage * 100;		
			probabilityWin = probabilityWin.toFixed(2).toString().replace(".", ",").concat("%"); 	 
		}
		
		if(!isNaN(lossAverage)) {
			probabilityLoss = (1 / lossAverage)  / totalPercentage * 100;		
			probabilityLoss = probabilityLoss.toFixed(2).toString().replace(".", ",").concat("%"); 	 
		}

		if(!isNaN(winAverage)) {
			probabilityDraw = (1 / drawAverage)  / totalPercentage * 100;		
			probabilityDraw = probabilityDraw.toFixed(2).toString().replace(".", ",").concat("%"); 	 
		}
		
	}
	
	contents.append("</table>");  
	contents.append('<table width="100%" cellpadding="0" cellspacing="0" class="seperator Averages">'); 		 
		contents.append('<tr class="whitebackground">');
			contents.append('<td width="40%" class="label" style="height: 16px" >Average</td>');
			contents.append('<td width="20%" class="cell" style="height: 16px" >' + showWinAverage  + '</td>');
			contents.append('<td width="20%" class="cell" style="height: 16px" >' + showDrawAverage + '</td>');
			contents.append('<td width="20%" class="cell" style="height: 16px" >' + showLossAverage + '</td>');
		contents.append('</tr>');
			contents.append('<tr class="greybackground">');
			contents.append('<td class="label" style="height: 16px" >Probability</td>');
			contents.append('<td class="cell" style="height: 16px" >' + probabilityWin + '</td>');
			contents.append('<td class="cell" style="height: 16px" >' + probabilityDraw + '</td>');
			contents.append('<td class="cell" style="height: 16px" >' + probabilityLoss + '</td>');
		contents.append('</tr>');
	contents.append('</table>');
	
	$("PanelCategory1x2").update(contents.toString()); 

}

function DetermineProvider (providerID) {
	oProvider = new Object; 
	oProvider.name = ""; 
	oProvider.url = ""; 
	
	switch(providerID) {	
		case "297":	
			oProvider.name = "Bet365"; 
			oProvider.url = "http://www.bet365.com?Affiliate=365_025196"; 
			break; 
			
		case "89":	
			oProvider.name = "Pinnacle" 
			oProvider.url = "http://www.pinnaclesports.com/default.asp?language=British&LExt=bri&refer=xpenguin"; 
			break; 
			
		case "8":	
			oProvider.name = "Expekt" 
			oProvider.url = "http://ads.expekt.com/affiliates/redirect.aspx?pid=35765&bid=2664&zid=0"; 
			break; 
			
		case "4":	
			oProvider.name = "CentreBet" 
			oProvider.url = "http://affiliates.centrebet.com/processing/clickthrgh.asp?btag=a_2320b_652"; 
			break; 
			
		case "77":	
			oProvider.name = "Stan James" 
			oProvider.url = "http://www.stanjames.com/?fimsced=0&fimsoec=0&fimsid=14153"; 
			break; 
			
		case "3":	
			oProvider.name = "Bwin" 
			oProvider.url = "http://adserver.itsfogo.com/click.aspx?zoneid=35572"; 
			break; 
			
		case "281":	
			oProvider.name = "Canbet" 
			oProvider.url = "http://record.commissionking.com/_c52bcce5b68739947c3da1f65ac5a2a5/1/"; 
			break;
			
		case "288": 
			oProvider.name = "Betfair" 
			oProvider.url = "http://www.dpbolvw.net/click-2733348-4083193"; 
			break; 

			
		case "184": 
			oProvider.name = "Betsafe" 
			oProvider.url = "http://ads.betsafe.com/redirect.aspx?pid=3034&bid=1076"; 
				
			break; 
			
		case "6":	
			oProvider.name = "Unibet" 
			oProvider.url = "http://adserving.unibet.com/redirect.aspx?pid=8444&bid=3569"; 
			break; 
			
		case "284":	
			oProvider.name = "Betsson" 
			oProvider.url = "http://www.betsson.com/?from=livegoals "; 
			break; 
			
		case "296":	
			oProvider.name = "Ladbrokes" 
			oProvider.url = "http://www.ladbrokes.com/ast?action=go_asset&new=1&aff_id=19628&asset_id=1584"; 
			break; 
			
		case "401":	
			oProvider.name = "888Sport" 
			oProvider.url = "http://www.888sport.com/bet?lang=en&sr=341855&flag=0000"; 
			break; 
			
		case "262": 
			oProvider.name = "Partybets" 
			oProvider.url = "http://www.partybets.com/cgi-bin/intro.cgi?sp=19&wm=3120163"; 		
			break; 		
			
	}
	
	return oProvider; 
		
	
}

function OpenProvider (url) {
	window.open(url, 'OpenProvider', ''); 
}

	
	
ImposePopup();

var oBookmakerTimer = "";
var oBookmakerPopup = $("wx_OddsBookmakerPopup");  



bookmakerTimeout = 250; 

function KeepBookmakerPopupAlive () {
	ShowPopup(); 
	if(oBookmakerTimer) clearTimeout(oBookmakerTimer);
	
}

function HideBookmakerPopup () {
	HidePopup();  		 
	if(oBookmakerTimer) clearTimeout(oBookmakerTimer);
	oBookmakerTimer = setTimeout("oBookmakerPopup.hide();", 250); 

}

oCurrentBookmakerElement = ""; 

function ImplementBookMakerPopups () {
	$$(".Bookmaker-Image").each (function (oItem){			
		oItem.style.cursor = "pointer"; 
		
		Event.observe(oItem, "mouseout", function (event) {
			HideBookmakerPopup(); 
		}); 
		
		Event.observe(oItem, "mouseover", function (event) {
			
			oElement = event.element();
			oPopupContentDiv = $("popup_" + oElement.id.replace("bm_", ""));
			if(!oPopupContentDiv) return; 
			KeepBookmakerPopupAlive(); 	
			oCloneContentDiv =  oPopupContentDiv.cloneNode(true);
			oCloneContentDiv.id = "cloned_" + oCloneContentDiv.id;  

			oBookmakerPopup.innerHTML = "";
			oBookmakerPopup.appendChild(oCloneContentDiv);

			elementPosition = oElement.cumulativeOffset();

			popupLeft = elementPosition.left - parseInt(oPopupContentDiv.style.width);
			popupTop = 0; 
			
			
			
			if(oElement.viewportOffset().top + parseInt(oPopupContentDiv.style.height) < document.viewport.getHeight() ) {
				popupTop = elementPosition.top;				
			} else {
				popupTop = elementPosition.top - parseInt(oPopupContentDiv.style.height); 
			}
			
			

			oBookmakerPopup.style.top = popupTop + "px"; 
			oBookmakerPopup.style.left = popupLeft + "px";

			oBookmakerPopup.show(); 
			  
		}); 
	})
}
  

