﻿function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_nbGroup(event, grpName) { //v6.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up);
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == "down") {
    nbArr = document[grpName];
    if (nbArr)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
      nbArr[nbArr.length] = img;
  } }
}

//function to check valid email address
function isValidEmail(strEmail){
   validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;
   // search email text for regular exp matches
   if (strEmail.search(validRegExp) == -1){
      alert('A valid e-mail address is required.\nPlease amend and retry');
      return false;
   } 
   return true;
}

//function to check valid email address
function textCounter(field, maxlimit) {
    var txt = document.getElementById(field);
    if (txt.value.length > maxlimit) // if too long...trim it!
        txt.value = txt.value.substring(0, maxlimit);
}

//function to check number values
function toNumber(num){
    if(num.value.length>0)
        num.value = num.value.replace(/[^0-9.]/g, "");
}

//function to check number values
function toInt(num){
    if(num.value.length>0)
        num.value = num.value.replace(/[^0-9]/g, "");
}

function calcTotal(classTag,totalTextBoxId,containerId){
    var tbl = document.getElementById(containerId);
    var elms = tbl.getElementsByTagName('input');
    var total = 0;
    for(var i = 0; i < elms.length; i++){
        if (elms[i].className.indexOf(classTag) > -1){
            if (elms[i].value != "" && !isNaN(elms[i].value)){
                total += parseFloat(elms[i].value);
            }
        }
    }
    var totalTextBox = document.getElementById(totalTextBoxId);
    totalTextBox.value = total;
    if (totalTextBox.onchange != null)
        totalTextBox.onchange();
}

function calcPriceExtn(tBagsId,tPPBagId,tPExtnId){
    var tBags = document.getElementById(tBagsId);
    var tPPBag = document.getElementById(tPPBagId);
    var tPExtn = document.getElementById(tPExtnId);
    
    if (tBags.value != "" && tPPBag.value != "" && !isNaN(tBags.value) && !isNaN(tPPBag.value)){
        var totalExtn = 0;
        if (tBags.value != "")
            totalExtn = (parseFloat(tBags.value)*parseFloat(tPPBag.value));
        
        tPExtn.value = roundNumber(totalExtn,2) + '';
            
        tPExtn.onchange();
    }else{
        tPExtn.value = "0"
        tPExtn.onchange();
    }
}

function calcDiscs(){
    var earlyDiscTotal = document.getElementById(tEarlyDiscTotalId);
    var grossSale = document.getElementById(tGrossSaleId);
    var pickupDiscTotal = document.getElementById(tPickupDiscTotalId);
    var tEarlyDisc = document.getElementById(tEarlyDiscId);
    var tEarlyDisc1 = document.getElementById(tEarlyDisc1Id);
    var tPickupDisc = document.getElementById(tPickupDiscId);
    var tPickupDisc1 = document.getElementById(tPickupDisc1Id);
    var tSubTotal = document.getElementById(tSubTotalId);
    var tCashDic = document.getElementById(tCashDiscId);
    var tCashDicTotal = document.getElementById(tCashDiscTotalId);
    var tDeposit = document.getElementById(tDepositId);
    var tTotalDue = document.getElementById(tTotalDueId);

    //Early disc calc
    if (grossSale.value != ""){
        if (tEarlyDisc.value != "" && tEarlyDisc1.value != "")
            earlyDiscTotal.value = roundNumber((parseFloat(grossSale.value) - (parseFloat(tEarlyDisc.value) * parseFloat(tEarlyDisc1.value))),2) + '';
        else
            earlyDiscTotal.value = grossSale.value;
    }
    
    // Pickup discount
    if (earlyDiscTotal.value != ""){
        if (tPickupDisc.value != "" && tPickupDisc1.value != "")
            pickupDiscTotal.value = roundNumber((parseFloat(earlyDiscTotal.value) - (parseFloat(tPickupDisc.value) * parseFloat(tPickupDisc1.value))),2) + '';
        else
            pickupDiscTotal.value = earlyDiscTotal.value;
            
        tSubTotal.value = pickupDiscTotal.value;
    }
    
    //Calcuate cash discount
    if (tSubTotal.value != ""){
        if (tCashDic.value != "")
            tCashDicTotal.value = roundNumber((parseFloat(tSubTotal.value) - ((parseFloat(tCashDic.value) * parseFloat(tSubTotal.value)) / 100)),2) + '';
        else
            tCashDicTotal.value = tSubTotal.value;
    }
    
    //Calculate deposit and total due
    if (tCashDicTotal.value != ""){
        if (tDeposit.value != "")
            tTotalDue.value = roundNumber((parseFloat(tCashDicTotal.value) - parseFloat(tDeposit.value)),2) + '';
        else
            tTotalDue.value = tCashDicTotal.value;
    }
}

function IsGradeRequired(source, args)
{
    var txtUnit = source.parentNode.parentNode.getElementsByTagName('td')[0].getElementsByTagName('input')[0];
    var ddlProduct = source.parentNode.parentNode.getElementsByTagName('td')[1].getElementsByTagName('select')[0];
    var ddlPackage = source.parentNode.parentNode.getElementsByTagName('td')[2].getElementsByTagName('select')[0];
    var ddlGrade = source.parentNode.parentNode.getElementsByTagName('td')[3].getElementsByTagName('select')[0];
    var txtUnitPerPrice = source.parentNode.parentNode.getElementsByTagName('td')[4].getElementsByTagName('input')[0];
    var rProdType = document.getElementById(rProdTypeId).getElementsByTagName('td')[0].getElementsByTagName('input')[0];
    if (rProdType.value == "2" && rProdType.checked){ // if soybean then allow blank or any entry
      args.IsValid = true;
      return;
    }
    else{
        rProdType = document.getElementById(rProdTypeId).getElementsByTagName('td')[1].getElementsByTagName('input')[0];
        if (rProdType.value == "2" && rProdType.checked){ // if soybean then allow blank or any entry
            args.IsValid = true;
            return;
        }
    }

    if ((txtUnit.value != "" || ddlProduct.value != "" || ddlPackage.value != "" || txtUnitPerPrice.value != "") && (ddlGrade != undefined && ddlGrade.value == ""))
        args.IsValid = false;
    else    
        args.IsValid = true;
}

function IsBagsRequired(source, args)
{
    var txtUnit = source.parentNode.parentNode.getElementsByTagName('td')[0].getElementsByTagName('input')[0];
    var ddlProduct = source.parentNode.parentNode.getElementsByTagName('td')[1].getElementsByTagName('select')[0];
    var ddlPackage = source.parentNode.parentNode.getElementsByTagName('td')[2].getElementsByTagName('select')[0];
    var ddlGrade = source.parentNode.parentNode.getElementsByTagName('td')[3].getElementsByTagName('select')[0];
    var txtUnitPerPrice = source.parentNode.parentNode.getElementsByTagName('td')[4].getElementsByTagName('input')[0];

    if (((ddlGrade != undefined && ddlGrade.value != "") || ddlProduct.value != "" || ddlPackage.value != "" || txtUnitPerPrice.value != "") && txtUnit.value == "")
        args.IsValid = false;
    else    
    {
        if (txtUnit.value == ""){
            source.innerHTML = "required";
            args.IsValid = false;
        }   
        if (IsValidBulkUnit(txtUnit.value,ddlPackage.value))
            args.IsValid = true;
        else
        {
            source.innerHTML = "invalid";
            alert("Enter units in increments of 50");
            txtUnit.focus();
            args.IsValid = false;
        }
    }
}

function IsValidBulkUnit(sUnitValue, sPackageValue){
    if (sPackageValue == sBulkText || sPackageValue == sSoyaBulkText){
        var unit = parseFloat(sUnitValue);
        var rem = unit/50;
        return IsInteger(rem)
    }
    else
        return true;
}

function IsProductRequired(source, args)
{
    var txtUnit = source.parentNode.parentNode.parentNode.getElementsByTagName('td')[0].getElementsByTagName('input')[0];
    var ddlProduct = source.parentNode.parentNode.parentNode.getElementsByTagName('td')[1].getElementsByTagName('select')[0];
    var ddlPackage = source.parentNode.parentNode.parentNode.getElementsByTagName('td')[2].getElementsByTagName('select')[0];
    var ddlGrade = source.parentNode.parentNode.parentNode.getElementsByTagName('td')[3].getElementsByTagName('select')[0];
    var txtUnitPerPrice = source.parentNode.parentNode.parentNode.getElementsByTagName('td')[4].getElementsByTagName('input')[0];

    if (((ddlGrade != undefined && ddlGrade.value != "") || txtUnit.value != "" || ddlPackage.value != "" || txtUnitPerPrice.value != "") && ddlProduct.value == "")
        args.IsValid = false;
    else    
        args.IsValid = true;
}

function IsPackageRequired(source, args)
{
    var txtUnit = source.parentNode.parentNode.getElementsByTagName('td')[0].getElementsByTagName('input')[0];
    var ddlProduct = source.parentNode.parentNode.getElementsByTagName('td')[1].getElementsByTagName('select')[0];
    var ddlPackage = source.parentNode.parentNode.getElementsByTagName('td')[2].getElementsByTagName('select')[0];
    var ddlGrade = source.parentNode.parentNode.getElementsByTagName('td')[3].getElementsByTagName('select')[0];
    var txtUnitPerPrice = source.parentNode.parentNode.getElementsByTagName('td')[4].getElementsByTagName('input')[0];

    if (((ddlGrade != undefined && ddlGrade.value != "") || txtUnit.value != "" || ddlProduct.value != "" || txtUnitPerPrice.value != "") && ddlPackage.value == "")
        args.IsValid = false;
    else    
        args.IsValid = true;
}

function IsPricePerBagRequired(source, args){
    var txtUnit = source.parentNode.parentNode.getElementsByTagName('td')[0].getElementsByTagName('input')[0];
    var ddlProduct = source.parentNode.parentNode.getElementsByTagName('td')[1].getElementsByTagName('select')[0];
    var ddlPackage = source.parentNode.parentNode.getElementsByTagName('td')[2].getElementsByTagName('select')[0];
    var ddlGrade = source.parentNode.parentNode.getElementsByTagName('td')[3].getElementsByTagName('select')[0];
    var txtUnitPerPrice = source.parentNode.parentNode.getElementsByTagName('td')[4].getElementsByTagName('input')[0];

    if (((ddlGrade != undefined && ddlGrade.value != "") || txtUnit.value != "" || ddlProduct.value != "" || ddlPackage.value != "") && txtUnitPerPrice.value == "")
        args.IsValid = false;
    else    
        args.IsValid = true;
}

function SingleSelect(regex,current,cntrId){
    re = new RegExp(regex);
    var cntr = document.getElementById(cntrId);
    for(i = 0; i < cntr.elements.length; i++){
        elm = document.forms[0].elements[i];
        if (elm.type == 'checkbox'){
            if (re.test(elm.name)){
                elm.checked = false;
            }
        }
    }
    current.checked = true;
}

function HasTermsChecked(source, args){
    var chk = source.parentNode.getElementsByTagName('input')[0];
    if (chk.checked)
        args.IsValid = true;
    else
        args.IsValid = false;
}

function OnCustomValidatorChange(ctrlId,validatorId){
    var ctrl =  document.getElementById(ctrlId);
    var validator = document.getElementById(validatorId);
    if (ctrl.value != "" && ctrl.value != undefined && validator.style.display != "none")
        validator.style.display = "none";
}

function IsCustNumberRequired(source, args) {
    var rbCustType = document.getElementById(source.CustomerTypeId + "_0"); // Yes radio button
    var custNumber = document.getElementById(source.CustomerNumberId); // Customer Number textbox
    if (rbCustType.checked)
        args.IsValid = true;
    else {
        if (custNumber.value == "")
            args.IsValid = false;
        else
            args.IsValid = true;
    }
}

function CheckProductStatus(ddl) {
    var msg = "";
    var selIdx = ddl.selectedIndex;
    // Add message for treated soybean
    if (disableTreatedMsg.toLowerCase() == "false" && (ddl.options[selIdx].text.toLowerCase().indexOf("cruisermaxx") > -1 || ddl.options[selIdx].text.toLowerCase().indexOf("apronmaxx") > -1))
        msg = "Treatment may not be available with this product. Availability is subject to the number of units ordered as treated across the company and treatment capacity."

    if (ddl.options[selIdx].className == "3") // Sold out
    {
        msg = "This product is sold out. Select another product."
        alert(msg);
        ddl.selectedIndex = 0;
        ddl.focus();
    }
    else if (ddl.options[selIdx].className == "2") // Allocated
    {
        if (msg != "")
            msg = "This product is allocated and subject to confirmation by your DSM." + "\n\n" + msg;
        else
            msg = "This product is allocated and subject to confirmation by your DSM."
        alert(msg);
    }
    else if (msg != "") {
        alert(msg);
    }
}

function ShowCustomerDDL(rdo,ddlId){
    var ddl = document.getElementById(ddlId);
    if (rdo.value == "no"){
        ddl.style.display="";
        ddl.selectedIndex=0;
        ddl.focus();
    }
    else{
        var tName = document.getElementById(tCustNameId);
        var tNumber = document.getElementById(tCustNumberId);
        var tAddr = document.getElementById(tCustAddrId);
        var tCity = document.getElementById(tCityId);
        var ddlState = document.getElementById(ddlStateId);
        var tZip = document.getElementById(tZipId);
        var tPhone = document.getElementById(tPhoneId);
        var tTechNumber = document.getElementById(tTechNumberId);
        ddl.style.display="none";
        tNumber.value = '';
        tName.value = '';
        tAddr.value = '';
        tCity.value = '';
        ddlState.value = '';
        tZip.value = '';
        tPhone.value = '';
        tTechNumber.value='';
        tName.focus();
    }
}

function OnPackageChange(ddl){
    if (ddl.value == sBulkText || ddl.value == sSoyaBulkText)
        alert("In the unit field, put units in increments of 50");
}

// Customer page methods
function ShowCustomerInfo(ddl)
{
    if (ddl.value != "")
        GenericWebService.GetCustomerById(ddl.value,OnSucceeded,OnFailed);
    else
    {
        document.getElementById(tCustNumberId).value = "";
        document.getElementById(tCustNameId).value = "";
        document.getElementById(tCustAddrId).value = "";
        document.getElementById(tCityId).value = "";
        document.getElementById(ddlStateId).value = "";
        document.getElementById(tZipId).value = "";
        document.getElementById(tPhoneId).value = phoneFormat;
        document.getElementById(tCountyId).value = "";
        document.getElementById(tTechNumberId).value = "";
        document.getElementById(tASICustNumberId).value = "";
    }
}

function OnSucceeded(resCust){
    document.getElementById(tCustNumberId).value = trim(resCust[0]);
    document.getElementById(tCustNameId).value = trim(resCust[1]);
    document.getElementById(tCustAddrId).value = trim(resCust[2]);
    document.getElementById(tCityId).value = trim(resCust[3]);
    document.getElementById(ddlStateId).value = trim(resCust[4]);
    document.getElementById(tZipId).value = trim(resCust[5]);
    if (trim(resCust[6]) == "")
        document.getElementById(tPhoneId).value = phoneFormat;
    else
        document.getElementById(tPhoneId).value = trim(resCust[6]);
    document.getElementById(tCountyId).value = trim(resCust[7]);
    document.getElementById(tTechNumberId).value = trim(resCust[8]);
    document.getElementById(tASICustNumberId).value = trim(resCust[9]);
}

function GetDealerByUserRoleAndNumber(loggedInUsername, loggedInUserRole, dealerNo) { 
    if (dealerNo != "")
        GenericWebService.GetDealerByUserRoleAndNumber(loggedInUsername, loggedInUserRole, dealerNo, OnGetDealerSucceeded, OnFailed);
}

function OnGetDealerSucceeded(resDealer) {
    var tDealerName;
    if (trim(resDealer[0]) == "") {
        alert("Selected dealer does not belong to the current user profile, please enter a valid dealer number.");
        tDealerName = document.getElementById(tDealerNameId);
        tDealerName.value = "";
        var tDealerNo = document.getElementById(tDealerNoId);
        tDealerNo.focus();
    }
    else {
        tDealerName = document.getElementById(tDealerNameId);
        tDealerName.value = trim(resDealer[1]);
    }

    var bFetchDealerCustomers = document.getElementById(bFetchDealerCustomersId);
    bFetchDealerCustomers.click();
}


function OnFailed(error) {
   alert(error.get_message());
}

function trim(stringToTrim){
    if (stringToTrim == null)
        return "";
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function IsNullPhoneNumber(value){
    if (value == phoneFormat){
        return true;
    }
    else
      return false;
}

function ValidatePhone(source, args){
    args.IsValid = true;
    if (IsNullPhoneNumber(args.Value))
    {
        source.innerHTML = "required";
        return args.IsValid = false;
    }

    var pPart = args.Value.split("-");
    if (!IsNumeric(pPart[0]) || !IsNumeric(pPart[1]) || !IsNumeric(pPart[2]))
    {
        source.innerHTML = "invalid";
        return args.IsValid = false;
    }
}

function IsNumeric(sText){
    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;
    for (i = 0; i < sText.length && IsNumber == true; i++){
        Char = sText.charAt(i); 
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}

function IsInteger(s){
    return (s.toString().search(/^-?[0-9]+$/) == 0);
}

function roundNumber(num, dec) {
    var result = Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
    return result;
}
//Voucher Functions
function ShowOrgVoucher(item,txtId,spOrgVoucher) {
    var sp = document.getElementById(spOrgVoucher);
    var txt = document.getElementById(txtId);
    if (item.value == "new") {
        sp.style.display = "none";
        txt.value = "";
    }
    else {
        sp.style.display = "";
        txt.focus();
    }
}

function IsSBNIoRequired(source, args){
    var chkSbnIncrOrder = document.getElementById(chkSbnIncrOrderId);
    var txt = source.parentNode.parentNode.parentNode.getElementsByTagName('tr')[0].getElementsByTagName('td')[0].getElementsByTagName('input')[0];
    if (chkSbnIncrOrder.checked && txt.value == "")
        args.IsValid = false;
    else
        args.IsValid = true;
}

function IsCRNIoRequired(source, args){
    var chkCrnIncrOrder = document.getElementById(chkCrnIncrOrderId);
    var txt = source.parentNode.parentNode.parentNode.getElementsByTagName('tr')[0].getElementsByTagName('td')[0].getElementsByTagName('input')[0];
    if (chkCrnIncrOrder.checked && txt.value == "")
        args.IsValid = false;
    else
        args.IsValid = true;
}

function IsSBNNcRequired(source, args){
    var chkSbnNewCust = document.getElementById(chkSbnNewCustId);
    var txt = source.parentNode.parentNode.parentNode.getElementsByTagName('tr')[0].getElementsByTagName('td')[0].getElementsByTagName('input')[0];
    if (chkSbnNewCust.checked && txt.value == "")
        args.IsValid = false;
    else
        args.IsValid = true;
}

function IsCRNNcRequired(source, args){
    var chkCrnNewCust = document.getElementById(chkCrnNewCustId);
    var txt = source.parentNode.parentNode.parentNode.getElementsByTagName('tr')[0].getElementsByTagName('td')[0].getElementsByTagName('input')[0];
    if (chkCrnNewCust.checked && txt.value == "")
        args.IsValid = false;
    else
        args.IsValid = true;
}

function IsSBNHebRequired(source, args){
    var chkSbnHeb = document.getElementById(chkSbnHebId);
    var txt = source.parentNode.parentNode.parentNode.getElementsByTagName('tr')[0].getElementsByTagName('td')[0].getElementsByTagName('input')[0];
    if (chkSbnHeb.checked && txt.value == "")
        args.IsValid = false;
    else
        args.IsValid = true;
}

function IsCRNHebRequired(source, args){
    var chkCrnHeb = document.getElementById(chkCrnHebId);
    var txt = source.parentNode.parentNode.parentNode.getElementsByTagName('tr')[0].getElementsByTagName('td')[0].getElementsByTagName('input')[0];
    if (chkCrnHeb.checked && txt.value == "")
        args.IsValid = false;
    else
        args.IsValid = true;
}