// JS for Fleshlight Configurator

var color = 0;
var orifice = 0;
var texture = 0;
var casecolor = 0;

function update_color() {
    // set current orifice color (pink, ice)
    for (i=0; i < $('flc_form').color.length; i++) {
        if ($('flc_form').color[i].checked) {
            color = $('flc_form').color[i].value;
        }
    }
    switch (color) {
    case 'pink':
        color = 0;
        $('selected_color').value = 2;
        break;
    case 'ice':
        color = 80;
        $('selected_color').value = 19;
        break;
    }
}

/**
 * Sets the orifice to given value (butt, mouth etc.)
 * and resets to currently selected option if no value is given
 */
function flc_orifice(switchto_orifice) {
    var current_orifice = null;
    if (switchto_orifice === undefined) {
        // no value given? set to currently checked
        for (i=0; i < $('flc_form').orifice.length; i++) {
            if ($('flc_form').orifice[i].checked) {
                current_orifice = $('flc_form').orifice[i].value;
                break;
            }
        }
        if (current_orifice === null) {
            switchto_orifice = 0;
        } else {
            switchto_orifice = current_orifice;
        }
    }
    switch (switchto_orifice) {
    case 'lady':
        orifice = 90;
        $('selected_orifice').value = 5;
        break;
    case 'butt':
        orifice = 410;
        $('selected_orifice').value = 4;
        break;
    case 'mouth':
        orifice = 330;
        $('selected_orifice').value = 6;
        break;
    case 'nondescript':
        orifice = 250;
        $('selected_orifice').value = 3;
        break;
    default:
        orifice = 0;
        $('selected_orifice').value = 5; // default to lady
    }
    update_view();
}

/**
 * Sets the texture to given value (original, vortex etc.)
 * and resets to currently selected option if no value is given
 */
function flc_texture(switchto_texture) {
    var current_texture = null;
    if (switchto_texture === undefined) {
        // no value given? set to currently checked
        for (i=0; i < $('flc_form').texture.length; i++) {
            if ($('flc_form').texture[i].checked) {
                current_texture = $('flc_form').texture[i].value;
                break;
            }
        }
        if (current_texture === null) {
            switchto_texture = 0;
        } else {
            switchto_texture = current_texture;
        }
    }
    switch (switchto_texture) {
    case 'original':
        texture = 90;
        $('selected_texture').value = 11;
        break;
    case 'supertight':
        texture = 173;
        $('selected_texture').value = 9;
        break;
    case 'ultratight':
        texture = 255;
        $('selected_texture').value = 15;
        break;
    case 'superribbed':
        texture = 336;
        $('selected_texture').value = 8;
        break;
    case 'wonderwave':
        texture = 418;
        $('selected_texture').value = 10;
        break;
    case 'speedbump':
        texture = 501;
        $('selected_texture').value = 7;
        break;
    case 'vortex':
        texture = 583;
        // :TODO: vortex muss noch angelegt werden im Shop, und die ID muss hier rein
        $('selected_texture').value = 25;
        break;
    default:
        texture = 0;
    }
    update_view();
}

/**
 * Sets the texture to given value (original, vortex etc.)
 * and resets to currently selected option if no value is given
 */
function flc_casecolor(switchto_casecolor) {
    var current_casecolor = null;
    if (switchto_casecolor === undefined) {
        // no value given? set to currently checked
        for (i=0; i < $('flc_form').casecolor.length; i++) {
            if ($('flc_form').casecolor[i].checked) {
                current_casecolor = $('flc_form').casecolor[i].value;
                break;
            }
        }
        if (current_casecolor === null) {
            switchto_casecolor = 0;
        } else {
            switchto_casecolor = current_casecolor;
        }
    }
    switch (switchto_casecolor) {
    case 'black':
        casecolor = 90;
        $('selected_case').value = 14;
        break;
    case 'ice':
        casecolor = 260;
        $('selected_case').value = 13;
        break;
    case 'silver':
        casecolor = 600;
        $('selected_case').value = 12;
        break;
    default:
        casecolor = 0;
    }
    update_view();
}

/**
 * Updates all images to their current values
 */
function update_view() {
    update_color();
    //
    // orifice
    //
    if (orifice == 0) {
        // no orifice? display "choose" text
        orifice_color = 0;
    } else {
        orifice_color = color;
    }
    $('img-orifice').setStyle({
            backgroundPosition: orifice_color+'px -'+orifice+'px'
    });
    //
    // texture
    //
    if (texture == 0) {
        // no texture? display "choose" text
        texture_color = 0;
    } else {
        texture_color = color;
    }
    $('img-texture').setStyle({
            backgroundPosition: texture_color+'px -'+texture+'px'
    });
    //
    // casecolor
    //
    // if none is set, resize to appropriate height
    if (casecolor == 0) {
        $('img-casecolor').setStyle({
                height: '80px'
        });
    } else {
        $('img-casecolor').setStyle({
                height: '170px'
        });
    }
    $('img-casecolor').setStyle({
            backgroundPosition: '0 -'+casecolor+'px'
    });
}

/**
 * Checks if orifice+texture+case are set to valid values
 */
function check_flc_form() {
    var casecolor = false;
    var texture = false;
    var orifice = false;
    // Check case
    for (i=0; i < $('flc_form').casecolor.length; i++) {
        if ($('flc_form').casecolor[i].checked) {
            casecolor = true;
            break;
        }
    }
    // Check texture
    for (i=0; i < $('flc_form').texture.length; i++) {
        if ($('flc_form').texture[i].checked) {
            texture = true;
            break;
        }
    }
    // Check orifice
    var check = false;
    for (i=0; i < $('flc_form').orifice.length; i++) {
        if ($('flc_form').orifice[i].checked) {
            orifice = true;
            break;
        }
    }
    // everything checked? go!
    if (casecolor && texture && orifice) {
        return true;
    }
    // no? ok, build error message
    var error = '';
    if ( ! orifice) {
        error += "Bitte wählen Sie eine Öffnung.\n";
    }
    if ( ! texture) {
        error += "Bitte wählen Sie eine Struktur.\n";
    }
    if ( ! casecolor) {
        error += "Bitte wählen Sie eine Gehäusefarbe.\n";
    }
    alert(error);
    return false;
}
