// declare global variables
var meas_height;
var meas_torso;
var meas_shoulder;
var meas_inseam;
var meas_arm;
var meas_angle;
var meas_crank;

function setValue(cat, cat_value) {
    switch (cat) {
        case "a": meas_height = cat_value;
            break;
        case "b": meas_torso = cat_value;
            break;
        case "c": meas_shoulder = cat_value;
            break;
        case "d": meas_inseam = cat_value;
            break;
        case "e": meas_arm = cat_value;
            break;
        case "f": meas_angle = cat_value;
            break;
        case "g": meas_crank = cat_value;
            break;
    }
} 

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 bf_height() {

    if (IsNumeric(document.getElementById("bf_input_height").value) == false) {
        alert('Your height must be a number.  Please correct before continuing!');
    }
    else {
        if(document.getElementById("bf_input_height").value == ""){
            alert('You must enter a value for your height before continuing!');
        }
        else {
            setValue("a", document.getElementById("bf_input_height").value);
            
            document.getElementById("bf_height").style.display = "none";
            document.getElementById("bf_torso").style.display = "block";
            document.getElementById("bf_image").src = "images/bf_torso.jpg";

            if (document.all) {
                document.getElementById("bf_meas_height").innerText = document.getElementById("bf_input_height").value + " cm";
                }
            else {
                document.getElementById("bf_meas_height").textContent = document.getElementById("bf_input_height").value + " cm";
            }
        }
    }
}


function bf_torso() {
    if (IsNumeric(document.getElementById("bf_input_torso").value) == false) {
        alert('Your torso height must be a number.  Please correct before continuing!');
    }
    else {
        if (document.getElementById("bf_input_torso").value == "") {
            alert('You must enter a value for your torso height before continuing!');
        }
        else {
            setValue("b", document.getElementById("bf_input_torso").value);
            document.getElementById("bf_torso").style.display = "none";
            document.getElementById("bf_shoulder").style.display = "block";
            document.getElementById("bf_image").src = "images/bf_shoulder.jpg";

            if (document.all) {
                document.getElementById("bf_meas_torso").innerText = document.getElementById("bf_input_torso").value + " cm";
            }
            else {
                document.getElementById("bf_meas_torso").textContent = document.getElementById("bf_input_torso").value + " cm";
            }
        }
    }
}


function bf_shoulder() {
    if (IsNumeric(document.getElementById("bf_input_shoulder").value) == false) {
        alert('Your shoulder width must be a number.  Please correct before continuing!');
    }
    else {
        if (document.getElementById("bf_input_shoulder").value == "") {
            alert('You must enter a value for your shoulder width before continuing!');
        }
        else {
            setValue("c", document.getElementById("bf_input_shoulder").value);
            document.getElementById("bf_shoulder").style.display = "none";
            document.getElementById("bf_inseam").style.display = "block";
            document.getElementById("bf_image").src = "images/bf_inseam.jpg";

            if (document.all) {
                document.getElementById("bf_meas_shoulder").innerText = document.getElementById("bf_input_shoulder").value + " cm";
            }
            else {
                document.getElementById("bf_meas_shoulder").textContent = document.getElementById("bf_input_shoulder").value + " cm";
            }
        }
    }
}

function bf_inseam() {
    var inseam = document.getElementById("bf_input_inseam").value;
    if (IsNumeric(inseam) == false) {
        alert('Your inseam length must be a number.  Please correct before continuing!');
    }
    else {
        if (inseam == "") {
            alert('You must enter a value for your inseam before continuing!');
        }
        else {
            setValue("d", inseam);
            document.getElementById("bf_inseam").style.display = "none";
            document.getElementById("bf_arm").style.display = "block";
            document.getElementById("bf_image").src = "images/bf_arm.jpg";

            var sug_cranklength = inseam * 2.16;
            if (inseam > 94) {
                document.getElementById("bf_input_crank").options[9].selected = true;
            }
            else if (inseam >= 91) {
                document.getElementById("bf_input_crank").options[8].selected = true;
            }
            else if (inseam >= 87) {
                document.getElementById("bf_input_crank").options[7].selected = true;
            }
            else if (inseam >= 83) {
                document.getElementById("bf_input_crank").options[6].selected = true;
            }
            else if (inseam >= 82) {
                document.getElementById("bf_input_crank").options[5].selected = true;
            }
            else if (inseam >= 79) {
                document.getElementById("bf_input_crank").options[4].selected = true;
            }
            else if (inseam >= 75) {
                document.getElementById("bf_input_crank").options[3].selected = true;
            }
            else if (inseam >= 72) {
                document.getElementById("bf_input_crank").options[2].selected = true;
            }
            else if (inseam >= 66) {
                document.getElementById("bf_input_crank").options[1].selected = true;
            }
            else if (inseam >= 60) {
                document.getElementById("bf_input_crank").options[0].selected = true;
            }
           

            if (document.all) {
                document.getElementById("bf_meas_inseam").innerText = document.getElementById("bf_input_inseam").value + " cm";
            }
            else {
                document.getElementById("bf_meas_inseam").textContent = document.getElementById("bf_input_inseam").value + " cm";
            }
        }
    }
}

function bf_arm() {
    if (IsNumeric(document.getElementById("bf_input_arm").value) == false) {
        alert('Your arm length must be a number.  Please correct before continuing!');
    }
    else {
        if (document.getElementById("bf_input_arm").value == "") {
            alert('You must enter a value for your arm length before continuing!');
        }
        else {
            setValue("e", document.getElementById("bf_input_arm").value);

            document.getElementById("bf_arm").style.display = "none";
            document.getElementById("bf_angle").style.display = "block";
            document.getElementById("bf_image").src = "images/bf_all.jpg";

            if (document.all) {
                document.getElementById("bf_meas_arm").innerText = document.getElementById("bf_input_arm").value + " cm";
            }
            else {
                document.getElementById("bf_meas_arm").textContent = document.getElementById("bf_input_arm").value + " cm";
            }
        }
    }
}


function bf_angle() {
        setValue("f", document.getElementById("bf_input_angle").options[document.getElementById("bf_input_angle").selectedIndex].text);
        document.getElementById("bf_angle").style.display = "none";
        document.getElementById("bf_crank").style.display = "block";
        document.getElementById("bf_image").src = "images/bf_all.jpg";

        if (document.all) {
            document.getElementById("bf_meas_angle").innerText = document.getElementById("bf_input_angle").options[document.getElementById("bf_input_angle").selectedIndex].text;
        }
        else {
            document.getElementById("bf_meas_angle").textContent = document.getElementById("bf_input_angle").options[document.getElementById("bf_input_angle").selectedIndex].text;
        }
  
    // if track then decrease crank suggestion by 5mm
	
}

function bf_crank() {

    setValue("g", document.getElementById("bf_input_crank").options[document.getElementById("bf_input_crank").selectedIndex].text);

    document.getElementById("bf_crank").style.display = "none";
    document.getElementById("bf_results").style.display = "block";
    document.getElementById("bf_image").src = "images/bf_all.jpg";




    if (document.all) {
        document.getElementById("bf_meas_crank").innerText = document.getElementById("bf_input_crank").options[document.getElementById("bf_input_crank").selectedIndex].text;
    }
    else {
        document.getElementById("bf_meas_crank").textContent = document.getElementById("bf_input_crank").options[document.getElementById("bf_input_crank").selectedIndex].text;
    }
    
	calc_geometry();
}


function calc_geometry() {

    var saddleLength = 28;
    var saddleHeight = meas_inseam * 1.09;
    var riderTorso = meas_torso - meas_inseam;
    var handlebarReach = ((parseFloat(riderTorso) + parseFloat(meas_arm)) / 2) + 4;
    var handlebarWidth = meas_shoulder;
    var toptubeLength = handlebarReach - 10;
    var stemLength = 100;
    var frameHeight = toptubeLength;

    var crankLength = meas_crank.substring(0, meas_crank.length - 3)/10;
    saddleHeight = Math.round((saddleHeight - crankLength)*10)/10;

    var seatAngle;
    var radConversion = Math.PI / 180;
    
    switch (meas_angle) {
        case "Road": seatAngle = 73.5 * radConversion;
            break;
        case "Criteriums": seatAngle = 74.5 * radConversion;
            break;
        case "Time Trial": seatAngle = 75 * radConversion;
            toptubeLength = toptubeLength - 2;
            frameHeight = frameHeight - 2;
            break;
        case "Track": seatAngle = 75 * radConversion;
            break;
    }

    var seatSetBack = Math.round((Math.cos(seatAngle) * saddleHeight - (saddleLength/2))*10)/10;
    if (seatSetBack < 5) {
        seatSetBack = 5;
    }

    //alert("Tob Tube: " + toptubeLength);
   // alert("Frame Size: " + frameHeight);


    //alert("Seat Height: " + saddleHeight);
    //alert("Setback: " + seatSetBack);
    
   // alert("Total Reach: " + handlebarReach);
    //alert("Stem: " + stemLength);
    //alert("Handlebar Width: " + handlebarWidth);
    
    //alert("Cranks: " + crankLength);
    
    if (document.all) {
        document.getElementById("bf_results_table_frame").innerText = frameHeight + "cm";
                document.getElementById("bf_results_table_toptube").innerText = toptubeLength + "cm";
                document.getElementById("bf_results_table_stem").innerText = stemLength + "mm";
                document.getElementById("bf_results_table_handlebar").innerText = handlebarWidth + "cm";
                document.getElementById("bf_results_table_seat").innerText = saddleHeight + "cm";
                document.getElementById("bf_results_table_setback").innerText = seatSetBack + "cm";

                document.getElementById("bf_results_img_frame").innerText = frameHeight + "cm";
                document.getElementById("bf_results_img_toptube").innerText = toptubeLength + "cm";
                document.getElementById("bf_results_img_stem").innerText = stemLength + "mm";
                document.getElementById("bf_results_img_seatheight").innerText = saddleHeight + "cm";
                document.getElementById("bf_results_img_setback").innerText = seatSetBack + "cm";
                document.getElementById("bf_results_img_crank").innerText = (crankLength * 10) + "mm";
                document.getElementById("bf_results_img_handlebar").innerText = handlebarWidth + "cm";
            }
            else {
                document.getElementById("bf_results_table_frame").textContent = frameHeight + "cm";
                document.getElementById("bf_results_table_toptube").textContent = toptubeLength + "cm";
                document.getElementById("bf_results_table_stem").textContent = stemLength + "mm";
                document.getElementById("bf_results_table_handlebar").textContent = handlebarWidth + "cm";
                document.getElementById("bf_results_table_seat").textContent = saddleHeight + "cm";
                document.getElementById("bf_results_table_setback").textContent = seatSetBack + "cm";

                document.getElementById("bf_results_img_frame").textContent = frameHeight + "cm";
                document.getElementById("bf_results_img_toptube").textContent = toptubeLength + "cm";
                document.getElementById("bf_results_img_stem").textContent = stemLength + "mm";
                document.getElementById("bf_results_img_seatheight").textContent = saddleHeight + "cm";
                document.getElementById("bf_results_img_setback").textContent = seatSetBack + "cm";
                document.getElementById("bf_results_img_crank").textContent = (crankLength*10) + "mm";
                document.getElementById("bf_results_img_handlebar").textContent = handlebarWidth + "cm";
            }
            window.scroll(0, 580);

}

function clear_bf() {

    // reset fieldset views
    document.getElementById("bf_height").style.display = "block";
    document.getElementById("bf_torso").style.display = "none";
    document.getElementById("bf_shoulder").style.display = "none";
    document.getElementById("bf_inseam").style.display = "none";
    document.getElementById("bf_arm").style.display = "none";
    document.getElementById("bf_angle").style.display = "none";
    document.getElementById("bf_crank").style.display = "none";
    document.getElementById("bf_results").style.display = "none";
    
    //reset image
    document.getElementById("bf_image").src = "images/bf_height.jpg";


    // reset measurements table
    if (document.all) {
        document.getElementById("bf_meas_height").innerText = "";
        document.getElementById("bf_meas_torso").innerText = "";
        document.getElementById("bf_meas_shoulder").innerText = "";
        document.getElementById("bf_meas_inseam").innerText = "";
        document.getElementById("bf_meas_arm").innerText = "";
        document.getElementById("bf_meas_angle").innerText = "";
        document.getElementById("bf_meas_crank").innerText = "";
    }
    else {
        document.getElementById("bf_meas_height").textContent = "";
        document.getElementById("bf_meas_torso").textContent = "";
        document.getElementById("bf_meas_shoulder").textContent = "";
        document.getElementById("bf_meas_inseam").textContent = "";
        document.getElementById("bf_meas_arm").textContent = "";
        document.getElementById("bf_meas_angle").textContent = "";
        document.getElementById("bf_meas_crank").textContent = "";
    }

    // reset inputs
    document.getElementById("bf_input_height").value = "";
    document.getElementById("bf_input_torso").value = "";
    document.getElementById("bf_input_shoulder").value = "";
    document.getElementById("bf_input_inseam").value = "";
    document.getElementById("bf_input_arm").value = "";
    document.getElementById("bf_input_crank").options[0].selected = true;
    document.getElementById("bf_input_angle").options[0].selected = true;
    
    // reset variables
    meas_height = 0;
    meas_torso = 0;
    meas_shoulder = 0;
    meas_inseam = 0;
    meas_arm = 0;
    meas_angle = "";
    meas_crank = "";


}
