/* Ниже есть очень много фукций, относящихся к конструктору рубашки.
 * Это артефакты разработки. В настоящее время констукторы рубашек используют файл
 * designer_shirt_generic.js
 */
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 previousFabric = null;
var design_step_count = 4;

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;
    }
    if (keynum == 8) { //Backspace;
        return true;
    }
    keychar = String.fromCharCode(keynum);
    //numcheck = /[\x00-\x7e]/;
    numcheck = /[-!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~\w\sА-Яа-яЁё]/;
    return numcheck.test(keychar);
}

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

//Test only, delete it
function lfp () {
    for(var f in fabricParts) {console.log(productAttr.ladies_shirt[fabricParts[f]].attr.displayName + ': '+shirt[fabricParts[f]]);}
}

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 (var 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 {
                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 = resolveAbsoluteUrl(urlbase + name + '.png');

    if (part == 'embroidery_sandwich_thread' || part == 'embroidery_sandwich_fabric') {
    	var e = $('.img_' + part);
    } else {
    	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).attr('src', url);
    //$(e).show();
    //console.log('part is %s', 'img_' + part);
    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;
        var threadPath = '../../threads/' + shirt.buttonsThread;

        threadPath += shirt.collar == 'collarTurnDown'  && part == 'fastening' ? '/buttonsThread_modelStandard_fasteningStandard_TurnDown' : '/buttonsThread_' + name;
        change_part (threadPart, threadPath);
        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) {
    //$('#button_' + item).attr('class', '');
    
    var button_name = 'button_' + item;

    config.interface.buttons[button_name] = 'enabled';
    //if (elt('button_' + item).className == 'disabled')
    //    elt('button_' + item).className = '';
    //change_button_text (item, val);
}

function disable_button (item) {
    //$('#button_' + item).attr('class', 'disabled');
    
    var button_name = 'button_' + item;

    config.interface.buttons[button_name] = 'disabled';
    //elt('button_' + item).className = 'disabled';
    //write_inner ('button_' + item, '---');
}

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

function attr_markup_cost (attr) {
    return parseInt(currentProductAttr[attr] && currentProductAttr[attr].attr ? currentProductAttr[attr].attr.priceMarkup : 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);
    var price = 0;
    if (a == 0)
        price = parseInt (attr_value_cost (attr, shirt[attr]));
    else if (shirt[attr] == attr_default (attr))
        price = 0;
    else
        price = parseInt (a);
    
    price += attr_markup_cost(attr);
    
    return price;
}

function calc_price () {
    var lesserFabricParts = ['collarFabric', 'collarStandFabric', 'cuffFabric',
    'cuffTurnFabric', 'fasteningThreadsFabric', 'fasteningButtonsFabric'];
    var price = 0;
    price += get_cost ('fabric');
    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 ('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 += get_cost ('buttons');
    
    for (var i = 0; i < lesserFabricParts.length; i++) {
        if (shirt.fabric != shirt[lesserFabricParts[i]]) {
            price += attr_cost (lesserFabricParts[i]);
        }
    }
    
    var isCollarWhite = shirt.collarWhite == 'true' && shirt.collarFabric == 'RC-Pol-White' && shirt.collarStandFabric == 'RC-Pol-White' ? true : false;
    var isCollarWhite2 = shirt.collarWhite == 'true' && shirt.collarFabric == 'RC-Pol-White' && shirt.collarStandFabric != 'RC-Pol-White' && $.inArray(shirt.collar, ['collarEnglish', 'collarApache', 'collarShawl'] > -1) ? true : false;
    if (isCollarWhite) {
        price -= attr_cost ('collarFabric') + attr_cost ('collarStandFabric');
    }
    if (isCollarWhite2) {
        price -= attr_cost ('collarFabric');
    }
    
    if (shirt.cuffWhite == 'true' && shirt.cuffFabric == 'RC-Pol-White' && shirt.cuffTurnFabric == 'RC-Pol-White') {
        price -= attr_cost ('cuffFabric') + attr_cost ('cuffTurnFabric');
    }

    if (shirt.pocket != 'pocketNone' && shirt.fabric != shirt.pocketsFabric) {
        price += attr_cost ('pocketsFabric');
    }

    if (shirt.epaulettes != 'false' && shirt.fabric != shirt.epaulettesFabric) {
        price += attr_cost ('epaulettesFabric');
    }

    if (shirt.decorations == 'decorationsUndercut') {
        price += shirt.fabric != shirt.underCutFabric  ? attr_cost ('underCutFabric') : 0;
        price += get_cost('threadAngleUndercut');
    }

    if (shirt.decorations == 'decorationsYoke') {
        price += shirt.fabric != shirt.yokeFabric ? attr_cost ('yokeFabric') : 0;
        price += get_cost('threadAngleUndercut');
    }
    
    if (shirt.backPleats == 'backPleatsYoke') {
        price += get_cost ('backPleatsYoke');
        price += get_cost ('threadAngleBack');
    }
    
    price += get_cost('suspended');
    
    price += get_cost('stitchType');
    price += get_cost('elementThreads');
    price += get_cost('buttonSew');
    price += get_cost('collarDecoration');
    price += get_cost('cuffDecoration');
    price += get_cost('buttonThreadDecoration');
    
    // 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');
    price -= calcProductDiscount('shirt', price);
    write_inner ('design_price', String (parseInt (price)));
}

function calcProductDiscount (product_name, price) {
    //Готовые продукты без конструктора не устанавливают productType, но и скидки по ним нет
    if (typeof(productType) == 'undefined' ) {
        return 0;
    }

    if (typeof(customerInfo) == 'undefined' || typeof(customerInfo.groups) == 'undefined') {
        return 0;
    }
    //Акция "cкидка 50%"
    if ( $.inArray('one_half', customerInfo.groups) != -1
         && (
                product_name == 'shirt' && product['fabric'].indexOf('-test') == -1
             || $.inArray(product_name, ['trunks', 'skirt', 'trousers', 'tie']) != -1
            )
    ) {
        return Math.round(price/2);
    }
    return 0;
}

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 (contentGender == 'male' && shirt.backPleats != 'backPleatsNone' && shirt.volume == 'volumeSlim') {
        myalert ('Несовместимо с складками на спинке. Выбор спинки будет изменен.');
        select_icon ('backPleats', attr_default ('backPleats'));
        return;
    }

    if (shirt.volume == 'volumeFree' && shirt.sleeve == 'sleeveLongNarrow') {
        myalert ('Свободный объем несовместим с длинным узким рукавом');
        select_icon ('sleeve', attr_default ('sleeve'));
    }
    if (shirt.volume == 'volumeSlim' && shirt.sleeve == 'sleeveLong') {
        myalert ('Для приталенного объема выполняется длинный узкий рукав');
        select_icon ('sleeve', 'sleeveLongNarrow');
    }

    change_body ();
    if (productType == 'shirt' && shirt.volume == 'volumeSlim') {
        select_icon ('backPleats', attr_default ('backPleats'));
        //disable_button ('backPleats');
    } else {
        //@TODO: раскоментить или удалить
        //enable_button ('backPleats', shirt.backPleats);
    }
    calc_title ();
}

function change_bottomCut () {
    if (shirt.ladiesShirtType) { 
        var defaultLST = attr_default ('ladiesShirtType');
        if (shirt.bottomCut != attr_default ('bottomCut') && shirt.ladiesShirtType != defaultLST) {
            myalert ('Несовместимо с рубашкой-боди. Выбор боди будет изменен');
            select_icon ('ladiesShirtType', defaultLST);
        }
    }
    change_body ();
}

function change_sleeve () {
    /*
    if (shirt.volume == 'volumeFree' && shirt.sleeve == 'sleeveLongNarrow') {
        myalert ('Длинный узкий рукав несовместим со свободным объемом');
        select_icon ('sleeve', attr_default ('sleeve'));
        return;
    }

    if (shirt.volume == 'volumeSlim' && shirt.sleeve == 'sleeveLong') {
        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.sleeve == 'sleeveShortCuff' || shirt.sleeve == 'sleeveShort' || shirt.sleeve == 'sleeveSafari') {
        if (shirt.embroidery == 'embroideryAtCuff')
            select_icon ('embroidery', attr_default ('embroidery'));
        
        hide_item('sleeveBottom_container');
        select_icon('sleeveBottom', attr_default('sleeveBottom'));
    } else {
        show_item('sleeveBottom_container');
    }
    calc_price ();
    calc_title ();
}

function change_flap () {
    var base = '../' + shirt.pocketsFabric + '/';
    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', base + 'flapLeft');
            change_part_buttonsThread ('pocket', 'pocketLeft');
            change_part_buttons ('pocket', 'pocketLeft');
            break;
        case 'pocketBoth':
        case 'pocketBothRound':
            change_part ('flap', base + 'flapBoth');
            change_part_buttonsThread ('pocket', 'pocketBoth');
            change_part_buttons ('pocket', 'pocketBoth');
            break;
    }
}

function change_pocket () {
    var base = '../' + shirt.pocketsFabric + '/';
    if (((shirt.decorations && shirt.decorations != 'decorationsNone') || (shirt.relief && shirt.relief != 'reliefNone')) && shirt.pocket != 'pocketNone') {
        myalert ('Карманы несовместимы с отделкой');
        select_icon ('pocket', attr_default('pocket'));
        return;
    }
    switch (shirt.pocket) {
        case 'pocketNone':
            hide_part ('pocket');
            hide_item ('pocketsFabric_row');
            //hide_item ('pocketsFabric_row');
            if (shirt.pocketsFabric != shirt.fabric) 
                select_icon ('pocketsFabric', shirt.fabric);
            if (shirt.embroidery == 'embroideryAtPocket')
                select_icon ('embroidery', attr_default ('embroidery'));
            //hide_item ('pocket_options');
            ckbox_default ('pocketFlap', 'pocketFlap2');
            break;
        case 'pocketLeft':
            change_part ('pocket', base + 'pocketLeft');
            break;
        case 'pocketBoth':
            change_part ('pocket', base + 'pocketBoth');
            break;
        case 'pocketLeftRound':
            change_part ('pocket', base + 'pocketLeftRound');
            break;
        case 'pocketBothRound':
            change_part ('pocket', base + 'pocketBothRound');
            break;
    }

    if (shirt.pocket != 'pocketNone') {
        show_item ('pocketsFabric_row');
        show_part ('pocket');
        //show_item ('pocket_options');
    }

    elt('but_pocketsFabric').src = resolveAbsoluteUrl(urlbase + base + 'fabric_22_22.png');
    //change_button_text ('pocket', shirt.pocket);
    change_flap ();

    elt('but_pocketsFabric').src = resolveAbsoluteUrl(urlbase + base + 'fabric_22_22.png');
}

function change_pocketsFabric () {
    write_inner ('pocketsFabric_cost', shirt.fabric != shirt.pocketsFabric ? '(+' + attr_cost('pocketsFabric') + 'р)' : '');
    if (shirt.pocket == 'pocketNone')
        return;
    change_pocket ();
/*
    if (shirt.pocket == 'pocketNone')
        return;
    var urlBaseOriginal = urlbase;
    urlbase = design_base + shirt.cuffTurnFabric + '/';
    change_part ('pocket', shirt.pocket);
    elt('but_pocketsFabric').src = urlbase + 'fabric_22_22.png';
    urlbase = urlBaseOriginal;
*/
    /*
    if (shirt.pocket != 'pocketNone' && shirt.fabric != shirt.pocketsFabric) {
        write_inner ('pocketsFabric_cost', shirt.fabric != shirt.pocketsFabric ? '(+' + attr_cost('pocketsFabric') + 'р)' : '');
    }
    */
}

function change_epaulettes () {
    var base = '../' + shirt.epaulettesFabric + '/';
    enable_ckbox ('epaulettes', shirt.epaulettes);
    if (shirt.epaulettes == 'true') {
        show_item ('epaulettesFabric_row');
        show_part ('epaulettes');
        change_part ('epaulettes', base + 'epaulettes');
        show_part ('buttons_epaulettes');
        change_part_buttons ('epaulettes', 'epaulettes');

        //elt('but_epaulettesFabric').src = urlbase + base + 'fabric_22_22.png';
    } else {
        hide_item ('epaulettesFabric_row');
        hide_part ('buttons_epaulettes');
        hide_part ('epaulettes');
        if (shirt.fabric != shirt.epaulettesFabric) {
            select_icon ('epaulettesFabric', shirt.fabric);
        }
        //select_icon ('epaulettesFabric', shirt.fabric);
        //if (shirt.fabric == shirt.epaulettesFabric) {
        //    elt('but_epaulettesFabric').src = urlbase + base + 'fabric_22_22.png';
        //}
    }
    elt('but_epaulettesFabric').src = resolveAbsoluteUrl(urlbase + base + 'fabric_22_22.png');
    calc_price ();
}

function change_epaulettesFabric () {
    change_epaulettes ();
    /*
    if (shirt.epaulettes == 'false')
        return;
    var urlBaseOriginal = urlbase;
    urlbase = design_base + shirt.cuffTurnFabric + '/';
    change_part ('epaulettes', shirt.epaulettes);
    elt('but_epaulettesFabric').src = urlbase + 'fabric_22_22.png';
    urlbase = urlBaseOriginal;
    */
    /*
    if (shirt.epaulettes == 'true' && shirt.fabric != shirt.epaulettesFabric) {
        write_inner ('epaulettesFabric_cost', shirt.fabric != shirt.epaulettesFabric ? '(+' + attr_cost('epaulettesFabric') + 'р)' : '');
    }
    */
    write_inner ('epaulettesFabric_cost', shirt.fabric != shirt.epaulettesFabric ? '(+' + attr_cost('epaulettesFabric') + 'р)' : '');
}

function change_fabric () {
    urlbase = design_base + shirt.fabric + '/';
    shirt.contrastFabric = shirt.fabric;
    //change_button_text ('fabric', shirt.fabric);
    select_icon ('volume', shirt.volume);

    //if (shirt.fabric == shirt.collarFabric) {
        select_icon ('collar', shirt.collar);
    //}
    select_icon ('sleeve', shirt.sleeve);
    //if (shirt.fabric == shirt.cuffFabric) {
        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 = resolveAbsoluteUrl(urlbase + 'photo.jpg');
    var fabric_attrs = productAttr.shirt.fabric.values[shirt.fabric];
    //Затычка для совместимости со старым
    fabric_attrs.symbols = fabric_attrs.symbols.replace(/\.\.\/\.\.\/fabric_help/gi, '/fabric_help');
    
    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', shirt.fabric == 'Custom-fabric' ? 'N/A' : fabric_attrs.density);
    write_inner ('fabric_price', fabric_attrs.price);
    write_inner ('fabric_color', fabric_attrs.color || '');
    
    if (currentProductAttr.fabric.values[shirt.fabric].hasStripes == 'false' && contentGender == 'female') {
        hide_item ('threadAnglePartsContainer');

        select_icon ('threadAngleBack', attr_default('threadAngleBack'));
        select_icon ('threadAngleYoke', attr_default('threadAngleYoke'));
        select_icon ('threadAngleUndercut', attr_default('threadAngleUndercut'));
    } else {
        show_item ('threadAnglePartsContainer');
    }
    
    for (var i = 0; i < fabricParts.length; i++) {
        if (previousFabric == product[fabricParts[i]]) {
            select_icon (fabricParts[i], shirt.fabric);
        }
    }
    
    if (shirt.suspended) change_suspended();
    
    calc_title ();
}

function change_collarFabric () {
    /*
    var base = '../' + shirt.collarFabric + '/';
    change_part ('collar', base + shirt.collar);
    elt('but_collarFabric').src = urlbase + base + 'fabric_22_22.png';
    */
    change_collar ();
    write_inner ('collarFabric_cost', shirt.fabric != shirt.collarFabric ? '(+' + attr_cost('collarFabric') + 'р)' : '');
}

function change_collarStandFabric () {
    /*
    var base = '../' + shirt.collarStandFabric + '/';
    var contrast_img = 'collarContrast';
    if (shirt.model) {
        contrast_img = shirt.collar == 'collarClassic' || shirt.collar == 'collarWide' ? 'collarContrastMedium' : 'collarContrastLow';
    }
    change_part ('collarContrast', base + contrast_img);
    elt('but_collarStandFabric').src = urlbase + base + 'fabric_22_22.png';
    */
    change_collar ();
    write_inner ('collarStandFabric_cost', shirt.fabric != shirt.collarStandFabric ? '(+' + attr_cost('collarStandFabric') + 'р)' : '');
}

function change_cuffFabric () {
    change_cuff ();
    if ((shirt.sleeve == 'sleeveLong' ||shirt.sleeve == 'sleeveLongPuffy' || shirt.sleeve == 'sleeveLongNarrow') && shirt.fabric != shirt.cuffFabric) {
        write_inner ('cuffFabric_cost', '(+' + attr_cost('cuffFabric') + 'р)');
    } else {
        write_inner ('cuffFabric_cost', '');
    }
}

function change_cuffTurnFabric () {
    change_cuff ();
    if ((shirt.sleeve == 'sleeveLong' ||shirt.sleeve == 'sleeveLongPuffy' || shirt.sleeve == 'sleeveLongNarrow') && shirt.fabric != shirt.cuffTurnFabric) {
        write_inner ('cuffTurnFabric_cost', '(+' + attr_cost('cuffTurnFabric') + 'р)');
    } else {
        write_inner ('cuffTurnFabric_cost', '');
    }
}

/*
function change_pocketsFabric () {
    if (shirt.pocket == 'pocketNone')
        return;
    var urlBaseOriginal = urlbase;
    urlbase = design_base + shirt.cuffTurnFabric + '/';
    change_part ('pocket', shirt.pocket);
    elt('but_pocketsFabric').src = urlbase + 'fabric_22_22.png';
    urlbase = urlBaseOriginal;
}
*/

function change_fasteningButtonsFabric () {
    var base = '../' + shirt.fasteningButtonsFabric + '/';
    change_part ('fasteningButtonsFabric', base + 'fasteningOuter');
    elt('but_fasteningButtonsFabric').src = resolveAbsoluteUrl(urlbase + base + 'fabric_22_22.png');
    calc_price ();
    write_inner ('fasteningButtonsFabric_cost', shirt.fabric != shirt.fasteningButtonsFabric ? '(+' + attr_cost('fasteningButtonsFabric') + 'р)' : '');
}

function change_fasteningThreadsFabric () {
    var base = '../' + shirt.fasteningThreadsFabric + '/';
    change_part ('fasteningThreadsFabric', base + 'fasteningInner');
    elt('but_fasteningThreadsFabric').src = resolveAbsoluteUrl(urlbase + base + 'fabric_22_22.png');
    calc_price ();
    write_inner ('fasteningThreadsFabric_cost', shirt.fabric != shirt.fasteningThreadsFabric ? '(+' + attr_cost('fasteningThreadsFabric') + 'р)' : '');
}

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


function change_backPleats () {
    if (contentGender == 'male' && shirt.volume == 'volumeSlim' && shirt.backPleats != 'backPleatsNone') {
        myalert ('Несовместимо с приталенным объемом');
        select_icon ('backPleats', attr_default ('backPleats'));
        return;
    }
    if (shirt.backPleats == 'backPleatsYoke') {
        if (shirt.relief == 'reliefArmhole') {
            myalert ('Несовместимо с рельефом из проймы');
            select_icon ('backPleats', attr_default ('backPleats'));
            return;
        }
        show_item ('threadAngleBackMenuContainer');
    } else {
        hide_item ('threadAngleBackMenuContainer');
        select_icon ('threadAngleBack', attr_default('threadAngleBack'));
    }
}

/**
*   Изменилась кокетка
*/
function change_yoke () {
    redraw_decorationLayer ();
}

/**
*   Изменилась отделка
*/
function change_decorations () {

    var restrictedCollars = ['collarApache', 'collarEnglish', 'collarShawl', 'collarTurnDown'];

    if (shirt.decorations != 'decorationsNone') {

        if (shirt.model == 'modelCutted') {
            myalert ('Несовместимо с вырезной горловиной');
            select_icon ('decorations', attr_default ('decorations'));
            return;
        }


        for (var i=0; i<restrictedCollars.length; i++) {

            if (restrictedCollars[i] == shirt.collar) {
                myalert ('Несовместимо с выбранным воротником');
                select_icon ('decorations', attr_default ('decorations'));
                return;
            }

            //hide_item ('collar_option_' + restrictedCollars[i]);
        }
        /*
        hide_item ('fastening_option_fasteningStandard');
        hide_item ('fastening_option_fasteningHidden');

        hide_item ('pocket_option_pocketLeft');
        hide_item ('pocket_option_pocketLeftRound');
        hide_item ('pocket_option_pocketBoth');
        hide_item ('pocket_option_pocketBothRound');
        */

        if (shirt.fastening != 'fasteningPlank') {
            myalert ('Данная отделка совместима только с застежкой на планке');
            select_icon ('decorations', attr_default ('decorations'));
            return;
        }

        if (shirt.pocket != 'pocketNone') {
            myalert ('Отделка несовместима с карманами');
            select_icon ('decorations', attr_default ('decorations'));
            return;
        }

        
        if (shirt.decorations == 'decorationsUndercut' && shirt.relief == 'reliefNone') {
                myalert ('Требуется рельеф');
                select_icon ('decorations', attr_default ('decorations'));
                return;
        }
        
        if (shirt.decorations == 'decorationsYoke' && shirt.relief == 'reliefShoulder') {
            myalert ('Несовместимо с рельефом из плеча');
            select_icon ('decorations', attr_default ('decorations'));
            return;
        }
        
        if (shirt.collar != 'collarClassic' && shirt.collar != 'collarWide' && shirt.collar != 'collarStanding') {
            myalert ('Данный воротник несовместим с отделкой');
            select_icon ('collar', attr_default ('collar'));
            return;
        }

    }
    
    /*else {
        for (var i=0; i < restrictedCollars.length; i++) {
            show_item ('collar_option_' + restrictedCollars[i]);
        }

        show_item ('fastening_option_fasteningStandard');
        show_item ('fastening_option_fasteningHidden');

        show_item ('pocket_option_pocketLeft');
        show_item ('pocket_option_pocketLeftRound');
        show_item ('pocket_option_pocketBoth');
        show_item ('pocket_option_pocketBothRound');
    }
    */
    switch (shirt.decorations) {
        case 'decorationsNone':
            hide_item ('yokeFabric_row');
            hide_item ('underCutFabric_row');
            select_icon ('yokeFabric', shirt.fabric);
            select_icon ('underCutFabric', shirt.fabric);
            break;
        case 'decorationsUndercut':
            hide_item ('yokeFabric_row');
            hide_item ('pocketsFabric_row');
            show_item ('underCutFabric_row');
            if (shirt.yokeFabric != shirt.fabric) select_icon ('yokeFabric', shirt.fabric);
            if (shirt.pocketsFabric != shirt.fabric) select_icon ('pocketsFabric', shirt.fabric);
            break;
        case 'decorationsYoke':
            show_item ('yokeFabric_row');
            hide_item ('underCutFabric_row');
            hide_item ('pocketsFabric_row');
            if (shirt.underCutFabric != shirt.fabric) select_icon ('underCutFabric', shirt.fabric);
            if (shirt.pocketsFabric != shirt.fabric) select_icon ('pocketsFabric', shirt.fabric);
            break;
    }

    if (!allowed_fasteningThreadsFabric() ) {
        hide_item ('fasteningThreadsFabric_row');
        if (shirt.fasteningThreadsFabric != shirt.fabric) select_icon ('fasteningThreadsFabric', shirt.fabric);
    } else {
        show_item ('fasteningThreadsFabric_row');
    }
    redraw_decorationLayer ();
    calc_price();
}

/**
*   Изменился рельеф
*/
function change_relief () {

    if (shirt.relief != 'reliefNone' && shirt.decorations == 'decorationsYoke') {
        myalert ('Рельефы несовместимы с кокеткой');
        select_icon ('relief', attr_default ('relief'));
        return;

        //hide_item ('decorations_option_decorationsYoke');
    } /*else {
        show_item ('decorations_option_decorationsYoke');
    }*/
    
    if (shirt.relief != 'reliefNone' && shirt.pocket != 'pocketNone') {
        myalert ('Отделка несовместима с карманами');
        select_icon ('relief', 'reliefNone');
        return;
    }
    
    switch (shirt.relief) {
        case 'reliefNone':
            if (shirt.decorations == 'decorationsUndercut') {
                myalert ('Для подреза требуется наличие рельефа');
                select_icon ('relief', attr_default('relief'));
                return;
            }
            hide_item ('underCutFabric_row');
            if (shirt.underCutFabric != shirt.fabric) select_icon ('underCutFabric', shirt.fabric);
            show_item ('yokeFabric_row');
            break;
        case 'reliefArmhole':
            if (shirt.backPleats == 'backPleatsYoke') {
                myalert ('Несовместимо с кокеткой на спине');
                select_icon ('relief', attr_default ('relief'));
                return;
            }
            
            show_item ('underCutFabric_row');
            hide_item ('yokeFabric_row');
            if (shirt.yokeFabric != shirt.fabric) select_icon ('yokeFabric', shirt.fabric);
            break;
        case 'reliefShoulder':
            if (shirt.decorations == 'decorationsYoke') {
                myalert ('Несовместимо с кокеткой на полочке');
                select_icon ('relief', attr_default ('relief'));
                return;
            }
            
            show_item ('underCutFabric_row');
            hide_item ('yokeFabric_row');
            if (shirt.yokeFabric != shirt.fabric) select_icon ('yokeFabric', shirt.fabric);
            break;
    }

    redraw_decorationLayer ();
}

/**
*   Изменился подрез
*/
function change_underCut () {
    redraw_decorationLayer ();
    calc_price();
}

function change_underCutFabric () {
    var base = '../' + shirt.underCutFabric + '/';
    redraw_decorationLayer ();
    write_inner ('underCutFabric_cost', shirt.fabric != shirt.underCutFabric ? '(' + attr_cost ('underCutFabric') + 'р)' : '');
    elt('but_underCut').src = resolveAbsoluteUrl(urlbase + base + 'fabric_22_22.png');
    calc_price();
}

function change_threadAngleUndercut () {
    redraw_decorationLayer ();
    calc_price();
}

function change_yokeFabric () {
    var base = '../' + shirt.yokeFabric + '/';
    redraw_decorationLayer ();
    write_inner ('yokeFabric_cost', shirt.fabric != shirt.yokeFabric ? '(' + attr_cost ('yokeFabric') + 'р)' : '');
    elt('but_yoke').src = resolveAbsoluteUrl(urlbase + base + 'fabric_22_22.png');
    calc_price();
}

function change_threadAngleYoke () {
    redraw_decorationLayer ();
    calc_price();
}

function change_threadAngleBack () {
    calc_price();
}

/**
*   Перерисовать слой с отделкой
*   Вызывается при изменении связанных с ней аттрибутов
*/
function redraw_decorationLayer () {
    var base = '../' + (shirt.decorations == 'decorationsUnderCut' ? shirt.yokeFabric : shirt.underCutFabric) + '/';
    switch (shirt.decorations) {
        case 'decorationsNone':
            hide_item('underCutMenuContainer');
            hide_item('yokeMenuContainer');
            hide_item('threadAngleYokeMenuContainer');
            hide_item('threadAngleUndercutMenuContainer');
            change_part ('relief', shirt.relief);
            change_part ('threadAngle', '../../../images/dummy');
            change_part ('decorations', '../../../images/dummy');
            break;
        case 'decorationsUndercut':
            hide_item('yokeMenuContainer');
            show_item('underCutMenuContainer');
            hide_item('threadAngleYokeMenuContainer');
            show_item('threadAngleUndercutMenuContainer');
            change_part ('relief', shirt.relief);
            change_part ('decorations', 'decorationsUndercut_' + shirt.underCut + (shirt.underCut == 'underCutNone' ? '' : '_' + shirt.relief));
            change_part ('threadAngle', base + shirt.threadAngleUndercut + '_' + shirt.decorations + '_' + shirt.relief);
            break;
        case 'decorationsYoke':
            hide_item('underCutMenuContainer');
            show_item('yokeMenuContainer');
            hide_item('threadAngleUndercutMenuContainer');
            show_item('threadAngleYokeMenuContainer');
            change_part ('relief', shirt.relief);
            change_part ('decorations', 'decorationsYoke_' + shirt.yoke + (shirt.yoke == 'yokeNone' ? '' : '_' + shirt.relief));
            change_part ('threadAngle', base + shirt.threadAngleYoke + '_' + shirt.decorations + '_' + shirt.relief);
            break;
        default:
            break;

    }
}

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 ();
    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') {
        if (product.suspended != 'suspendedNone' && product.suspended != 'suspendedKerchief') {
            myalert('Кнопки несовместимы со съемными элементами: жабо, оборка, галстук');
            select_icon ('buttons', attr_default('buttons'));
            return;
        }
        hide_part ('buttonsThread_sandwich_bottom');
        hide_part ('buttonsThread_sandwich_top');
        select_icon('buttonsThread', attr_default('buttonsThread'));
        $('#select_buttonsThread_window .design_photo, #select_buttonsThread').hide();
        if (currentProductAttr.buttonThreadDecoration) {
            select_icon ('buttonThreadDecoration', attr_default('buttonThreadDecoration'));
            $('#select_buttonThreadDecoration').hide();
        } 
    } else {
        show_part ('buttonsThread_sandwich_bottom');
        show_part ('buttonsThread_sandwich_top');
        $('#select_buttonsThread_window .design_photo, #select_buttonsThread').show();
        $('#select_buttonThreadDecoration').show();
    }
    calc_price ();
}

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 ('embroideryColor');
        //disable_button ('embroideryVariant');
        elt('embroideryText').value = '';
        elt('embroideryText').disabled = true;
        change_photo ('embroideryFont', '../../images/white');

        $('#select_embroideryVariant_window .design_photo, #select_embroideryColor_window .design_photo').hide();
//        $('.img_embroidery_sandwich_thread').hide();
        $('#select_embroideryVariant_window > .design_menu_popup_main, #select_embroideryColor_window > .design_menu_popup_main').hide();
    } else {
        enable_button ('embroideryColor', shirt.embroideryColor);
        enable_button ('embroideryVariant', product.embroideryVariant);
        elt('embroideryText').disabled = false;
        change_photo ('embroideryFont', shirt.embroideryFont);
        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);
        }

        // @TODO: здесь исключение, выяснить почему
        //last_photos['embroideryFont'] = '/' + genderContent + '/threads/' + product.embroideryColor + '/' + product.embroideryColor + '.png';
//        elt('photo_embroideryFont').src = last_photos['embroideryFont'];

//        $('.img_embroidery_sandwich_thread').show();
        $('#select_embroideryVariant_window .design_photo, #select_embroideryColor_window .design_photo').show();
        $('#select_embroideryVariant_window > .design_menu_popup_main, #select_embroideryColor_window > .design_menu_popup_main').show();
    }
    //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 ();
}

function change_stitchType () {
    calc_price();
}

function change_elementThreads () {
    calc_price();
}

function change_buttonSew () {
    calc_price();
}

function change_collarDecoration() {
    calc_price();
}

function change_cuffDecoration() {
    calc_price();
}

function change_buttonThreadDecoration() {
    calc_price();
}

var design_step_active = 0;

function design_step (step) {
    // change_popup ('');
    
    /*
    if (!config['designSteps']) {
        config['designSteps'] = [];
        //design_step_count = $('#design_tabs li').length;
        for (var i = 0; i<design_step_count; i++) {
            var page = $('#design_page_' + i);
        
            config['designSteps'][i] = {
                'step'  : $('#design_step_' + i),
                'page'  : page,
                'firstMenuItem' : $(page).find('.design_menu a:first')
            };
        }
    }
    */
    
    /* Уберем выделение с верхней вкладки и скроем предыдущую активную страницу */
    if (design_step_active) {
        $('#design_step_' + design_step_active).removeClass();
        $('#design_page_' + design_step_active).hide(); // 'design_step';
        
        //hide_item ('design_page_' + design_step_active);
    }
    if (step) {
        if (measurements_step (0))
            return;
        var activeDesignPage = $('#design_page_' + step);
        $('#design_tabs').show();
        
        $('#design_step_' + step).addClass('design_step_active');
        //elt('design_step_' + step).className = 'design_step_active';
        $('.measLeft').hide();
        // АКТИВАЦИЯ ПУНКТА МЕНЮ ПРИ ПЕРЕХОДЕ К ВКЛАДКЕ step
        if (step < design_step_count) {
            $(activeDesignPage).find('.design_menu a:first').trigger('click');
            $('.design_right#shirtPreview').show();
        } else {
            $('.design_right#shirtPreview').hide();
        }
        /*
        switch (step) {
            case 1:
                $('.design_menu a#fabric').trigger('click');
                break;
            case 2:
                $('.design_menu a#designElements').trigger('click');
                break;
            case 3:
                $('.design_menu a#embroidery').trigger('click');
                break;
            case design_step_count:
                $('.design_right#shirtPreview').hide();
                break;
        }
        */
        location.hash = '#design_step_' + step;

        $(activeDesignPage).show();
    } else
        $('#design_tabs').hide();
    design_step_active = step;
    if (step && step < design_step_count)
        $('#design_price_div').show();
    else
        $('#design_price_div').hide();
}

var measurements_step_active = 0;

// ПОКАЗЫВАЕМ НОВЫЙ ШАГ ИЗМЕРЕНИЙ В КОНСТРУКТОРЕ
function measurements_step(step, require) {
	$('.measLeft').show();
	// если последний шаг
    if (step == last_meas_step) {
        $('.changeStep a.measForward').hide();
        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);
    } else {
        $('.changeStep a.measForward').show();
    }

    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);
        if (step == 1) { $('.measurePages').show(); }
        //show_item ('measurements_tabs');
        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');
    }

	$('#measurementsMenu a').removeClass('designMenuActive');
	$('#measurementsMenu #measurements_step_' + step).addClass('designMenuActive');

    measurements_step_active = step;
    show_item('design_tabs');

    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);
    var html = 'Товар добавлен в корзину.<br/>Вы можете продолжить:';
    html    += '<ul class="addShirt-optionsList">'
    html    +=   '<li id="addShirt-toCart">Перейти в корзину</li>';
    html    +=   '<li id="addShirt-toPayment">Оплатить</li>';
    html    +=   '<li id="addShirt-orderTrousers"><a href="/male/ru/trousers">Заказать брюки</a></li>';
    html    +=   '<li id="addShirt-order"><a href="/female/ru/skirt-presets">Заказать юбку</a></li>';
    html    += '</ul>'
    var msg = $(document.createElement('div')).addClass('addShirtResultContainer').html(html);
    myalert (msg);
    $('#MsgAlert-1 #addShirt-toCart').click(function() {
        $('#MsgAlert-1').dialog('close');
        cartView();
    });
    
    $('#MsgAlert-1 #addShirt-toPayment').click(function() {
        $('#MsgAlert-1').dialog('close');
        checkout();
    });
    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 disable_icon (attr, values, showHelp, newCallBack) {
    var cb = newCallBack;
    if (!cb)
        cb = function () {};

    if (!window['orignalCallbacks'])
        window['orignalCallbacks'] = {};
    if (typeof values == 'object') {
        for (var i = 0; i < values.length; i++) {
            var current = values[i];
            var e = $('#' + icon_name (attr) + current);
            window['orignalCallbacks'][attr + current] = e.onclick;
            (function (el, attr, callback, toShowHelp) {
                if (el) {
                    //$(el).click(callback);
                    $(el).removeAttr('onclick');
                    if (toShowHelp) {
                        $(el).mouseover(function(event) {
                            $('#help_' + attr).fadeIn('slow');
                        })
                        .mouseout(function(event) {
                            $('#help_' + attr).fadeOut('slow');
                        })
                        .css('opacity', 0.5);
                    }
                }
                return false;

            })(e, attr, cb, showHelp);
        }
    } else {
         var e = $('#' + icon_name (attr) + values);
         window['orignalCallbacks'][attr + values] = e.onclick;
         (function (el, attr, callback, toShowHelp) {
            if (el) {
                //$(el).click(callback);
                $(el).removeAttr('onclick');
                if (toShowHelp) {
                    $(el).mouseover(function(event) {
                        $('#help_' + attr).fadeIn('slow');
                    })
                    .mouseout(function(event) {
                        $('#help_' + attr).fadeOut('slow');
                    })
                    .css('opacity', 0.5);
                }
                return false;
            }
        })(e, attr, cb, showHelp);
    }
}


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 = Math.round(stdSize/2);
        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 url = '';
    var gender = 'female/';
    var l = window.location;
    url = l.protocol + '//' + l.host + '/';
    url += gender = cart_shirt.ladiesShirtType ? 'female/' : 'male/';
    url += contentLang + (gender == 'male/' && cart_shirt.stitchType ? '/designer-luxe' : '/designer');
    url += cart_shirt.tieEnding ? '/tie' : '';
    url += '/id/' + cart_shirt.objectId;
    window.location = url;
}

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 = icon_name (attr);
    if (!shirt[attr] || !elt(icon + shirt[attr]))
        return '';
    elt(icon + shirt[attr]).className = '';
    return icon;
}

function icon_name (attr) {
    switch (attr) {
        case 'contrastFabric':
            icon = 'icon_contrast_';
            break;
        case 'embroideryColor':
            //icon = 'icon_embroideryColor_';
            //break;
        case 'collarFabric':
            //icon = 'icon_collarFabric_';
            //break;
        case 'collarStandFabric':
            //icon = 'icon_collarStandFabric_';
            //break;
        case 'cuffFabric':
            //icon = 'icon_cuffFabric_';
        case 'cuffTurnFabric':
            //icon = ''
        case 'pocketsFabric':
        case 'epaulettesFabric':
        case 'fasteningThreadsFabric':
        case 'fasteningButtonsFabric':
        case 'underCutFabric':
        case 'yokeFabric':
        case 'collarDecoration':
        case 'cuffDecoration':
        case 'buttonThreadDecoration':
        case 'elementThreads':
            icon = 'icon_' + attr + '_';
            break;
        default:
            icon = 'icon_';
            break;
    }

    return icon;
}

// ВЫБОР ЗНАЧЕНИЯ АТТРИБУТА В КОНСТРУКТОРЕ
function select_icon (attr, val) {
    var icon = deselect_icon (attr);
    
    
    if (attr == 'fabric' /*&& product.fabric == product.contrastFabric*/) {
        previousFabric = product.fabric;
        //select_icon ('contrastFabric', val);
        /*
        for (var i = 0; i < fabricParts.length; i++) {
            if (product.fabric == product[fabricParts[i]]) {
                select_icon (fabricParts[i], 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 select_dropdown (id, attr, val) {
    var elt = $('#' + id);
    if (elt && elt.get(0).tagName == 'SELECT') {
        elt.val(val);
        product[attr] = val;
    }
}

function dropdown_default (id, attr) {
    select_dropdown (id, attr, attr_default(attr));
}

function ckbox_default (attr, id) {
    var def = attr_default(attr);
    shirt[attr] = def == 'false' ? 'true' : 'false';
    $('#' + (id ? id : attr)).attr('checked', def == 'false' ? false : true);
    try {
        eval ('select_ckbox_' + attr + '()');
    } catch (e) {}
}

function resetFabricElements () {
    for (var i in fabricParts) {
        var partName = fabricParts[i];
        if (shirt[partName]) {
            select_icon (partName, shirt.fabric);
        }
    }
    if (shirt.collarWhite) {
        select_ckbox('collarWhite');
    }
    if (shirt.cuffWhite) {
        select_ckbox('cuffWhite');
    }
}

function select_button(what, context, container) {
    $('div.design_menu a').removeClass('designMenuActive');
    $(context).addClass('designMenuActive');
    var button_name = 'button_' + what;
    var el = $('#' + button_name);
/*
    $(context).after('<div class="designMenuActive"></div>');*/
    $('div.design_middle > div.design_menu_popup_bg').hide();
    
    if (config.interface.buttons[button_name] && config.interface.buttons[button_name] == 'disabled')
        return;
    //if (el.hasClass('disabled')) {
    //    return;
    //}
    if (last_button)
        $('#button_' + last_button).removeClass();
    el.attr('class', 'last');
    last_button = what;
    if (container) {
        show_item (container);
    } else {
        show_item ('select_' + what + '_container');
    }
}

function select_ckbox_collarWhite () {
    shirt.collarWhite = shirt.collarWhite == 'true' ? 'false' : 'true';
    if (shirt.collarWhite == 'true') {
        select_icon ('collarFabric', 'RC-Pol-White');
        select_icon ('collarStandFabric', 'RC-Pol-White');
        hide_item ('collarFabric_row');
        hide_item ('collarStandFabric_row');
    } else {
        select_icon ('collarFabric', shirt.fabric);
        select_icon ('collarStandFabric', shirt.fabric);
        show_item ('collarFabric_row');
        show_item ('collarStandFabric_row');
    }
    change_collar ();
}

function select_ckbox_cuffWhite () {
    shirt.cuffWhite = shirt.cuffWhite == 'true' ? 'false' : 'true';
    if (shirt.cuffWhite == 'true') {
        select_icon ('cuffFabric', 'RC-Pol-White');
        select_icon ('cuffTurnFabric', 'RC-Pol-White');
        hide_item ('cuffFabric_row');
        hide_item ('cuffTurnFabric_row');
    } else {
        select_icon ('cuffFabric', shirt.fabric);
        select_icon ('cuffTurnFabric', shirt.fabric);
        show_item ('cuffFabric_row');
        show_item ('cuffTurnFabric_row');
    }
    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_cuffDecoration () {
//    shirt.cuffDecoration = shirt.cuffDecoration == 'true' ? 'false' : 'true';
//    enable_ckbox ('cuffDecoration_ckbox', shirt.cuffDecoration);
//    calc_price();
//}


//function select_ckbox_buttonThreadDecoration () {
//    shirt.buttonThreadDecoration = shirt.buttonThreadDecoration == 'true' ? 'false' : 'true';
//    enable_ckbox('buttonThreadDecoration_ckbox', shirt.buttonThreadDecoration);
//    calc_price();
//}

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_ckbox', shirt.printProductNumber);
}

/*
 * ЗАПИСЬ СОДЕРЖИМОГО КОНТЕЙНЕРА attr В КОНСТРУКТОРЕ
 */
function write_popup (attr, cols, help) {
    var icon = icon_name (attr);
    var s = '';
    var i = 0;
    var j;
    s += '<table cellpadding="5">';
    for (var v in productAttr.shirt[attr].values) {
        s += i ? '' : '<tr>';
        s += '<td id="'+ attr + '_option_' + v +'" class="options">';
        s += '<div class="design_menu_popup_icon">';
        s += '<img src="/' + contentGender + '/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].shortName;
        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>' 
        } else if(attr_cost (attr) != 0 && v != attr_default(attr)){
            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 = icon_name (attr);
    var s = '';
    var i = 0;
    var j;
    var fabricColors = {all: 'Все цвета'};

    var fabricList = '<table>';
    for (var v in productAttr.shirt[attr].values) {
        var colorOrig  = productAttr.shirt[attr].values[v].color;
        var colorLat   = $().transliterate({ direction:'r2l', text: colorOrig });
        var isNewClass = productAttr.shirt[attr].values[v].isNew === 'true' ? 'fabricNew' : '';

        fabricColors[colorLat] = colorOrig;

        fabricList += i ? '' : '<tr>';
        fabricList += '<td width="33%" class="color' + colorLat + ' ' + isNewClass + '">';
        fabricList += '<div class="design_menu_popup_icon">';
        fabricList += '<img src="/' + contentGender + '/shirt/' + v + '/fabric.png" id="' + icon + v + '" onclick="select_icon(\'' + attr + '\',\'' + v + '\')" />';
        if (help)
            s += '<img src="../../images/help.png" onclick="alert(\'help ' + v + '\')" />';
        fabricList += '</div>';
        if (attr == 'fabric') {
            var price = parseInt(productAttr.shirt[attr].values[v].price) + attr_markup_cost('fabric');
            fabricList += '<div class="fabric_price">' + price + ' руб.</div>';
        //fabricList += '<div class="fabric_cotton">' + productAttr.shirt[attr].values[v].shortComposition + '</div>';
        }
        fabricList += '<div class="fabric_name">' + productAttr.shirt[attr].values[v].displayName + '</div>';
        fabricList += '</td>';
        i++;
        if (i >= cols)
            i = 0;
        fabricList += i ? '' : '</tr>';

    }

    var fabricSelect = '<select id="fabricSelect">'
    for (var colorLat in fabricColors) {
        fabricSelect += '<option value="' + colorLat + '">' + fabricColors[colorLat] + '</option>';
    }
    fabricSelect += '</select>';

    s += fabricList;
//    console.log(attr);
//    console.log("%s, %o", attr, fabricColors);

    if (i) {
        for (j = i; j < cols; j++)
            s += '<td>&nbsp;</td>';
        s += '</tr>';
    }
    s += '</table>';

    write_inner ('select_' + attr, s);
    $('div#select_' + attr + '_window > div.design_menu_popup_header > div.fabricSelections').prepend(fabricSelect);
}

function write_collarHeight_popup() {
    s = '<select id="collarHeightSelect">';

    for (var v in productAttr.shirt['collarHeight'].values) {
        s += '<option value="' + v + (v == shirt.collarHeight ? '" selected="selected">' : '">') + productAttr.shirt['collarHeight'].values[v].displayName + '</option>';
//        console.log(productAttr.shirt['collarHeight'].values[v].price);
    }

    s += '</select>';
    $('#select_collarHeight').html(s)
    .children('#collarHeightSelect')
    .change(function(){
        select_icon ('collarHeight', $(this).val());
    });

}

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="/' + contentGender + '/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"> (+' + 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 write_buttonsThread_popup (attr, cols, help) {
    //var icon = attr == 'embroideryColor' ? 'icon_embroideryColor_' : 'icon_';
    var icon = icon_name (attr);
    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="/' + contentGender + '/threads/' + v + '/pict.png" id="' + icon + v + '" onclick="select_icon(\'' + attr + '\',\'' + v + '\')" />';
        s += '<img src="/' + contentGender + '/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;
        if (v != attr_default('buttonsThread') && attr_cost (attr) != 0) {
            s += '<span class="addcost" id="' + v + '_cost"> (+' + currentProductAttr[attr].attr.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 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 change_collarDecoration (sender) {
//    shirt.collarDecoration = sender.value;
//    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 + 'р)');
}

/*
 * cols не используется, вместо него height & width в className
 */
function write_unisex_popup(attr, cols, small, toInvoke, subdir, className)
{
    var html = '';

    html += '<ul class="unisexPopup ' + className + '">';
    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++) {
            var url = resolveAbsoluteUrl(dir + attr + '/' + m + '.png');
            html += '<li>';
            html += '<div class="'+ divClass +'">';
            html += '<img src="' + url +'" id="icon_' + m + '" onclick="'+ invoke +'(\'' + attr + '\',\'' + m + '\')" />';
            html += '</div>';
            html += m;
            html += '</li>';
        }
    } else {
        for (var v in currentProductAttr[attr].values) {
            var url = resolveAbsoluteUrl(dir + v + '.png');
            html += '<li>';
            html += '<div class="'+ divClass +'">';
            html += '<img src="' + url + '" id="icon_' + v + '" onclick="'+ invoke +'(\'' + attr + '\',\'' + v + '\')" />';
            html += '</div>';
            html += currentProductAttr[attr].values[v].displayName;
            if (attr_cost (attr) == 0 && attr_value_cost (attr, v) > 0) {
                html += '<span class="addcost" id="' + v + '_cost"> (+' + currentProductAttr[attr].values[v].price + 'p)</span>';
            }
            html += '</li>';
        }
    }

    html += '</ul>';

    $('#select_' + attr).html(html);
}

/**
 * Нажатие кнопки в опциях вышивки галстука
 */
function select_embroidery_button(type, what)
{
    select_icon(type, what);
    if ('embroideryZodiac2') {
        hide_item('select_embroideryVariant');
    }

    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();
}

function hide_embroidery_container(target) {
    hide_item(target);
    show_item('select_embroideryVariant');
}

