
//----------------------------------------------------------------------------
function SportBetCostOnClick(betCostUrl)
{
  var enumerator;
  var element;
  var cost = 0;
  var amount = 0;

  clearDisplayedErrors();

  if ( navigator.userAgent.indexOf("MSIE") > 0 )
  {
    enumerator = new Enumerator(document.Form1.elements);
    for ( ; !enumerator.atEnd(); enumerator.moveNext())
    {
      element = enumerator.item();
      if ( element.type == "text" )
      {
        amount = ValidateSportBetCost(element, false);
        cost = cost + new Number(amount);
      }
    }
  }
  else
  {
    for ( var i = 0; i < document.Form1.elements.length; i++ )
    {
      element = document.Form1.elements[i];
      if ( element.type == "text" )
      {
        amount = ValidateSportBetCost(element, false);
        cost = cost + new Number(amount);
      }
    }
  }
  openBetCostWin(betCostUrl + "?betCost=" + cost ,"SportBetCost");
  return false;
}

//----------------------------------------------------------------------------
function ValidateSportBetCost(element, isMultiBet)
{
  var result = 0;
  var amount = element.value;
  var correction;
  var minBetAmount = MINIMUM_SPORT_BET_AMOUNT;
  
  if ( isMultiBet )
  {
    minBetAmount = MINIMUM_SPORT_MULTIBET_AMOUNT;
  }
  
  //check is Number
  if ( isNaN(amount) )
  {
    element.value = amount;
    displayError( StringFormat(INVALID_BET_VALUE, amount) );
  }
  else if ( amount != 0 )
  {
    amount = new Number(amount);
    
    //check for cents
    if ( ( amount - Math.floor(amount) ) > 0 )
    {
      correction = Math.floor(amount);
      displayError( StringFormat(NO_CENTS_BET_ALLOWED, ToRegExpCurrency(amount), ToRegExpCurrency(correction)) );
      amount = correction;
    }

    //check minimum bet    
    if ( amount < minBetAmount )
    {
      correction = minBetAmount;
      displayError( StringFormat(MINIMUM_BET_INCREASED, ToRegExpCurrency(minBetAmount), ToRegExpCurrency(amount)) );
      amount = correction;
    }
    
    //check maximum bet
    if ( amount > MAXIMUM_SPORT_BET_AMOUNT )
    {
      correction = MAXIMUM_SPORT_BET_AMOUNT;
      displayError( StringFormat(MAXIMUM_BET_DECREASED, ToRegExpCurrency(MAXIMUM_SPORT_BET_AMOUNT), ToRegExpCurrency(amount)) );
      amount = correction;
    }
    
    result = amount;
    
    element.value = result;
  }
    
  return result;
}

//----------------------------------------------------------------------------
function checkNumOnly(e, dotAllowed) 
{
    var charCode = (navigator.appName == "Netscape") ? e.which : e.keyCode;
    if ((charCode == 0) ||
        (charCode == 8) ||
        (charCode == 10)||
        (charCode == 13)||
        (charCode == 46 && dotAllowed) ||
        (charCode >= 48 && charCode <= 57)
        )
     {
       return true;
     }
     else
     {
       return false;
     }
}


//----------------------------------------------------------------------------
var multipliedReturnDivId;
var betAmountElementId;
var ticketValueDivId;
var multipliedReturn;

//----------------------------------------------------------------------------
function CalMultibetTicketValue()
{
  var projectedReturn = new Number();
  var projectedReturnTxt = new String();
  var betAmount = document.getElementById('smbcvc_betAmountTextBox').value;
  var combinedOdds = new String();
  
  combinedOdds = document.getElementById('smbcvc_MultipliedReturn').innerText;
  
  if (betAmount == 0)
  {
    projectedReturnTxt = "0.00";
  }
  else
  {
    projectedReturn= (betAmount * combinedOdds * 100);
    projectedReturn= Math.round(projectedReturn);
    projectedReturnTxt =  projectedReturn.toString();
    projectedReturnTxt =  projectedReturnTxt.substring(0, (projectedReturnTxt.length - 2)) + '.' + projectedReturnTxt.substring(projectedReturnTxt.length - 2, projectedReturnTxt.length);
  }
  
  var ticketValueCell = document.getElementById('smbcvc_TicketValue');
  
  if ( ticketValueCell.innerText )
  {
    ticketValueCell.innerText = projectedReturnTxt;
   }
  else
  {
    ticketValueCell.childNodes[0].nodeValue = projectedReturnTxt;
    }
}

//----------------------------------------------------------------------------
function CalcAccumulatorTicketValue()
{
  var result = "0.00";
  var multipliedReturnDiv = document.getElementById(multipliedReturnDivId);
  var betAmountTextBox = document.getElementById(betAmountElementId);
  var ticketValueDiv = document.getElementById(ticketValueDivId);
  var betAmount;
  
  clearDisplayedErrors();
  ValidateSportBetCost(betAmountTextBox, true);
  
  if ( betAmountTextBox.value != null && betAmountTextBox.value != "" && !isNaN(betAmountTextBox.value) )
  {
    betAmount = new Number(betAmountTextBox.value);
    result = new Number(multipliedReturn) * betAmount;
  }
  
  ticketValueDiv.innerHTML = FormatDecimal(RoundDownToFiveCents(result),false);
}

//----------------------------------------------------------------------------
//
// I'm using this as a play function for performance tuning
//
function FobPropSort(sortExpression)
{
  var element = document.getElementById("sbc_sortExpression");
  element.value = sortExpression;
  doPostBack("","");
}

//----------------------------------------------------------------------------
//
// Handles toggling of the accumulator bet selection
//
var numCbsPerRow;
var accumBetReturns; //array
function AccumBetSelect(checkBox,rowIndex,selectionReturn)
{
  var betReturn = 0;
  if ( checkBox.checked )
  {
    // uncheck all other checkboxes in the same row
    for (var i = 0; i < numCbsPerRow; i++) {
      var cbName = checkBox.name.substring(0,checkBox.name.length-1) + i;
      if ( cbName != checkBox.name )
      {
        document.Form1[cbName].checked = false;
      }
    }
    // include the return
    betReturn = selectionReturn;
  }
  accumBetReturns[rowIndex] = betReturn;
  CalcMultipliedReturn();
}

//----------------------------------------------------------------------------
function CalcMultipliedReturn()
{
  var result = 0;
  for ( var i = 0; i < accumBetReturns.length; i++ )
  {
    if ( accumBetReturns[i] > 0 )
    {
      if ( result > 0 )
      {
        result *= accumBetReturns[i];
      }
      else
      {
        result = accumBetReturns[i]
      }
    }
  }
  multipliedReturn = result;
  SetMultipliedReturn();
}

//----------------------------------------------------------------------------
function SetMultipliedReturn()
{
  var multipliedReturnDiv = document.getElementById(multipliedReturnDivId);
  multipliedReturnDiv.innerHTML = FormatDecimal(TruncDecimal(multipliedReturn), false);
}

//----------------------------------------------------------------------------
function TruncDecimal(num)
{
  var result = "0.00";
  var text;
  var index;
  var whole;
  var fraction;
  var decimals = 2;
  text = new String(num);
  index = text.indexOf(".");
  if (!isNaN(num))
  {
    if ( index == -1 )
    {
      result = FormatDecimal(num, false);
    }
    else
    {
      whole = text.substring(0, index);
      fraction = text.substring(index + 1);
      decimals = Math.min(decimals, fraction.length);
      text = whole + "." + fraction.substring(0, decimals);
      result = text;
    }
  }
  return result;
}

//----------------------------------------------------------------------------
function RoundDownToFiveCents(num)
{
  var result = "0.00";
  var text;
  var index;
  var numDp; //number of decimal places
  var lastDigit;
  text = new String(num);
  index = text.indexOf(".");
  if (!isNaN(num))
  {
    if ( index == -1 )
    {
      result = num;
    }
    else
    {
      // ensure num is truncated to 2dp
      numDp = text.substring(index + 1).length;
      if ( numDp != 2 )
      {
        text = new String(FormatDecimal(TruncDecimal(num)));
      }
      // check the last digit
      lastDigit = new Number( text.substring( text.length - 1 ) );
      // adjust the digit
      if ( lastDigit < 5 )
      {
        lastDigit = 0;
      }
      else
      {
        lastDigit = 5;
      }
      // replace the digit
      text = text.substring(0, text.length - 1) + lastDigit;
      result = text;
    }
  }
  return result;
}

//----------------------------------------------------------------------------
function FormatDecimal(num,round)
{
  var result = 0.00;
  var index;
  var text;
  
  if (!isNaN(num))
  {
     if ( round == true )
     {
       result = Math.round(num*Math.pow(10,2))/Math.pow(10,2);
     }
     else
     {
       result = new Number(num);
     }
     
     text = new String(result);
     index = text.indexOf(".");
     if ( index == -1 )
     {
       result = result + ".00";
     }
     else if (index == (text.length - 2))
     {
       result = result + "0";
     }
  }
  return result;
}