// <![CDATA[
//Matthew Scherf - www.jostherapies.com.au -
//May be reused without permission as long as this message is intact
//Script to generate a Random 6 Digit Customer Reference Number
//Passes Mod10v01

function genCRN(OrderID) {

    //ensure that the number is five digits long

    crn = new String(OrderID);

    crn = trimAll(crn);

    if (crn.length == 1) {
        crn = "0000" + crn;
    }
    else if (crn.length == 2) {
        crn = "000" + crn;
    }
    else if (crn.length == 3) {
        crn = "00" + crn;
    }
    else if (crn.length == 4) {
        crn = "0" + crn;
    }
    else if ((crn.length == 0) || (crn.length > 5)) {
        return "";
    }

    //take each digit of the number string

    var num1 = (crn.substring(0, 1)) * 2;
    var num2 = (crn.substring(1, 2)) * 1;
    var num3 = (crn.substring(2, 3)) * 2;
    var num4 = (crn.substring(3, 4)) * 1;
    var num5 = (crn.substring(4, 5)) * 2;

    //take the odd digits and convert them to strings

    num1str = new String(num1);
    num3str = new String(num3);
    num5str = new String(num5);

    //new variable to take string length - value is either 1 or 2

    num1len = num1str.length;
    num3len = num3str.length;
    num5len = num5str.length;

    //breaks the string down into it's parts if it's two digits long
    //also converts string back to integer by multiplying by one

    if (num1len = 2) {
        var num1substr1 = (num1str.substring(0, 1)) * 1;
        var num1substr2 = (num1str.substring(1, 2)) * 1;
        var num1tot = num1substr1 + num1substr2;
    }

    if (num3len = 2) {
        var num3substr1 = (num3str.substring(0, 1)) * 1;
        var num3substr2 = (num3str.substring(1, 2)) * 1;
        var num3tot = num3substr1 + num3substr2;
    }

    if (num5len = 2) {
        var num5substr1 = (num5str.substring(0, 1)) * 1;
        var num5substr2 = (num5str.substring(1, 2)) * 1;
        var num5tot = num5substr1 + num5substr2;
    }


    //convert string back to number

    var sumpart1 = num1 * 1;
    var sumpart2 = num2 * 1;
    var sumpart3 = num3 * 1;
    var sumpart4 = num4 * 1;
    var sumpart5 = num5 * 1;

    //declare the sum variable, sum the parts, divide them by ten

    sum = (num1tot + sumpart2 + num3tot + sumpart4 + num5tot);
    divided = sum / 10;


    //convert var to string

    divstr = divided.toString();
    rem = (divstr.substring(2, 3)) * 1;

    //subtract remainder from 10 to get check digit, after checking that the remainder isn't zero

    if (rem == 0) { rem = 10 }
    digit = 10 - rem;

    //convert checkdigit back to string

    digitstr = new String(digit);

    //add check digit to crn

    refno = new String(crn + digitstr);

    //write out hidden form field to pass to server on submit
    //document.write("<input type='hidden' name='refno' value=\"" + refno + "\"/>");
    //var crn_field = document.getElementById("BpayCRN");
    //    if (crn_field != null) { crn_field.value = refno; }
    return refno;
}

function trimAll(sString) {
    while (sString.substring(0, 1) == ' ') {
        sString = sString.substring(1, sString.length);
    }
    while (sString.substring(sString.length - 1, sString.length) == ' ') {
        sString = sString.substring(0, sString.length - 1);
    }
    return sString;
}
