
var objDecToFraHash = new DecToFraHash(1.01,"1/100",1.02,"1/50",1.03,"1/33",1.04,"1/25",1.05,"1/20",1.06,"1/16",1.07,"1/14",1.08,"1/12",1.09,"1/11",1.1,"1/10",1.11,"1/9",1.12,"1/8",1.14,"1/7",1.15,"2/13",1.17,"1/6",1.18,"2/11",1.2,"1/5",1.22,"2/9",1.25,"1/4",1.27,"4/15",1.28,"2/7",1.3,"3/10",1.31,"4/13",1.33,"1/3",1.35,"10/28",1.36,"4/11",1.37,"10/27",1.38,"10/26",1.4,"2/5",1.42,"10/24",1.45,"4/9",1.46,"10/22",1.48,"10/21",1.5,"1/2",1.53,"10/19",1.54,"8/15",1.55,"10/18",1.57,"4/7",1.59,"10/17",1.6,"3/5",1.62,"8/13",1.63,"10/16",1.64,"16/25",1.65,"13/20",1.67,"4/6",1.7,"7/10",1.71,"10/14",1.73,"8/11",1.74,"20/27",1.75,"3/4",1.76,"19/25",1.77,"10/13",1.78,"25/32",1.79,"79/100",1.8,"4/5",1.81,"81/100",1.82,"41/50",1.83,"5/6",1.84,"21/25",1.85,"17/20",1.86,"43/50",1.87,"7/8",1.88,"22/25",1.89,"89/100",1.9,"9/10",1.91,"10/11",1.92,"23/25",1.93,"93/100",1.94,"47/50",1.95,"19/20",1.96,"24/25",1.97,"97/100",1.98,"49/50",1.99,"99/100",2,"EVENS",2.05,"21/20",2.1,"11/10",2.11,"10/9",2.15,"23/20",2.2,"6/5",2.25,"5/4",2.3,"13/10",2.35,"27/20",2.38,"11/8",2.4,"7/5",2.45,"29/20",2.5,"6/4",2.55,"31/20",2.6,"8/5",2.62,"13/8",2.625,"13/8",2.65,"33/20",2.7,"17/10",2.75,"7/4",2.8,"9/5",2.85,"37/20",2.875,"15/8",2.88,"15/8",2.9,"19/10",2.95,"39/20",3,"2/1",3.1,"21/10",3.2,"11/5",3.25,"9/4",3.3,"23/10",3.375,"11/8",3.4,"12/5",3.5,"5/2",3.6,"13/5",3.7,"27/10",3.75,"11/4",3.8,"14/5",3.9,"29/10",4,"3/1",4.2,"16/5",4.25,"13/4",4.33,"100/30",4.333,"10/3",4.5,"7/2",4.75,"15/4",4.8,"19/5",5,"4/1",5.25,"17/4",5.5,"9/2",6,"5/1",6.5,"11/2",7,"6/1",7.5,"13/2",8,"7/1",8.5,"15/2");

/* array extensions */
//$(document).ready(extendArray);

function extendArray() {
    Array.prototype.contains = BetExistsInObjArray;
    Array.prototype.remove = RemoveBetFromObjArray;
    Array.prototype.SaveToCookie = SaveBetBasketFromObjectArray;
}

function BetExistsInObjArray(sPartStr) {
    var bRet = false;
    for (i = 0; i < this.length; i++) {
        if (this[i].TransType == 'SPORT') {
            if (sPartStr == this[i].PartId + this[i].PriceType) {
                bRet = true;
                break;
            }
        }
        else {
            if (sPartStr == this[i].PartId + this[i].PriceType + this[i].BetType) {
                bRet = true;
                break;
            }
        }
    }
    return bRet;
}

function RemoveBetFromObjArray(sPartStr) {
    var bRet = false;
    for (i = 0; i < this.length; i++) {
        if (this[i].TransType == 'SPORT') {
            if (sPartStr == this[i].PartId + this[i].PriceType) {
                if (document.getElementById("chkPart_" + sPartStr) != null) {
                    str = document.getElementById("chkPart_" + sPartStr).checked = false;
                }
                this.splice(i, 1);
                bRet = true;
                break;
            }
        }
        else {
            if (sPartStr == this[i].PartId + this[i].PriceType + this[i].BetType) {
                if (document.getElementById("chkPart_" + sPartStr) != null) {
                    str = document.getElementById("chkPart_" + sPartStr).checked = false;
                }
                else if (document.getElementById(this[i].BookNo + "chkPart_" + sPartStr) != null) {
                    str = document.getElementById(this[i].BookNo + "chkPart_" + sPartStr).checked = false;
                }
                this.splice(i, 1);
                bRet = true;
                break;
            }
        }
    }
    return bRet;
}


/*  RACING ASPX PAGE ROUTINES -- START */
function BB_AddRemoveRacing(BookNo, sPartStr, IsFutureFlag) {
    extendArray();
	var strDetail = '';
	var strDetailPart = '';
	var strNoReserve = '0';

	$.cookie("IASBetSlipOpen", "true");
		
	if (document.getElementById("BDetail_" + BookNo) !=null)
			strDetail=document.getElementById("BDetail_" + BookNo).value;
	else return;

	if (document.getElementById("PDetail_" + sPartStr) !=null)
			strDetailPart=document.getElementById("PDetail_" + sPartStr).value;
	else return;

	if (document.getElementById("chkNoReserve_" + BookNo)!=null)
		if (document.getElementById("chkNoReserve_" + BookNo).checked)
			strNoReserve=document.getElementById("chkNoReserve_" + BookNo).value;

    var betsFromCookie = LoadAndReturnBetBasket();
	var objPart = CreatePartRacing(strDetail,strDetailPart,IsFutureFlag, strNoReserve);
	if (!betsFromCookie.contains(sPartStr))
	    betsFromCookie.push(objPart);
	else {
	    betsFromCookie.remove(sPartStr);
    }

    betsFromCookie.SaveToCookie();
}

function BB_PlaceBetRacing(BookNo, sPartStr, IsFutureFlag) {
    extendArray();
	var strDetail = '';
	var strDetailPart = '';
	var strNoReserve = '0';

	$.cookie("IASBetSlipOpen", "true");
	
	if (document.getElementById("BDetail_" + BookNo) !=null)
			strDetail=document.getElementById("BDetail_" + BookNo).value;
	else return;

	if (document.getElementById("PDetail_" + sPartStr) !=null)
			strDetailPart=document.getElementById("PDetail_" + sPartStr).value;
	else return;

	if (document.getElementById("chkNoReserve_" + BookNo)!=null)
		if (document.getElementById("chkNoReserve_" + BookNo).checked)
			strNoReserve=document.getElementById("chkNoReserve_" + BookNo).value;

    var betsInCookie = LoadAndReturnBetBasket();
	var objPart = CreatePartRacing(strDetail,strDetailPart,IsFutureFlag,strNoReserve);
	if (!betsInCookie.contains(sPartStr))
	    betsInCookie.push(objPart);

	betsInCookie.SaveToCookie();
	BetslipLoad_AjaxRequest();
}


/*  RACING ASPX PAGE ROUTINES -- END */

/*  SPORT ASPX PAGE ROUTINES -- START*/


function BB_PlaceBet(sPartStr) {
    extendArray();
	var str = '';

	$.cookie("IASBetSlipOpen", "true");
	
	if (document.getElementById("PDetail_" + sPartStr) !=null)
			str=document.getElementById("PDetail_" + sPartStr).value;
	else return;

	var betsInCookie = LoadAndReturnBetBasket();
	var objPart = CreatePart(str);
	if (!betsInCookie.contains(sPartStr)) {
	    betsInCookie.push(objPart);
	}

	betsInCookie.SaveToCookie();
	SportSubmit();
}


/*  SPORT ASPX PAGE ROUTINES -- END */
function CreatePart(sPartStr)
{
	var oPart = new Object();
	var aTemp = new Array();
	
	aTemp = sPartStr.split("|");
	oPart.SportId = aTemp[0];
	oPart.PartId = aTemp[1];
	oPart.TransType = aTemp[2];
	oPart.BookNo = aTemp[3];
	oPart.EventType = aTemp[4];
	oPart.EventName = aTemp[5];
	oPart.UpSellFlag = aTemp[6];
	oPart.BetType = aTemp[7];
	oPart.PartNo = aTemp[8];
	oPart.PartName = aTemp[9];
	oPart.PartPrice = aTemp[10];
	oPart.PriceType = aTemp[11];
	oPart.Line = aTemp[12];
	oPart.PointsMax = aTemp[13];
	oPart.PitcherRequired = aTemp[14];
	oPart.PitcherHomeNo = aTemp[15];
	oPart.PitcherAwayNo = aTemp[16];
	oPart.TeaserFlag = aTemp[17];
	oPart.ScoreAtBet = aTemp[18];
	oPart.Round = aTemp[19];
	oPart.Stake = 0;
	oPart.QualType = '';
	oPart.NoReserve = '0';
	oPart.BuySell = '';
	oPart.BuySellPoints = '';
	oPart.ExactaUpSellFlag = '0';
	oPart.QuinellaUpSellFlag = '0';
	oPart.TrifectaUpSellFlag = '0';
	oPart.First4UpSellFlag = '0';
	oPart.IsGameLiveFlag = aTemp[29];
	return oPart;
}

function CreatePartRacing(sDetailStr,sPartStr,IsFutureFlag, NoReserve)
{
	var oPart = new Object();
	var aTempDetail = new Array();
	var aTempPart = new Array();
	aTempDetail = sDetailStr.split("|");
	aTempPart = sPartStr.split("|");

	oPart.SportId = 1;
	oPart.PartId = aTempPart[0];
	if (IsFutureFlag)
		oPart.TransType = 'SPORT';
	else
		oPart.TransType = 'RACING';
	oPart.BookNo = aTempDetail[0];
	oPart.EventType = aTempDetail[1];
	oPart.EventName = aTempDetail[2];
	oPart.UpSellFlag = aTempDetail[3];
	oPart.BetType = aTempPart[5];
	oPart.PartNo = aTempPart[1];
	oPart.PartName = aTempPart[2];
	oPart.PartPrice = aTempPart[3];
	oPart.PriceType = aTempPart[4];
	oPart.Line = '';
	oPart.PointsMax = '0';
	oPart.PitcherRequired = '';
	oPart.PitcherHomeNo = '';
	oPart.PitcherAwayNo = '';
	oPart.TeaserFlag = '0';
	oPart.ScoreAtBet = '';
	oPart.Round = '';
	oPart.Stake = 0;
	oPart.QualType = '';
	oPart.NoReserve = NoReserve;
	oPart.BuySell = '';
	oPart.BuySellPoints = '';
	//alert("BetBascket.js | Legth:" + aTempDetail.length + "|" + aTempDetail[4] + "|" + aTempDetail[5] + "|" + aTempDetail[6]);
	if (aTempDetail.length > 4) {
	    oPart.QuinellaUpSellFlag = aTempDetail[4]; // '1';
	    oPart.ExactaUpSellFlag = aTempDetail[5]; //'1';
	    oPart.TrifectaUpSellFlag = aTempDetail[6]; //'1';
	    oPart.First4UpSellFlag = aTempDetail[7]; //'1';
	}
	else {
	    oPart.ExactaUpSellFlag = '1';
	    oPart.QuinellaUpSellFlag = '1';
	    oPart.TrifectaUpSellFlag = '1';
	    oPart.First4UpSellFlag = '1';
	}
	return oPart;
}




function SaveBetBasketFromObjectArray() {
    var strCookie = "";

    for (i = 0; i < this.length; i++) {
        var currentBet = this[i];
        strCookie += currentBet.SportId + "|";
        strCookie += currentBet.PartId + "|";
        strCookie += currentBet.TransType + "|";
        strCookie += currentBet.BookNo + "|";
        strCookie += URLEncode(currentBet.EventType) + "|";
        strCookie += URLEncode(currentBet.EventName) + "|";
        strCookie += currentBet.UpSellFlag + "|";
        strCookie += URLEncode(currentBet.BetType) + "|";
        strCookie += currentBet.PartNo + "|";
        strCookie += URLEncode(currentBet.PartName) + "|";
        strCookie += currentBet.PartPrice + "|";
        strCookie += currentBet.PriceType + "|";
        strCookie += currentBet.Line + "|";
        strCookie += currentBet.PointsMax + "|";
        strCookie += currentBet.PitcherRequired + "|";
        strCookie += currentBet.PitcherHomeNo + "|";
        strCookie += currentBet.PitcherAwayNo + "|";
        strCookie += currentBet.TeaserFlag + "|";
		strCookie += currentBet.ScoreAtBet + "|";
		strCookie += currentBet.Round + "|";
        strCookie += currentBet.Stake + "|";
        strCookie += currentBet.QualType + "|";
        strCookie += currentBet.NoReserve + "|";
        strCookie += currentBet.BuySell + "|";
        strCookie += currentBet.BuySellPoints + "|";
        strCookie += currentBet.ExactaUpSellFlag + "|";
        strCookie += currentBet.QuinellaUpSellFlag + "|";
        strCookie += currentBet.TrifectaUpSellFlag + "|";
        strCookie += currentBet.First4UpSellFlag + "|";
        strCookie += currentBet.IsGameLiveFlag;
        if (i < this.length - 1) strCookie += "^";
    }
    var expdate = new Date();
    expdate.setTime(expdate.getTime() + (12 * 60 * 60 * 1000 * 1));

    var strCookie = "IASBetBasket_V4_1_0=" + strCookie + "; expires=" + expdate.toGMTString() + "; path=/;domain=" + GENERAL_Script.Global_Domain + ";";

    document.cookie = strCookie;
}

function BB_GetCookie(sName)
{
  var aCookie =document.cookie.split("; ");
  for (var i=0; i < aCookie.length; i++)
  {
    var aCrumb = aCookie[i].split("=");
    if (sName == aCrumb[0]) {
      return (aCrumb[1]);
    }
  }
  return null;
}

function URLDecode(str) 
{ 
	if (str != null) {
		return (decodeURI(str)); 
	}
	else return str;
} 

function URLEncode(str) 
{		
	return encodeURI(str); 
}

function LoadAndReturnBetBasket() {

    var strCookie = '';
    var aPartTemp = new Array();
    var oPart = new Object();
    var sPartStr = '';
    var aLocalBetBasket = new Array();

    strCookie = BB_GetCookie("IASBetBasket_V4_1_0");
    if (strCookie != null && strCookie.length != 0) {
        aPartTemp = strCookie.split("^");

        if (aPartTemp.length > 0) {
            for (i = 0; i < aPartTemp.length; i++) {
                oPart = LoadPart(aPartTemp[i], false);
                if (oPart.TransType == 'SPORT')
                    sPartStr = oPart.PartId + oPart.PriceType;
                else
                    sPartStr = oPart.PartId + oPart.PriceType + oPart.BetType;

                if (!aLocalBetBasket.contains(sPartStr)) {
                    aLocalBetBasket.push(oPart);
                }
            }
        }
    }
    return aLocalBetBasket;
}

function LoadBetBasket() {
    extendArray();
	var strCookie = '';
	var aPartTemp = new Array();
	var oPart  = new Object();
	var sPartStr = '';
	var aBetList = new Array();
	
	strCookie = BB_GetCookie("IASBetBasket_V4_1_0");

	$("input[id*=chkPart_]").attr('checked', false);

	
	if (strCookie != null && strCookie.length != 0) {
		aPartTemp = strCookie.split("^");

		if (aPartTemp.length > 0)
			for (i = 0; i < aPartTemp.length; i++){
				oPart = LoadPart(aPartTemp[i],false);
				if (oPart.TransType == 'SPORT')
					sPartStr = oPart.PartId + oPart.PriceType; 
				else
					sPartStr = oPart.PartId  + oPart.PriceType + oPart.BetType;

	            if (!aBetList.contains(sPartStr)) {
	                aBetList.push(oPart);
	                if (aBetList[i].TransType == 'SPORT') {
						if (document.getElementById("chkPart_" + sPartStr) !=null)
								str=document.getElementById("chkPart_" + sPartStr).checked=true;			
					}
					else	{
						if (document.getElementById("chkPart_" + sPartStr) !=null)
							str=document.getElementById("chkPart_" + sPartStr).checked=true;
			            else if (document.getElementById(aBetList[i].BookNo + "chkPart_" + sPartStr) != null)
			                str = document.getElementById(aBetList[i].BookNo + "chkPart_" + sPartStr).checked = true;

			            if (aBetList[i].NoReserve == '1') //if any item on this page has Noreserve then all should have
			                str = document.getElementById("chkNoReserve_" + aBetList[i].BookNo).checked = true;
					}
				}
			}
	}
}

function LoadPart(sPartStr,IsMulti)
{
	var oPart = new Object();
	var aTemp = new Array();
	
	aTemp = sPartStr.split("|");
	oPart.SportId = aTemp[0];
	oPart.PartId = aTemp[1];
	oPart.TransType = aTemp[2];
	oPart.BookNo = aTemp[3];
	oPart.EventType = URLDecode(aTemp[4]);
	oPart.EventName = URLDecode(aTemp[5]);
	oPart.UpSellFlag = aTemp[6];
	oPart.BetType = URLDecode(aTemp[7]);
	oPart.PartNo = aTemp[8];
	oPart.PartName = URLDecode(aTemp[9]);
	oPart.PartPrice = aTemp[10];
	oPart.PriceType = aTemp[11];
	oPart.Line = aTemp[12];
	oPart.PointsMax = aTemp[13];
	oPart.PitcherRequired = aTemp[14];
	oPart.PitcherHomeNo = aTemp[15];
	oPart.PitcherAwayNo = aTemp[16];
	oPart.TeaserFlag = aTemp[17];
	oPart.ScoreAtBet = aTemp[18];
	oPart.Round = aTemp[19];
	if (!IsMulti)	{
		oPart.Stake = aTemp[20];
		oPart.QualType = aTemp[21];
		oPart.NoReserve = aTemp[22];
		oPart.BuySell = aTemp[23];
		oPart.BuySellPoints = aTemp[24];
		oPart.ExactaUpSellFlag = aTemp[25];
		oPart.QuinellaUpSellFlag = aTemp[26];
		oPart.TrifectaUpSellFlag = aTemp[27];
		oPart.First4UpSellFlag = aTemp[28];
		oPart.IsGameLiveFlag   = aTemp[29];
	}
	else	{
		oPart.Stake = aTemp[20];
		oPart.QualType = aTemp[21];
		oPart.NoReserve = aTemp[22];
	}
	return oPart;
}
function SetBetBasket() {
	LoadBetBasket();
}

function DecToFraHash()
{
	this.length = 0;
	this.items = new Array();
	for (var i = 0; i < arguments.length; i += 2) {
		if (typeof(arguments[i + 1]) != 'undefined') {
			this.items[arguments[i]] = arguments[i + 1];
			this.length++;
		}
	}
   
	this.getItem = function(in_key) {
		return this.items[in_key];
	}

	this.hasItem = function(in_key)
	{
		return typeof(this.items[in_key]) != 'undefined';
	}
}

/*
function BetBasketRemove(sPartStr) {
    var betsFromCookie = LoadAndReturnBetBasket();
    betsFromCookie.remove(sPartStr);
    betsFromCookie.SaveToCookie();
}
*/
