
var lastWager = 2;

/*
 * onClick function triggered by radio button selection
 */

function plou_optionSelect(obj) {
  // Set [is toggled] to 'false' for other radio buttons in obj group
  var e = document.getElementsByName(obj.name);

  for(var i = 0 ; i < e.length ; i++) {
    if(e[i].value != obj.value) {
      var radVals = new Array();
      radVals = e[i].value.split(',');
      e[i].value = radVals[0] + "," + radVals[1] + ",false" + "," + radVals[3];
    }
  }

  // Check [is toggled] and flip value
  var vals = new Array();
  vals = obj.value.split(',');

  if(vals[2]=="false") {
    if(plou_calcTotal(obj) == true) {
      obj.value = vals[0] + "," + vals[1] + ",true" + "," + vals[3];
    } else {
      obj.value = vals[0] + "," + vals[1] + ",false" + "," + vals[3];
      obj.checked = false;
      plou_calcTotal(obj);
    }
  } else { // Set .checked to false if button was toggled off
    obj.value = vals[0] + "," + vals[1] + ",false" + "," + vals[3];
    obj.checked = false;
    plou_calcTotal(obj);
  }
}


/*
 * Clear all radio buttons, reset disabled fields
 * Set wager and total fields to default values
 */

function plou_calc_reset() {
  for(var i = 0 ; i < document.plou_Calculator.length ; i++) {
    if(document.plou_Calculator.elements[i].type == "radio") {
      document.plou_Calculator.elements[i].checked = false;
      document.plou_Calculator.elements[i].disabled = false;

      var vals = new Array();
      vals = document.plou_Calculator.elements[i].value.split(',');
      document.plou_Calculator.elements[i].value = vals[0] + "," + vals[1] + ",false" + "," + vals[3];
    }
  }

  document.plou_Calculator.plou_wager.value = 2;
  plou_calcTotal(null);
  updateProDisplay(0);
}


/*
 * Redirect form to print page
 */
function plou_print() {
	document.plou_Calculator.target = '_new';
	document.plou_Calculator.submit();
}


/*
 * Calculate totals for Double Play and place value into calc_total
 * Disable radio buttons in groups with no selected elements when maximum 
 *   number of selections is reached
 * Pre:
 *  - calc_total input field exists
 *  - wager input field exists
 *  - radio buttons in Calculator form have values of the form:
 *	  "[option label (string)],[option value (float)],[is toggled ('true'/'false')],[option sport (string)]"
 */

function plou_calcTotal(obj) {

  var proLineSelected = false;
  var overUnderSelected = false;
  var doublePlaySelected = false;
  var sum = 1.00;
  var numSelected = 0;
  var tiesSelected = 0;
  var numOverUnder = 0;

  // Calculate total of selected values and count number of selected elements
  for(var i = 0 ; i < document.plou_Calculator.length ; i++) {
    if(document.plou_Calculator.elements[i].type == "radio" && 
       document.plou_Calculator.elements[i].checked == true) {
      var radVals = new Array();
      radVals = document.plou_Calculator.elements[i].value.split(',');
      rowName = document.plou_Calculator.elements[i].name;

      if(!isNaN(radVals[1])) {
        sum = sum * parseFloat(radVals[1]).toFixed(2);
        numSelected++;
      }

      if(radVals[0] == "V" || radVals[0] == "H") {
        proLineSelected = true;
      } else if(radVals[0] == "T") {
        proLineSelected = true;
        tiesSelected++;
      } else if(radVals[0] == "OVER" || radVals[0] == "UNDER") {
        overUnderSelected = true;
        numOverUnder++;
      }
    }
  }

  tempNum = numSelected;

  if(numSelected > "6") {
    tempNum = "6";
  }

  doublePlaySelected = proLineSelected && overUnderSelected;

  // Apply maximum rules based on current game type
  if(doublePlaySelected) {

    document.plou_Calculator.game.value = "DP";

    if(numSelected > 6 || tiesSelected > 4) {
      if(numSelected > 6) {
        alert('You must select between 3 and 6 games for DOUBLE PLAY');
      } else if(tiesSelected > 4) {
        alert('Maximum of 4 Tie Selections');
      }

      // Set the currently selected row to false
      var vals = new Array();
      vals = obj.value.split(',');
      obj.value = vals[0] + "," + vals[1] + ",false" + "," + vals[3];
      obj.checked = false;
			
      // Reduce sum by this row and decrement counters by one
      sum = sum / parseFloat(vals[1]).toFixed(2);
      numSelected--;

      if(vals[0] == "T") {
        tiesSelected--;
      }
    }
  } else if(proLineSelected) {

    document.plou_Calculator.game.value = "PL";

    if(numSelected > 6 || tiesSelected > 4) {
      if(numSelected > 6) {
        alert('You must select between 3 and 6 games for PRO•LINE');
      } else if(tiesSelected > 4) {
        alert('Maximum of 4 Tie Selections');
      }

      // Set the currently selected row to false
      var vals = new Array();
      vals = obj.value.split(',');
      obj.value = vals[0] + "," + vals[1] + ",false" + "," + vals[3];
      obj.checked = false;

      // Reduce sum by this row and decrement counters by one
      sum = sum / parseFloat(vals[1]).toFixed(2);
      numSelected--;

      if(vals[0] == "T") {
        tiesSelected--;
      }
    }
  } else if(overUnderSelected) {

    document.plou_Calculator.game.value = "OU";

    if(numSelected > 10) {
      alert('You must select between 2 and 10 games for OVER/UNDER');

      // Set the currently selected row to false
      var vals = new Array();
      vals = obj.value.split(',');
      obj.value = vals[0] + "," + vals[1] + ",false" + "," + vals[3];
      obj.checked = false;

      // Reduce sum by this row and decrement counters by one
      sum = sum / parseFloat(vals[1]).toFixed(2);
      numSelected--;
      numOverUnder--;;
    }
  }

  // Display total and control disabling/enabling of radio buttons based
  // on number of selections made
  if( (doublePlaySelected && numSelected >= 3) || 
      (proLineSelected && numSelected >= 3)    ||
      (overUnderSelected && numOverUnder >= 2)) {

    var wager = document.plou_Calculator.plou_wager.value;

    if(!isNaN(wager)) {
      sum = sum.toFixed(2);
      sum = sum * parseFloat(wager).toFixed(2);
    }

    // check for max values before posting results

    var wagerValid = checkWager(sum);

    if (wagerValid == true) {
      document.plou_Calculator.plou_total.value = "$" + sum.toFixed(2);
      lastWager = document.plou_Calculator.plou_wager.value;
    } else {
      alert("Picks have exceeded Prize Limit");

      if (obj == null) {
        document.plou_Calculator.plou_wager.value = lastWager;
      }
    }
  } else {
    document.plou_Calculator.plou_total.value = "***";
    wagerValid = true;
  }

  if (wagerValid) {
    updateProDisplay(numSelected);
  }

  return wagerValid;
}


function checkWager(sum) {
  if (sum > (document.plou_Calculator.plou_wager.value * 50000)) {
    return false;
  } else if (sum > 250000) {
    return false;
  }
  // else
  return true;
}


function updateProDisplay(numSelected) {

  var htmlStr = "";

  // Highlight the rows
  $(".stripeMePro tr").css( {"background-color":""});
  $(".stripeMePro tr").css( {"color":"white"} );
  $(".stripeMePro tr:even").addClass("alt");

  if (numSelected == 0) {
    htmlStr = "No events selected<br/>" ;
  } else {

    for(var i = 0 ; i < document.plou_Calculator.length ; i++) {
      if(document.plou_Calculator.elements[i].type == "radio" && document.plou_Calculator.elements[i].checked == true) {
        var radVals = new Array();
        radVals = document.plou_Calculator.elements[i].value.split(',');
        var rowName = document.plou_Calculator.elements[i].name;
        var sepLoc = rowName.indexOf("_");
        var rowId =  "#proTr_" + rowName.substr(0,sepLoc)

        // highlight selected rows
        $( rowId).css( {"background-color":"#C5DC45"} );
        $( rowId).css( {"color":"black"} );
        $( rowId ).removeClass("alt");

        // enter summary text

	// parse the sport name from the full league descriptor
        var sportDes = $( rowId + " td:eq(3)").attr('title');
        var spaceIndex = sportDes.lastIndexOf(" ");
        sportDes = sportDes.substring(spaceIndex + 1);

        var visitorDes = $( rowId + " td:eq(4)").html();
        var homeDes = $( rowId + " td:eq(5)").html();
        var fixedOdds = parseFloat(radVals[1]).toFixed(2);

          htmlStr = htmlStr + "Game #" + $( rowId + " td:eq(0)").html() + " &nbsp;&nbsp;";
          htmlStr = htmlStr + visitorDes + " at " + homeDes + " &nbsp; " + sportDes +"<br/>";
          htmlStr = htmlStr + "You picked ";

          if(radVals[0] == "V") {
            htmlStr = htmlStr + visitorDes + " to WIN &nbsp;&nbsp; Odds are " + fixedOdds +"<br/><br/>";
          }
          if(radVals[0] == "H") {
            htmlStr = htmlStr + homeDes + " to WIN &nbsp;&nbsp; Odds are " + fixedOdds +"<br/><br/>";
          }
          if(radVals[0] == "T") {
            htmlStr = htmlStr + "TIE game &nbsp;&nbsp; Odds are " + fixedOdds +"<br/><br/>";
          }
          if(radVals[0] == "OVER") {
            htmlStr = htmlStr + "OVER &nbsp; " + $( rowId + " td:eq(10)").html() + " &nbsp;&nbsp; Odds are " + fixedOdds +"<br/><br/>";
          }
          if(radVals[0] == "UNDER") {
            htmlStr = htmlStr + "UNDER &nbsp; " + $( rowId + " td:eq(10)").html() + " &nbsp;&nbsp; Odds are " + fixedOdds +"<br/><br/>";
          }
      }
    }
  }


  $("#proTicketSummary").html(htmlStr);
}
