// Init after dom is ready
window.addEvent('domready', function () {
    hide_all_selectors();
});

/**
 * Display the product image of choice
 */
function show_image(picname, bgname) {
    // Replace background
    var bg = (bgname != null) ? 'url(' + shop_base + 'img/folding_sleeves/350/' + bgname + ')' : 'none';
    $('product_main_image_div').setStyle('backgroundImage', bg);

    // Replace image
    $('product_main_image').src = shop_base + 'img/folding_sleeves/350/' + picname;
}

/**
 * Hide certain selectors from the menu's to be popped back up at the context position
 */
function hide_selector(id) {
    var sel = $(id);
    if (sel) sel.setStyle('display', 'none');
}

function hide_all_selectors() {
    hide_selector('choose_size_select');
    hide_selector('product_finder_select_brand');
    hide_selector('product_finder_select_category');
    //hide_selector('size_find');
}

/**
 * Display the selector for the product size at the correct position
 *
 * id: ID of the selector
 * align_to: ID of the object to align the selector to
 * relative_to: ID of the selectors parent
 */
function show_selector(id, align_to, xoffset) {
    var sel = $(id);
    if (sel == null) return;

    var pos = $(align_to).getPosition($(align_to).getParent());
    sel.setStyles({
        position: 'absolute',
        display: 'block',
        left: (pos.x + xoffset) + 'px',
        top: pos.y + 'px'
    });
}

/**
 * Display the selector for the product size at the correct position
 */
function show_size_selector() {
    var sel = $('choose_size_select');
    if (sel == null) return;
    var pos = $('choose_size_selected').getPosition($('center_container'));
    sel.setStyles({
        display: 'block',
        left: (pos.x + 117) + 'px',
        top: pos.y + 'px'
    });
}

/**
 * Checks if email has a valid format
 *
 * @return boolean
 */
function is_valid_email(email) {
    return /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(email);
}

/**
 * Checks if all data for a new account are supplied
 *
 * Adds class "missing_value" to fields with failed entries
 *
 * @return boolean
 */
function check_form_new_account() {
    var field, value;
    var msg = '';

    // Check email
    if (!is_valid_email($('email').value)) {
        msg += lang_msg['enter_valid_email'] + '\n';
        $('email').addClass('missing_value');
    } else {
        $('email').removeClass('missing_value');
    }

    // Check password and password repeat
    if ($('password').value.length < 5 || $('password').value != $('password_confirm').value) {
        msg += lang_msg['enter_password'] + '\n';
        $('password').addClass('missing_value');
        $('password_confirm').addClass('missing_value');
    } else {
        $('password').removeClass('missing_value');
        $('password_confirm').removeClass('missing_value');
    }

    // Check address fields.
    var to_check = ['firstname','lastname','address','zip','city','country','phone'];
    for (i in to_check) {
        if (typeof(to_check[i]) != 'string') continue;
        field = $(to_check[i]);
        if (field.tagName == 'INPUT' || field.tagName == 'TEXTAREA') field.value = field.value.trim();
        value = (field.tagName == 'SELECT') ? field.options[field.selectedIndex].value : field.value;
        if (value) {
            field.removeClass('missing_value');
        } else {
            field.addClass('missing_value');
            msg += lang_msg['enter_' + to_check[i]] + '\n';
        }
    }

    if (msg) alert(lang_msg['form_errors']);

    return msg == '';
}

/**
 * Check address form only
 *
 * Adds class "missing_value" to fields with failed entries
 *
 * @return boolean
 */
function check_form_address() {

    var field, value;
    var msg = '';

    // Check address fields.
    var to_check = ['firstname','lastname','address','zip','city','country','phone'];
    for (i in to_check) {
        if (typeof(to_check[i]) != 'string') continue;
        field = $(to_check[i]);
        if (field.tagName == 'INPUT' || field.tagName == 'TEXTAREA') field.value = field.value.trim();
        value = (field.tagName == 'SELECT') ? field.options[field.selectedIndex].value : field.value;
        if (value) {
            field.removeClass('missing_value');
        } else {
            field.addClass('missing_value');
            msg += lang_msg['enter_' + to_check[i]] + '\n';
        }
    }

    if (msg) alert(lang_msg['form_errors']);

    return msg == '';
}

/**
 * Checks if conditions are accepted
 *
 * @return boolean
 */
function check_form_place_order() {
    if ($('confirm_conditions').checked) return true;
    alert(lang_msg['please_accept_conditions']);
    return false;
}

/**
 * Update state drop down depending on nation selection
 */
function set_states(field_country, field_state, state) {
    // Retrieve country code from nation selection
    var country = field_country.options[field_country.selectedIndex].value;

    // Field name for setting visibility
    var div_base_name = field_state.name;

    // Hide state field if nations does not use states
    if (typeof(states[country]) != 'object') {
        field_state.selectedIndex = 0;
        $(div_base_name + '_caption').setStyle('visibility', 'hidden');
        $(div_base_name + '_field').setStyle('visibility', 'hidden');
        return;
    }

    // States are needed: show state field
    $(div_base_name + '_caption').setStyle('visibility', 'visible');
    $(div_base_name + '_field').setStyle('visibility', 'visible');

    var state_value = (state) ? state : field_state.options[field_state.selectedIndex].value;
    field_state.length = states[country].length+1;
    field_state.selectedIndex = 0;
    for (var i = 0; i < states[country].length; i++) {
        field_state.options[i+1].value = states[country][i]['id'];
        field_state.options[i+1].text  = states[country][i]['name'];
        if (state_value == states[country][i]['id']) field_state.selectedIndex = i+1;
    }

    return;
}

function openwin(url) {
    window.open(url, 'agb', 'width=950;height=680;location=no;menubar=no;status=no;toolbar=no;');
}

function find_my_size(mode) {
    $('size_find').setStyle('display', mode);
    if (mode == 'block') CSBfleXcroll('size_find');
}
