is_design_page = true;
var urlbase;
var fabric_part = 'all';
var last_button = '';
var PNGfix = /MSIE (5\.5|6\.)/.test(navigator.appVersion);

var shirt = {};
var last_imgs = {};
var last_photos = {};

//Заглушки
var dummyProps1 = ['collarFabric', 'fasteningFabric', 'fasteningThreadsFabric', 'pocketsFabric', 'epaulettesFabric', 'backPleatsFabric'];

var dummyProps2 = ['collarStandFabric', 'fasteningButtonsFabric', 'cuffTurnFabric'];

function asciionly (e) {
    var keynum;
    var keychar;
    var numcheck;

    if (window.event) { // IE
        keynum = e.keyCode;
    } else if (e.which) { // Netscape/Firefox/Opera
        keynum = e.which;
    }
    keychar = String.fromCharCode(keynum);
    //numcheck = /[\x00-\x7e]/;
    numcheck = /[-!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~\w\sА-Яа-яЁё\x08]/;
    return numcheck.test(keychar);
}

function attr_type (attr) {
    return productAttr.shirt[attr].attr.attrType;
}

function attr_default (attr) {
    var def_val = productAttr.shirt[attr].attr.defaultValue;
    if (def_val == '' || productAttr.shirt[attr].values[def_val])
        return (def_val);
    for (def_val in productAttr.shirt[attr].values)
        return (def_val);
    alert ('Oops, nothing found in ' + attr);
}

function calc_title () {
    var a = productName + '. ';
    a += productAttr.shirt.fabric.attr.displayName + ' ' + productAttr.shirt.fabric.values[shirt.fabric].shortName + '. ';
    a += productAttr.shirt.volume.values[shirt.volume].displayName + '. ';
    a += productAttr.shirt.collar.values[shirt.collar].displayName + '. ';
    a += productAttr.shirt.sleeve.values[shirt.sleeve].displayName + '. ';
    if (shirt.sleeve == 'sleeveLong' || shirt.sleeve == 'sleeveLongNarrow')
        a += productAttr.shirt.cuff.values[shirt.cuff].displayName + '. ';
    a += productAttr.shirt.embroidery.values[shirt.embroidery].displayName + '. ';
    document.title = a;
}

function set_attr_defaults () {
    var a = productAttr.shirt;
    var g = typeof (gallery_shirt) != 'undefined';
    for (i in a) {
        deselect_icon (i);
        if (g && gallery_shirt[i] && a[i].values)
            if (a[i].values[gallery_shirt[i]])
                shirt[i] = gallery_shirt[i];
            else {
                if (dummyProps1.indexOf(i) == -1 && dummyProps2.indexOf(i) == -1) {
                    myalert ('Извините. Позиция "' + a[i].attr.displayName + ' ' + gallery_shirt[i] + '" уже недоступна для заказа.');
                }
                shirt[i] = attr_default (i);
            }
        else
            shirt[i] = attr_default (i);
    }
    delete shirt.stdSize;
    delete shirt.waistLengthFront;
    delete shirt.shoulderHeightFront;
    if(!shirt.model) {
        delete shirt.waistLengthBack;
    }
    delete shirt.shoulderHeightBack;
}

function show_part (part) {
    var e = elt('img_' + part);
    show_item ('img_' + part);
    if (PNGfix && e.filters.length)
        e.filters.item(0).enabled = true;
}

function hide_part (part) {
    var e = elt('img_' + part);
    if (PNGfix && e.filters.length)
        e.filters.item(0).enabled = false;
    hide_item ('img_' + part);
}

function change_part (part, name) {
    var url = urlbase + name + '.png';
    var e = elt('img_' + part);

    if (last_imgs[part] == url)
        return;

    if (PNGfix)
        if (e.filters.length)
            e.filters.item(0).src = url;
        else
            e.style.filter =
            "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"
            + url + "')";
    else
        e.src = url;

    last_imgs[part] = url;
}

function change_part_buttons (part, name) {
    change_part ('buttons_' + part, '../../buttons/' + shirt.buttons + '/buttons_' + name);
}

function change_part_buttonsThread (part, name) {
    if (currentProductAttr.buttons.values[product.buttons].auxData1 == 'buttonTypeSnap') {
        hide_part ('buttonsThread_' + part );
        //alert('hide ' + part);
    } else {
        var threadPart = 'buttonsThread_' + part;
        change_part (threadPart, '../../threads/' + shirt.buttonsThread + '/buttonsThread_' + name);
        show_part (threadPart);
        //alert('show ' + threadPart);
    }
}

function change_button_text (attr, val) {
    if (elt('button_' + attr).className != 'disabled')
        write_inner ('button_' + attr, productAttr.shirt[attr].values[val].shortName);
}

function enable_button (item, val) {
    if (elt('button_' + item).className == 'disabled')
        elt('button_' + item).className = '';
    change_button_text (item, val);
}

function disable_button (item) {
    elt('button_' + item).className = 'disabled';
    write_inner ('button_' + item, '---');
}

function attr_cost (attr) {
    return (currentProductAttr[attr] && currentProductAttr[attr].attr ? currentProductAttr[attr].attr.price : 0 );
}

function write_attr_cost (attr, id) {
    write_inner (attr + '_' + id, '(+' + attr_cost (attr) + 'p)');
}

function attr_value_cost (attr, val) {
    return (currentProductAttr[attr] && currentProductAttr[attr].values ? currentProductAttr[attr].values[val].price : 0);
}

function write_cost (attr, val) {
    write_inner (val + '_cost', '(+' + attr_value_cost (attr, val) + 'p)');
}

function get_cost (attr) {
    var a = attr_cost (attr);
    if (a == 0)
        return (parseInt (attr_value_cost (attr, shirt[attr])));
    else if (shirt[attr] == attr_default (attr))
        return (0);
    else
        return (parseInt (a));
}

function calc_price () {
    var price = 0;
    price += get_cost ('fabric');
    // * ((shirt.sleeve == 'sleeveShort' || shirt.sleeve == 'sleeveShortCuff') && ! /-test/i.test(shirt.fabric) ? 0.88 : 1);
    price += get_cost ('pocket');
    price += shirt.pocket == 'pocketNone' ? 0 : get_cost ('pocketFlap');
    if (!shirt.embroidery.match(/none$/i) ) {
        price += get_cost('embroideryVariant');
        price += get_cost(shirt.embroideryVariant);
    }
    price += get_cost ('buttons');
    price += get_cost ('buttonsThread');
    price += get_cost ('epaulettes');
    price += shirt.fabric == shirt.contrastFabric ? 0 : parseInt (attr_cost ('contrastFabric'));
    price += get_cost ('collarBone');
    price += get_cost ('collarButtons');
    price += get_cost ('collar');
    price += get_cost ('ladiesShirtType');
    // price *= shirt.sleeve == 'sleeveShort' || shirt.sleeve == 'sleeveShortCuff' ? 0.88 : 1;

    var fabricItem = productAttr.shirt['fabric'].values[shirt.fabric];
    var fabricDiscount = parseFloat(fabricItem.discount);
    var fabricOrigPrice = parseFloat(fabricItem.price);
    if (fabricDiscount > 0) {
        price -= Math.round(fabricOrigPrice * fabricDiscount/100);
        // show_item ('ny_discount');
    } // else
        // hide_item ('ny_discount');
    write_inner ('design_price', String (parseInt (price)));
}

function change_body () {
    var name = shirt.model ? shirt.model + '_' : '';
    change_button_text ('volume', shirt.volume);
    change_button_text ('bottomCut', shirt.bottomCut);
    change_part ('body', name +  shirt.volume + '_' + shirt.bottomCut);
}

function change_volume () {
    if (shirt.volume == 'volumeFree' && shirt.sleeve == 'sleeveLongNarrow') {
        myalert ('Несовместимо с узким рукавом, выбор рукава будет изменен.');
        select_icon ('sleeve', attr_default ('sleeve'));
    }
    change_body ();
    if (productType == 'shirt' && shirt.volume == 'volumeSlim') {
        select_icon ('backPleats', attr_default ('backPleats'));
        disable_button ('backPleats');
    } else
        enable_button ('backPleats', shirt.backPleats);
    calc_title ();
}

function change_bottomCut () {
    change_body ();
}

function change_sleeve () {
    if (shirt.volume == 'volumeFree' && shirt.sleeve == 'sleeveLongNarrow') {
        myalert ('Несовместимо со свободным объемом');
        select_icon ('sleeve', attr_default ('sleeve'));
        return;
    }
    change_part ('sleeve_right', shirt.sleeve + '_right');
    change_part ('sleeve_left', shirt.sleeve + '_left');
    change_button_text ('sleeve', shirt.sleeve);
    change_cuff ();
    if (shirt.embroidery == 'embroideryAtCuff' && (shirt.sleeve == 'sleeveShortCuff' || shirt.sleeve == 'sleeveShort' || shirt.sleeve == 'sleeveSafari'))
        select_icon ('embroidery', attr_default ('embroidery'));
    calc_price ();
    calc_title ();
}

function change_flap () {
    if (shirt.pocket == 'pocketNone') {
        disable_ckbox ('pocketFlap');
        disable_ckbox ('pocketFlap2');
    } else {
        enable_ckbox ('pocketFlap', shirt.pocketFlap);
        enable_ckbox ('pocketFlap2', shirt.pocketFlap);
    }
    calc_price ();
    if (shirt.pocket == 'pocketNone' || shirt.pocketFlap == 'false') {
        hide_part ('buttons_pocket');
        hide_part ('buttonsThread_pocket');
        hide_part ('flap');
        return;
    }
    show_part ('flap');
    show_part ('buttonsThread_pocket');
    show_part ('buttons_pocket');
    switch (shirt.pocket) {
        case 'pocketLeft':
        case 'pocketLeftRound':
            change_part ('flap', 'flapLeft');
            change_part_buttonsThread ('pocket', 'pocketLeft');
            change_part_buttons ('pocket', 'pocketLeft');
            break;
        case 'pocketBoth':
        case 'pocketBothRound':
            change_part ('flap', 'flapBoth');
            change_part_buttonsThread ('pocket', 'pocketBoth');
            change_part_buttons ('pocket', 'pocketBoth');
            break;
    }
}

function change_pocket () {
    switch (shirt.pocket) {
        case 'pocketNone':
            hide_part ('pocket');
            if (shirt.embroidery == 'embroideryAtPocket')
                select_icon ('embroidery', attr_default ('embroidery'));
            break;
        case 'pocketLeft':
            show_part ('pocket');
            change_part ('pocket', 'pocketLeft');
            break;
        case 'pocketBoth':
            show_part ('pocket');
            change_part ('pocket', 'pocketBoth');
            break;
        case 'pocketLeftRound':
            show_part ('pocket');
            change_part ('pocket', 'pocketLeftRound');
            break;
        case 'pocketBothRound':
            show_part ('pocket');
            change_part ('pocket', 'pocketBothRound');
            break;
    }
    change_button_text ('pocket', shirt.pocket);
    change_flap ();
}

function change_epaulettes () {
    enable_ckbox ('epaulettes', shirt.epaulettes);
    if (shirt.epaulettes == 'true') {
        show_part ('epaulettes');
        change_part ('epaulettes', 'epaulettes');
        show_part ('buttons_epaulettes');
        change_part_buttons ('epaulettes', 'epaulettes');
    } else {
        hide_part ('buttons_epaulettes');
        hide_part ('epaulettes');
    }
    calc_price ();
}

function change_fabric () {
    urlbase = design_base + shirt.fabric + '/';
    change_button_text ('fabric', shirt.fabric);
    select_icon ('volume', shirt.volume);
    select_icon ('collar', shirt.collar);
    select_icon ('sleeve', shirt.sleeve);
    select_icon ('cuff', shirt.cuff);
    select_icon ('fastening', shirt.fastening);
    select_icon ('pocket', shirt.pocket);
    select_icon ('bottomCut', shirt.bottomCut);
    change_flap ();
    change_epaulettes ();
    change_part ('fabric', 'fabric_icon');
    change_part ('sandwich_fabric', 'sandwich');
    change_part ('embroidery_sandwich_fabric', 'sandwich');
    elt('fabric_photo').src = urlbase + 'photo.jpg';
    var fabric_attrs = productAttr.shirt.fabric.values[shirt.fabric];
    write_inner ('fabric_symbols', fabric_attrs.symbols);
    write_inner ('fabric_name', fabric_attrs.displayName);
    write_inner ('fabric_id', shirt.fabric + ' (' + fabric_attrs.country + ')');
    write_inner ('fabric_composition', fabric_attrs.composition);
    write_inner ('fabric_density', fabric_attrs.density);
    write_inner ('fabric_price', fabric_attrs.price);
    write_inner ('fabric_color', fabric_attrs.color || '');   
    
    //Временная затычка для женской застежки
    if (typeof(shirt['backPleatsFabric']) != 'undefined') {
        shirt['fasteningButtonsFabric'] = shirt.fabric;
    }
    
    calc_title ();
}

function change_photo (part, name) {
    if (last_photos[part] == name)
        return;
    elt('photo_' + part).src = '../photo/' + name + '.jpg';
    last_photos[part] = name;
}

function change_backPleats () {
    change_button_text ('backPleats', shirt.backPleats);
    change_photo ('backPleats', shirt.backPleats);
}

function change_collarHeight () {
    change_button_text ('collarHeight', shirt.collarHeight);
    change_collarButtons ();
    change_collarThread ();
    change_photo ('collarHeight', shirt.collarHeight);
}

function change_cuffStyle () {
    change_button_text ('cuffStyle', shirt.cuffStyle);
    change_photo ('cuffStyle', shirt.cuff + '/' + shirt.cuffStyle);
}

function change_sleeveBottom () {
    change_button_text ('sleeveBottom', shirt.sleeveBottom);
    change_photo ('sleeveBottom', shirt.sleeveBottom);
}

function change_contrastFabric () {
    change_button_text ('contrastFabric', shirt.contrastFabric);
    change_photo ('contrastFabric', '../shirt/' + shirt.contrastFabric + '/contrastFabric');
    change_collar ();
    change_cuff ();
    
    change_fastening ();
    
    for (var i in dummyProps1) {
        var current = dummyProps1[i];
        if (typeof(shirt[current]) != 'undefined') {
            shirt[current] = shirt.fabric;
        }
    }
    
    for (var i in dummyProps2) {
        var current = dummyProps2[i];
        if (typeof(shirt[current]) != 'undefined') {
            shirt[current] = shirt.contrastFabric;
        }
    }
    
    //Временная затычка для женской застежки
    if (typeof(shirt['backPleatsFabric']) != 'undefined') {
        shirt['fasteningButtonsFabric'] = shirt.fabric;
    }

    calc_price ();
}

function change_collarDensity () {
    enable_ckbox ('collarDensity', shirt.collarDensity);
}

function change_cuffDensity () {
    enable_ckbox ('cuffDensity', shirt.cuffDensity);
}

function change_collarBone () {
    enable_ckbox ('collarBone', shirt.collarBone);
    change_photo ('collarBone', 'collarBone_' + shirt.collarBone);
    calc_price ();
}

function change_collarButtons () {
    if (!shirt.model) {
        enable_ckbox ('collarButtons', shirt.collarButtons);
        change_photo ('collarButtons', 'collarButtons_' + shirt.collarButtons);
        var prefix = shirt.collar == 'collarButtonDown' ? 'collarButtonDown' : 'collar';
        var suffix = shirt.collarHeight == 'collarHeight45mm2button' ? '2button' : '';
        change_part_buttons ('collar', prefix + suffix);
        
        show_part ('buttons_collar');
    }
    calc_price ();
}

function change_collarThread () {
    if (!shirt.model) {
        var prefix = shirt.collar == 'collarButtonDown' ? 'collarButtonDown' : 'collar';
        var suffix = shirt.collarHeight == 'collarHeight45mm2button' ? '2button' : '';
        change_part_buttonsThread ('collar', prefix + suffix);
    }
}

function change_buttons () {
    change_button_text ('buttons', shirt.buttons);
    change_photo ('buttons', '../buttons/' + shirt.buttons + '/photo');
    change_part_buttons ('sandwich', 'sandwich');
    
    change_cuff ();
    change_fastening ();
    change_flap ();
    change_epaulettes ();
    change_collar ();
    if (currentProductAttr.buttons.values[product.buttons].auxData1 == 'buttonTypeSnap') {
        hide_part ('buttonsThread_sandwich_bottom');
        hide_part ('buttonsThread_sandwich_top');
    } else {
        show_part ('buttonsThread_sandwich_bottom');
        show_part ('buttonsThread_sandwich_top');
    }
}

function change_buttonsThread () {
    change_button_text ('buttonsThread', shirt.buttonsThread);
    //не обязательно, можно убрать условие
    
    if (currentProductAttr.buttons.values[product.buttons].auxData1 != 'buttonTypeSnap') {
        change_part_buttonsThread ('sandwich_bottom', 'sandwich_bottom');
        change_part_buttonsThread ('sandwich_top', 'sandwich_top');
    }
    change_cuff ();
    change_fastening ();
    change_flap ();
    change_collar ();
    calc_price ();
}

function change_embroidery () {
    if (shirt.embroidery == 'embroideryAtPocket' && shirt.pocket == 'pocketNone') {
        myalert ('Вы выбрали рубашку без карманов');
        select_icon ('embroidery', attr_default ('embroidery'));
        return;
    }
    if (shirt.embroidery == 'embroideryAtCuff' && (shirt.sleeve == 'sleeveShortCuff' || shirt.sleeve == 'sleeveShort' || shirt.sleeve == 'sleeveSafari')) {
        myalert ('Несовместимо с выбранным рукавом');
        select_icon ('embroidery', attr_default ('embroidery'));
        return;
    }
    if (shirt.embroidery == 'embroideryNone') {
        disable_button ('embroideryFont');
        disable_button ('embroideryColor');
        disable_button ('embroideryVariant');
        elt('embroideryText').value = '';
        elt('embroideryText').disabled = true;
        change_photo ('embroideryFont', '../../images/white');
        hide_part ('embroidery_sandwich_thread');
    } else {
        enable_button ('embroideryFont', shirt.embroideryFont);
        enable_button ('embroideryColor', shirt.embroideryColor);
        enable_button ('embroideryVariant', product.embroideryVariant);
        elt('embroideryText').disabled = false;
        change_photo ('embroideryFont', shirt.embroideryFont);
        show_part ('embroidery_sandwich_thread');
        change_part ('embroidery_sandwich_thread', '../../threads/' + shirt.embroideryColor + '/' + shirt.embroideryFont);

        try {
            eval('change_'+ product.embroideryVariant +'()');
        } catch (ex) {

        }
        if(product.embroideryVariant.toString().match(/onogram/)) {
            change_part ('embroidery_sandwich_thread', '../../threads/' + product.embroideryColor + '/' + product.embroideryFont);
        }

        last_photos['embroideryFont'] = '../threads/' + product.embroideryColor + '/' + product.embroideryColor + '.png';
        elt('photo_embroideryFont').src = last_photos['embroideryFont'];
    }
    change_button_text ('embroidery', shirt.embroidery);
    change_photo ('embroidery', shirt.embroidery);
    calc_price ();
    calc_title ();
}

function change_embroideryFont () {
    change_embroidery ();
}

function change_embroideryColor () {
    change_embroidery ();
}

var design_step_active = 0;

function design_step (step) {
    // change_popup ('');
    if (design_step_active) {
        elt('design_step_' + design_step_active).className = ''; // 'design_step';
        hide_item ('design_page_' + design_step_active);
    }
    if (step) {
        if (measurements_step (0))
            return;
        show_item ('design_tabs');
        elt('design_step_' + step).className = 'design_step_active';
        show_item ('design_page_' + step);
    } else
        hide_item ('design_tabs');
    design_step_active = step;
    if (step && step < 4)
        show_item ('design_price_div');
    else
        hide_item ('design_price_div');
}

var measurements_step_active = 0;

function measurements_step (step, require) {
    if (step == last_meas_step) {
        var s = '';
        var i, j;
        s += '<p>Просмотр Ваших размеров:</p>';
        for (i = 1; i < last_meas_step; i++) {
            var n = 0;
            var l = 0;
            for (j in meas[i])
                l++;
            for (j in meas[i]) {
                var val;
                attr = productAttr.shirt[j].attr;
                attrType = attr.attrType;
                if(attrType == 'measure') {
                    val = elt(j).value;
                } else {
                    //formVal = getFormRadioValue(productAttr.shirt[j].attr.attrName);
                    formVal = radiobuttons[j] ?
                        radiobuttons[j] : attr.defaultValue;
                    val = productAttr.shirt[j].values[formVal].displayName;
                }
                s += '<div class="row" onclick="measurements_step(' + i + ')">';
                s += '<div class="left">';
                s += i + (l > 1 ? '.' + ++n : '') + '. ' + attr.displayName;
                s += '</div>';
                s += '<div class="right">';
                s += val + (attrType == 'measure' ? ' см' : '');
                s += '</div>';
                s += '&nbsp;';
                s += '</div>';
            }
        }
        write_inner ('measurements_summary', s);
    }
    if (measurements_step_active) {
        for (i in meas[measurements_step_active]) {
            if(productAttr.shirt[i].attr.attrType == 'measure') {
                var e = elt(i);
                var v = parseInt (0 + e.value, 10);
                var a = productAttr.shirt[i].attr;
                var min = parseInt (0 + a.min, 10);
                var max = parseInt (0 + a.max, 10);
                if (v < min && (i != 'sleeveLength' || shirt.sleeve == 'sleeveLong' || shirt.sleeve == 'sleeveLongNarrow')
                    && (i != 'shortSleeveLength' || shirt.sleeve == 'sleeveShort' || shirt.sleeve == 'sleeveShortCuff')) {
                    e.focus();
                    e.select();
                    if (require) {
                        myalert ('Значение "' + a.displayName + '" не должно быть меньше ' + min + ' см.');
                        return (true);
                    }
                    if (!myconfirm ('Значение "' + a.displayName + '" не должно быть меньше ' + min + ' см. Вы уверены, что хотите продолжить?'))
                        return (false);
                } else if (v > max && (i != 'sleeveLength' || shirt.sleeve != 'sleeveLong' && shirt.sleeve != 'sleeveLongNarrow')
                    && (i != 'shortSleeveLength' || shirt.sleeve != 'sleeveShort' && shirt.sleeve != 'sleeveShortCuff')) {
                    e.focus();
                    e.select();
                    if (require) {
                        myalert ('Значение "' + a.displayName + '" не должно быть больше ' + max + ' см.');
                        return (true);
                    }
                    if (!myconfirm ('Значение "' + a.displayName + '" не должно быть больше ' + max + ' см. Вы уверены, что хотите продолжить?'))
                        return (false);
                } else if (v < min || v > max)
                    e.value = '';
            }
        }
        elt('measurements_step_' + measurements_step_active).className = 'design_step';
        hide_item ('measurements_page_' + measurements_step_active);
    }
    if (step) {
        design_step (0);
        show_item ('measurements_tabs');
        elt('measurements_step_' + step).className = 'design_step_active';
        show_item ('measurements_page_' + step);
        for (i in meas[step]) {
            el = elt(i);
            if(el) {
                if(el.hasFocus) {
                    el.focus();
                }
                el.select();
            }
            break;
        }
    } else
        hide_item ('measurements_tabs');
    measurements_step_active = step;
    return (false);
}

function newProfile_callback (res) {
    myalert ('Готово');
    profileList_page ();
}

function newProfile (f) {
    for (var i in profile) {
        var e = elt('np_'+i);
        var v = e.value;
        if (i == 'displayName') {
            if (!v) {
                myalert ('Не заполнено имя профиля');
                e.focus();
                return;
            } else
                profile[i] = v;
        } else if ((v || i != 'sleeveLength' && i != 'shortSleeveLength') && attr_type(i) == 'measure') {
            var a = productAttr.shirt[i].attr;
            v = parseInt (0 + v, 10);
            var min = parseInt (0 + a.min, 10);
            var max = parseInt (0 + a.max, 10);
            if (v < min) {
                myalert ('Значение "' + a.displayName + '" не должно быть меньше ' + min + ' см.');
                e.focus();
                e.select();
                return;
            }
            if (v > max) {
                myalert ('Значение "' + a.displayName + '" не должно быть больше ' + max + ' см.');
                e.focus();
                e.select();
                return;
            }
            profile[i] = v;
        } else if(attr_type(i) == 'enum') {
            profile[i] = e.options[e.selectedIndex].value;
        } else
            delete profile[i];
    }

    if (elt('np_bustHeight') || check_shirt(profile)) {
        customerService (f, 'createShirtProfile', newProfile_callback, profile);
    } else {
        var e = elt('np_' + warn_attr);
        e.focus();
        e.select();
    }
}

function newProfile_page () {
    var dn = 'Профиль ' + (last_profile_number + 1);
    var s = '';
    s += '<table summary="">';
    s += '<tr>';
    s += '<td class="left">';
    s += 'Имя профиля';
    s += '</td>';
    s += '<td>';
    s += '<input type="text" size="16" maxlength="32" id="np_displayName" value="' + dn + '" />';
    s += '</td>';
    s += '</tr>';
    profile = {};
    profile.displayName = dn;
    profile.height = 0;
    for (var i = 1; i < last_meas_step; i++)
        for (var j in meas[i]) {
            var input;
            if(attr_type(j) == 'measure') {
                var size = productAttr.shirt[j].attr.max > 99 ? 3 : 2;
                input = '<input type="text" size="3" maxlength="' + size + '" id="np_' + j + '" value="" /> см.';
            } else {
                input  = '<select name="np_' + i + '" id="np_' + j + '">';
                for (var q in productAttr.shirt[j].values) {
                    var val = productAttr.shirt[j].values[q].attrValue;
                    input += '<option value="' + val + (val == product[j] ? '" selected="selected">' : '">') + productAttr.shirt[j].values[q].displayName + '</option>';
                }
                input += '</select>';
            }
            s += '<tr>';
            s += '<td class="left">';
            s += productAttr.shirt[j].attr.displayName;
            s += '</td>';
            s += '<td>';
            s += input;
            s += '</td>';
            s += '</tr>';
            profile[j] = '';
        }
    s += '</table>';
    write_inner ('newProfile', s);
    change_popup3 ('newProfile_page');
}

function addShirt_callback (res) {
    eval (res);
    change_cart (count, sum);
    myalert ('Готово');
    design_step (1);
}

function addShirt (f) {
    var i, j;
    var p = {};
    for (i = 1; i <= last_meas_step; i++)
        if (measurements_step (i, true))
            return;
    p.price = elt('design_price').innerHTML;
    for (i in shirt)
        p[i] = shirt[i];
    p.embroideryText = elt('embroideryText').value;
    if (p.embroidery != 'embroideryNone' && p.embroideryVariant.match(/onogram/) &&!p.embroideryText) {
        myalert ('Выбрано использование монограммы, но не введен текст');
        return;
    }
    //if (!p.embroideryText.match(/^[\x20-\x7e]*$/)) {
    if (p.embroideryText.length > 0 && p.embroideryText.match(/[^-!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~\w\sА-Яа-яЁё]+/)) {
        myalert ('Текст монограммы содержит недопустимые символы');
        return;
    }
    for (i = 1; i < last_meas_step; i++)
        for (j in meas[i]) {
            var e = elt(j);
            if(attr_type(j) == 'measure') {
                var v = parseInt (0 + e.value, 10);
                if (v)
                    p[j] = v;
                else
                    delete p[j];
            } else {
                if (e) {
                    p[i] = e.options[e.selectedIndex].value;
                }
            }
        }
    if (!p.lengthToShoulder)
        delete p.lengthToShoulder;
    p.measurementsName = '';
    
    if (elt('bustHeight') || check_shirt(p)) {
        if (myconfirm ('Вы не сохранили размеры в профиль для будущего повторного использования. Вы уверены, что хотите продолжить без сохранения размеров?'))
            customerService (f, addShirtSvc, addShirt_callback, p);
    } else {
        measurements_step(warn_step, false);
        var e = elt(warn_attr);
        e.focus();
        e.select();
    }
}

function addShirt_with_profile_callback (res) {
    readShirtProfile_callback (res);
    var p = {};
    p.price = elt('design_price').innerHTML;
    for (var i in shirt)
        p[i] = shirt[i];
    p.embroideryText = elt('embroideryText').value;
    if (p.embroidery != 'embroideryNone' && p.embroideryVariant.match(/onogram/) && !p.embroideryText) {
        myalert ('Выбрано использование монограммы, но не введен текст');
        return;
    }
    //if (!p.embroideryText.match(/^[\x20-\x7e]*$/)) {
    if (p.embroideryText.length > 0 && p.embroideryText.match(/[^-!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~\w\sА-Яа-яЁё]+/)) {
        myalert ('Текст монограммы содержит недопустимые символы');
        return;
    }
    for (var i in profile) {
        if (i == 'objectId' || i == 'customerId' || i == 'displayName') {
        // nop
        } else if(attr_type(i) == 'measure') {
            var e = elt('up_'+i);
            var v = e.value;
            var a = productAttr.shirt[i].attr;
            v = parseInt (0 + v, 10);
            var min = parseInt (0 + a.min, 10);
            var max = parseInt (0 + a.max, 10);
            if (v < min && (i != 'sleeveLength' || shirt.sleeve == 'sleeveLong' || shirt.sleeve == 'sleeveLongNarrow')
                && (i != 'shortSleeveLength' || shirt.sleeve == 'sleeveShort' || shirt.sleeve == 'sleeveShortCuff')) {
                change_popup3 ('updateProfile_page');
                e.focus();
                e.select();
                myalert ('Значение "' + a.displayName + '" не должно быть меньше ' + min + ' см.');
                return;
            } else if (v > max && (i != 'sleeveLength' || shirt.sleeve != 'sleeveLong' && shirt.sleeve != 'sleeveLongNarrow')
                && (i != 'shortSleeveLength' || shirt.sleeve != 'sleeveShort' && shirt.sleeve != 'sleeveShortCuff')) {
                change_popup3 ('updateProfile_page');
                e.focus();
                e.select();
                myalert ('Значение "' + a.displayName + '" не должно быть больше ' + max + ' см.');
                return;
            }
            if (v >= min && v <= max)
                p[i] = v;
            else
                delete p[i];
        } else {
            var e = elt ('up_' + i);
            if (e) {
                p[i] = e.options[e.selectedIndex].value;
            }
        }
    }
    if (!profile.lengthToShoulder)
        delete p.lengthToShoulder;
    p.measurementsName = profile.displayName;
    customerService (0, addShirtSvc, addShirt_callback, p);
}

function addShirt_with_profile (f, oid) {
    var p = {
        'objectId' : oid
    };
    customerService (0, 'readShirtProfile', addShirt_with_profile_callback, p);
}

function enable_option (id) {
    var e = elt (id);
    e.disabled = false;
    e.style.color = '#000';
}

function disable_option (id) {
    var e = elt (id);
    e.disabled = true;
    e.style.color = '#CCC';
}

function show_stdSize () {
    hide_item ('show_stdSize_link');
    show_item ('select_std2');
    //show_inline_item ('addShirt_stdSize');
    show_item ('addShirt_stdSize');
}

function addShirt_stdSize (f) {
    var i, j;
    var p = {};
    p.price = elt('design_price').innerHTML;
    for (i in shirt)
        if (attr_type (i) != 'measure' && i != 'shoulderType')
            p[i] = shirt[i];
    p.embroideryText = elt('embroideryText').value;
    if (p.embroidery != 'embroideryNone' && p.embroideryVariant.match(/onogram/) && !p.embroideryText) {
        myalert ('Выбрано использование монограммы, но не введен текст');
        return;
    }
    //if (!p.embroideryText.match(/^[\x20-\x7e]*$/)) {
    if (p.embroideryText.length > 0 && p.embroideryText.match(/[^-!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~\w\sА-Яа-яЁё]+/)) {
        myalert ('Текст монограммы содержит недопустимые символы');
        return;
    }
    p.height = elt('stdHeight').value;
    var stdSize = elt('stdSize').value;
    if (design_sex == 'f') {
        var stdSeat = elt('stdSeat').value;
        if (!stdSize) {
            myalert ('Не выбран обхват груди');
            return;
        } else if (!stdSeat) {
            myalert ('Не выбран обхват бедер');
            return;
        } /* else if (elt('stdSize_'+stdSize).disabled || elt('stdSeat_'+stdSeat).disabled) {
            myalert ('Недопустимая комбинация размеров');
            return;
        } */
        p.stdSize = '38';
        p.chestAround = stdSize;
        p.seatAround = stdSeat;
    } else
        p.stdSize = stdSize;
    customerService (f, addShirtSvc, addShirt_callback, p);
}

function createShirtProfile_callback (res) {
    customerService (0, 'shirtProfileList', profileList_callback);
    myalert ('Готово');
    design_step (4);
}

function createShirtProfile (f) {
    var i, j;
    for (i = 1; i <= last_meas_step; i++)
        if (measurements_step (i, true))
            return;
    var p = {};
    p.displayName = elt('measurementsName').value;
    p.height = 0;
    for (i = 1; i < last_meas_step; i++)
        for (j in meas[i]) {
            if(productAttr.shirt[j].attr.attrType == 'measure') {
                var v = parseInt (0 + elt(j).value, 10);
            } else {
                var v = radiobuttons[j] ?
                    radiobuttons[j] : productAttr.shirt[j].attr.defaultValue;
            }
            if (v)
                p[j] = v;
        }

    if (elt('bustHeight') || check_shirt(p)) {
        customerService (f, 'createShirtProfile', createShirtProfile_callback, p);
    } else {
        measurements_step(warn_step, false);
        var e = elt(warn_attr);
        e.focus();
        e.select();
    }
}

function copy2design () {
    if (!myconfirm ('Некоторые элементы могут быть уже недоступны для заказа. Продолжить?'))
        return;
    var i, j;
    set_attr_defaults ();
    change_popup ('');
    for (i in shirt) {
        var val = cart_shirt[i];
        shirt[i] = val == '' && productAttr.shirt[i].attr.attrType == 'measure' || productAttr.shirt[i].values && productAttr.shirt[i].values[val] ?  val : attr_default (i);
    }
    elt('embroideryText').value = cart_shirt.embroideryText;
    for (i = 1; i < last_meas_step; i++)
        for (j in meas[i])
            if (j == 'shoulderType') {
                setRadioValue('shoulderType', cart_shirt[j]);
            } else {
                elt(j).value = cart_shirt[j];
            }
    draw_workspace ();
    change_section ();
}

function fabric_zoom () {
    show_item ('fabric_zoom');
}

function fabric_zoom_close () {
    hide_item ('fabric_zoom');
}

// возвращаем значение отмеченного элемента, в противном случае false
function getRadioValue(radioName)
{
    var radio = document.getElementsByName(radioName);
    for (var i = 0; i < radio.length; i++) {
        if (radio[i].checked) {
            return radio[i].value;
        }
    }
    
    return false;
}

// Устанавливаем элемент как checked в radio group, в противном случае false
function setRadioValue(radioName, radioValue)
{
    var radio = document.getElementsByName(radioName);
    for (var i = 0; i < radio.length; ++i) {
        if (radio[i].value == radioValue) {
            return radio[i].checked = true;
        }
    }
    
    return false;
}

function help (what) {
    alert ('help ' + what);
}

function deselect_icon (attr) {
    var icon;
    switch (attr) {
        case 'contrastFabric':
            icon = 'icon_contrast_';
            break;
        case 'embroideryColor':
            icon = 'icon_embroideryColor_';
            break;
        default:
            icon = 'icon_';
            break;
    }
    if (!shirt[attr] || !elt(icon + shirt[attr]))
        return '';
    elt(icon + shirt[attr]).className = '';
    return icon;
}

function select_icon (attr, val) {
    var icon = deselect_icon (attr);
    if (attr == 'fabric' && product.fabric == product.contrastFabric)
        select_icon ('contrastFabric', val);
    /*
    shirt[attr] = val;
    elt(icon + val).className = 'selected_icon';
    eval ('change_' + attr + '()');
    */
    product[attr] = val;
    if(val != '') {
        try {
            elt(icon + val).className = 'selected_icon';
        } catch (err) {
        //dbg(err);
        }
    }
    
    try {
        eval ('change_' + attr + '()');
    } catch (err) {
    //dbg(err);
    }
}

function reset_contrastFabric () {
    select_icon ('contrastFabric', shirt.fabric);
}

function select_button (what) {
    if (elt('button_' + what).className == 'disabled')
        return;
    if (last_button)
        elt('button_' + last_button).className = '';
    elt('button_' + what).className = 'last';
    last_button = what;
    show_item ('select_' + what + '_container');
}

function select_ckbox_collarWhite () {
    shirt.collarWhite = shirt.collarWhite == 'true' ? 'false' : 'true';
    change_collar ();
}

function select_ckbox_cuffWhite () {
    shirt.cuffWhite = shirt.cuffWhite == 'true' ? 'false' : 'true';
    change_cuff ();
}

function select_ckbox_pocketFlap () {
    shirt.pocketFlap = shirt.pocketFlap == 'true' ? 'false' : 'true';
    change_flap ();
}

function select_ckbox_epaulettes () {
    shirt.epaulettes = shirt.epaulettes == 'true' ? 'false' : 'true';
    change_epaulettes ();
}

function select_ckbox_collarDensity () {
    shirt.collarDensity = shirt.collarDensity == 'true' ? 'false' : 'true';
    change_collarDensity ();
}

function select_ckbox_cuffDensity () {
    shirt.cuffDensity = shirt.cuffDensity == 'true' ? 'false' : 'true';
    change_cuffDensity ();
}

function select_ckbox_collarBone () {
    shirt.collarBone = shirt.collarBone == 'true' ? 'false' : 'true';
    change_collarBone ();
    if (shirt.collarBone == 'true')
        disable_ckbox ('collarButtons');
    else
        enable_ckbox ('collarButtons', shirt.collarButtons);
}

function select_ckbox_collarButtons () {
    shirt.collarButtons = shirt.collarButtons == 'true' ? 'false' : 'true';
    change_collarButtons ();
    if (shirt.collarButtons == 'true')
        disable_ckbox ('collarBone');
    else
        enable_ckbox ('collarBone', shirt.collarBone);
}

function select_ckbox_printProductNumber () {
    shirt.printProductNumber = shirt.printProductNumber == 'true' ? 'false' : 'true';
    enable_ckbox ('printProductNumber', shirt.printProductNumber);
}

function write_popup (attr, cols, help) {
    var s = '';
    var i = 0;
    var j;
    s += '<table cellpadding="5">';
    for (var v in productAttr.shirt[attr].values) {
        s += i ? '' : '<tr>';
        s += '<td>';
        s += '<div class="design_menu_popup_icon">';
        s += '<img src="../images/' + v + '.png" id="icon_' + v + '" onclick="select_icon(\'' + attr + '\',\'' + v + '\')" />';
        if (help)
            s += '<img src="../../images/help.png" onclick="alert(\'help ' + v + '\')" />';
        s += '</div>';
        s += productAttr.shirt[attr].values[v].displayName;
        if (attr_cost (attr) == 0 && attr_value_cost (attr, v) > 0)
            s += '<span class="addcost" id="' + v + '_cost"> (+' + productAttr.shirt[attr].values[v].price + 'p)</span>';
        s += '</td>';
        i++;
        if (i >= cols)
            i = 0;
        s += i ? '' : '</tr>';
    }
    if (i) {
        for (j = i; j < cols; j++)
            s += '<td>&nbsp;</td>';
        s += '</tr>';
    }
    s += '</table>';
    write_inner ('select_' + attr, s);
}

function write_fabric_popup (attr, cols, help) {
    var icon = attr == 'contrastFabric' ? 'icon_contrast_' : 'icon_';
    var s = '';
    var i = 0;
    var j;
    s += '<table cellpadding="5">';
    for (var v in productAttr.shirt[attr].values) {
        s += i ? '' : '<tr>';
        s += '<td>';
        s += '<div class="design_menu_popup_icon">';
        s += '<img src="../shirt/' + v + '/fabric.png" id="' + icon + v + '" onclick="select_icon(\'' + attr + '\',\'' + v + '\')" />';
        if (help)
            s += '<img src="../../images/help.png" onclick="alert(\'help ' + v + '\')" />';
        s += '</div>';
        if (attr == 'fabric')
            s += '<div class="fabric_price">' + productAttr.shirt[attr].values[v].price + ' руб.</div>';
        s += '<div class="fabric_cotton">' + productAttr.shirt[attr].values[v].shortComposition + '</div>';
        s += '<div class="fabric_name">' + productAttr.shirt[attr].values[v].displayName + '</div>';
        s += '</td>';
        i++;
        if (i >= cols)
            i = 0;
        s += i ? '' : '</tr>';
    }
    if (i) {
        for (j = i; j < cols; j++)
            s += '<td>&nbsp;</td>';
        s += '</tr>';
    }
    s += '</table>';
    write_inner ('select_' + attr, s);
}

function write_buttons_popup (attr, cols, help) {
    var s = '';
    var i = 0;
    var j;
    s += '<table cellpadding="5">';
    for (var v in productAttr.shirt[attr].values) {
        s += i ? '' : '<tr>';
        s += '<td>';
        s += '<div class="design_menu_popup_icon">';
        s += '<img src="../buttons/' + v + '/pict.png" id="icon_' + v + '" onclick="select_icon(\'' + attr + '\',\'' + v + '\')" />';
        if (help)
            s += '<img src="../../images/help.png" onclick="alert(\'help ' + v + '\')" />';
        s += '</div>';
        s += productAttr.shirt[attr].values[v].displayName;
        if (attr_cost (attr) == 0 && attr_value_cost (attr, v) > 0)
            s += '<span class="addcost" id="' + v + '_cost"> (+' + productAttr.shirt[attr].values[v].price + 'p)</span>';
        s += '</td>';
        i++;
        if (i >= cols)
            i = 0;
        s += i ? '' : '</tr>';
    }
    if (i) {
        for (j = i; j < cols; j++)
            s += '<td>&nbsp;</td>';
        s += '</tr>';
    }
    s += '</table>';
    write_inner ('select_' + attr, s);
}

function write_buttonsThread_popup (attr, cols, help) {
    var icon = attr == 'embroideryColor' ? 'icon_embroideryColor_' : 'icon_';
    var s = '';
    var i = 0;
    var j;
    s += '<table cellpadding="5">';
    for (var v in productAttr.shirt[attr].values) {
        s += i ? '' : '<tr>';
        s += '<td>';
        s += '<div class="design_menu_popup_icon">';
        s += '<img src="../threads/' + v + '/pict.png" id="' + icon + v + '" onclick="select_icon(\'' + attr + '\',\'' + v + '\')" />';
        if (help)
            s += '<img src="../../images/help.png" onclick="alert(\'help ' + v + '\')" />';
        s += '</div>';
        s += productAttr.shirt[attr].values[v].displayName;
        s += '</td>';
        i++;
        if (i >= cols)
            i = 0;
        s += i ? '' : '</tr>';
    }
    if (i) {
        for (j = i; j < cols; j++)
            s += '<td>&nbsp;</td>';
        s += '</tr>';
    }
    s += '</table>';
    write_inner ('select_' + attr, s);
}

function shirt_design_page () {
    design_step (1);
}

function testShirt_page () {
    shirt_design_page ();
}

function test_design_init (section) {
    design_init (section);
    disable_controls ();
}

function hide_test_menu (item) {
    disable_controls ();
    hide_item (item);
}

function change_embroideryVariant() {
    change_button_text ('embroideryVariant', product.embroideryVariant);
    filename = product.embroideryFont;

    switch (product.embroideryVariant) {
        case 'embroideryMonogram':
            break;
        default:
            filename = product[product.embroideryVariant];
            break;
    }

    calc_price();
    setEmbroideryPriceDiv();
    change_part ('embroidery_sandwich_thread', '../../threads/' + product.embroideryColor + '/' + filename);
}

function change_shoulderType (sender) {
    for (type in currentProductAttr.shoulderType.values) {
        img = elt('img_' + type);
        if (img) {
            if(sender.value == type) {
                img.className = 'selected_icon';
            } else {
                img.className = '';
            }
        }
    }
    change_radio(sender);
}

function setEmbroideryPriceDiv() {
    price = (product.embroideryVariant == 'embroideryMonogram' ?
        parseInt(currentProductAttr['embroideryVariant'].values['embroideryMonogram'].price) : parseInt(currentProductAttr[product.embroideryVariant].values[product[product.embroideryVariant]].price));
    elt('embroidery_cost').innerHTML = price == 0 ? '' : ('(+' + price + 'р)');
}

function write_unisex_popup (attr, cols, small, toInvoke, subdir) {
    var s = '';
    var i = 0;
    var j;
    s += '<table cellpadding="5">';
    invoke = 'select_icon';
    if(toInvoke) {
        invoke = toInvoke;
    }
    dir = '../../images/';
    if(subdir) {
        dir += subdir + '/';
    }

    divClass = 'design_menu_popup_icon';
    if(small) {
        divClass = 'design_menu_small_popup_icon';
    }

    if (!currentProductAttr[attr].values && currentProductAttr[attr].attr && currentProductAttr[attr].attr.attrType == 'measure') {
        from = parseInt (currentProductAttr[attr].attr.min);
        to = parseInt (currentProductAttr[attr].attr.max);
        for (m = from; m<=to; m++) {
            s += i ? '' : '<tr>';
            s += '<td>';
            s += '<div class="'+ divClass +'">';
            s += '<img src="' + dir + attr + '/' + m + '.png" id="icon_' + m + '" onclick="'+ invoke +'(\'' + attr + '\',\'' + m + '\')" />';
            s += '</div>';
            s += m;
            s += '</td>';
            i++;
            if (i >= cols)
                i = 0;
            s += i ? '' : '</tr>';
        }

    } else {
        for (var v in currentProductAttr[attr].values) {
            s += i ? '' : '<tr>';
            s += '<td>';
            s += '<div class="'+ divClass +'">';
            s += '<img src="' + dir + v + '.png" id="icon_' + v + '" onclick="'+ invoke +'(\'' + attr + '\',\'' + v + '\')" />';
            s += '</div>';
            s += currentProductAttr[attr].values[v].displayName;
            if (attr_cost (attr) == 0 && attr_value_cost (attr, v) > 0)
                s += '<span class="addcost" id="' + v + '_cost"> (+' + currentProductAttr[attr].values[v].price + 'p)</span>';
            s += '</td>';
            i++;
            if (i >= cols)
                i = 0;
            s += i ? '' : '</tr>';
        }
    }
    if (i) {
        for (j = i; j < cols; j++)
            s += '<td>&nbsp;</td>';
        s += '</tr>';
    }
    s += '</table>';
    write_inner ('select_' + attr, s);

}

/**
 * Нажатие кнопки в опциях вышивки галстука
 */
function select_embroidery_button (type, what) {
    select_icon (type, what);
    if ('embroideryMonogram' == what) {
        //hide_item ('')
        hide_item ('design_menu_usual');
        hide_item ('select_embroideryVariant_container');
        show_item ('design_menu_monogram');
    } else {
        show_item ('select_' + what + '_container');
    }
}

function hide_embroidery_options() {
    show_item ('design_menu_usual');
    show_item ('select_embroideryVariant_container');
    hide_item ('design_menu_monogram');
}

function change_embroideryEastern() {
    change_part ('embroidery_sandwich_thread', '../../threads/' + product.embroideryColor + '/' + product.embroideryEastern);
    calc_price();
}

function change_embroideryZodiac1() {
    change_part ('embroidery_sandwich_thread', '../../threads/' + product.embroideryColor + '/' + product.embroideryZodiac1);
    calc_price();
}

function change_embroideryZodiac2() {
    change_part ('embroidery_sandwich_thread', '../../threads/' + product.embroideryColor + '/' + product.embroideryZodiac2);
    calc_price();
}

function change_embroideryLogo() {
    change_part ('embroidery_sandwich_thread', '../../threads/' + product.embroideryColor + '/' + product.embroideryLogo);
    calc_price();
}

function change_embroideryHearts () {
    change_part ('embroidery_sandwich_thread', '../../threads/' + product.embroideryColor + '/' + product.embroideryHearts);
    calc_price();
}

function change_embroidery23Febr () {
    change_part ('embroidery_sandwich_thread', '../../threads/' + product.embroideryColor + '/' + product.embroidery23Febr);
    calc_price();
}

function change_embroiderySmile () {
    change_part ('embroidery_sandwich_thread', '../../threads/' + product.embroideryColor + '/' + product.embroiderySmile);
    calc_price();
}

function change_embroideryDifferent () {
    change_part ('embroidery_sandwich_thread', '../../threads/' + product.embroideryColor + '/' + product.embroideryDifferent);
    calc_price();
}
