var mix_market_code = '9bd8663a8f903d54ada45ceac81d5def2e73e1f9';
var mix_market_products_code = '491cf932967104f3e8685f8f2b5dc053bb67f393';
var is_design_page = false;
var design_sex = '';
var domain = 'mtmteam';
var customerServiceUrl = '/customerService.php';
var invoiceUrl = '/invoice.php?oid=';
var getReceiptUrl = '/paymentResult.php?';
var tie_design_base = '../customTie/';
var cont1 = 'info';
var cont2 = 'support';

// не ставить запятую после последнего свойства объекта, ибо ie6 это не любит
var partnersEmails = {
    'partner1': 'capytalist@gmail.com',
    'partner2': 'andrey.pisarets@yandex.ru',
    'partner3': 'd.bekmansurov@mtsdistrib.ru',
    'partner4': 'deemonxxx@yandex.ru',
    'partner5': 'natali_s.83@mail.ru'

};

//Шаблон утянут с http://fightingforalostcause.net/misc/2006/compare-email-regex.php
var REGEX_EMAIL = /^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i;
var customerId = '';
var cookieId = '';
var sessId = 0;
var click_count = 0;
var current_page = '';
var current_popup = '';
var current_popup2 = '';
var current_popup3 = '';
var current_popup4 = '';
var current_popup5 = '';
var current_popup6 = '';
var authorized = false;
var partner_status = 'none';
var addresses = {};
var selected_address = {};
var profiles = {};
var last_profile_number = 0;
var profile = {};
var orders = {};
var show_all_orders = false;
var current_order = '';
var order = {};
var order_contents = {};
var cart_contents = {};
var cart_shirt = {};
var shipping_list = {};
var country_list = {};
var order_total = 0;
var account_balance = 0;
var use_balance = false;
var payment_list = {};
var cuffLinks_list = {};
var mtmwood_list = {};
var books_list = {};
var ties_list = {};
var socks_list = {};
var full_socks_list = {};
var samples_oid = '';
var leaflet_oid = ''
var giftCerts_list = {};
var virtualGiftCert_oid = '';
var last_captcha = '';
var radiobuttons = {};
var ckboxes = {};
var li_counter1 = new Image(1,1);
var li_counter2 = new Image(1,1);
var init_count = null;
var lastStackTrace = null;

var config = {
    interface : {
        buttons : { //Включенные/отключенные кнопки
        
        } 
    },
    product : {
        attrPrepared: false
    },
    customerService : { 
        running : false,
        name    : ''
    }
};

var fabricPartsNotContrasts = ['collarFabric', 'cuffFabric', 'pocketsFabric',
    'epaulettesFabric', 'yokeFabric', 'underCutFabric'];

var fabricPartsContrasts = [ 'collarStandFabric', 'cuffTurnFabric', 'fasteningThreadsFabric', 'fasteningButtonsFabric'];
var fabricParts = fabricPartsNotContrasts.concat(fabricPartsContrasts);


function copyFabricPartAttr (product, fabricPart) {
    if (productAttr[product] && productAttr[product][fabricPart]) {
        productAttr[product][fabricPart].values = productAttr[product].contrastFabric.values;
    }
}

function prepareProductAttr () {
    if (config.attrPrepared)
        return;
    
    var i;

    for (i in productAttr.shirt)
        if (productAttr.shirt[i].attr.attrType == 'measure') {
            productAttr.shirt[i].attr.min = productAttr.shirt[i].attr.mensMin;
            productAttr.shirt[i].attr.max = productAttr.shirt[i].attr.mensMax;
        }


    for (i in productAttr.ladies_shirt)
        if (productAttr.ladies_shirt[i].attr.attrType == 'measure') {
            productAttr.ladies_shirt[i].attr.min = productAttr.ladies_shirt[i].attr.ladiesMin;
            productAttr.ladies_shirt[i].attr.max = productAttr.ladies_shirt[i].attr.ladiesMax;
        }

    //Копируем состав тканей из contrastFabric, чтоб избежать избыточных данных
    //тут все запутано по историческим причинам.
    //productAttr[product].contrastFabric (откуда все копируется), содержит ткани, пригодные для изготовления любого не основного 
    //элемента рубашки
    //Те же из них, что действительно пригодны для изготовления только контрастных элементов, имеют суффикс '-contrast',
    $(['shirt', 'ladies_shirt', 'testShirt', 'ladies_testShirt']).each(function(num, product) {
        if ( ! productAttr[product] ) { return true; }
        var contrastFabric = productAttr[product].contrastFabric.values;
        var partsFabric = jQuery.extend({}, contrastFabric); //Копия contrastFabric
        //Удаляем лишние ткани
        for (var fabricName in contrastFabric) {
            if (contrastFabric[fabricName].article.slice(-9) == '-contrast') {
                delete partsFabric[fabricName];
            }
        }

        $(fabricPartsNotContrasts).each(function(index_ignored, part) {
            if ( ! productAttr[product][part] ) { return true; }
            productAttr[product][part].values = partsFabric;
        });
        $(fabricPartsContrasts).each(function(index_ignored, part) {
            if ( ! productAttr[product][part] ) { return true; }
            productAttr[product][part].values = contrastFabric;
        });
    });

    productAttr.mens_shirt = productAttr.shirt;
    
    config.attrPrepared = true;
}

if (window['productAttr']) prepareProductAttr();

var last_meas_mens_step = 12;
var meas_mens = {
    1 : {
        'neckAround' : ''
    },
    2: {
        'shoulderType' : ''
    },
    3 : {
        'chestAround' : ''
    },
    4 : {
        'waistAround' : ''
    },
    5 : {
        'seatAround' : ''
    },
    6 : {
        'bicepsAround' : ''
    },
    7 : {
        'wristAround' : ''
    },
    /* 7 : {
        'lengthToShoulder' : ''
    }, */
    8 : {
        'sleeveLength' : '',
        'shortSleeveLength' : ''
    },
    9 : {
        'chestWidth' : ''
    },
    10 : {
        'backWidth' : ''
    },
    11 : {
        'shirtLength' : '',
        'height' : ''
    },

    last_meas_mens_step : {}
};

var measurements = meas_mens;
var last_measurements_step = last_meas_mens_step;

var last_meas_ladies_step = 16;
var meas_ladies = {
    1 : {
        'neckAround' : ''
    },
    2 : {
        'chestAround' : ''
    },
    3 : {
        'waistAround' : ''
    },
    4 : {
        'seatAround' : ''
    },
    5 : {
        'bicepsAround' : ''
    },
    6 : {
        'threeQuatersAround': ''
    },
    7 : {
        'wristAround' : ''
    },
    8 : {
        'lengthToShoulder' : ''
    },
    9 : {
        'sleeveLength' : '',
        'shortSleeveLength' : ''
    },
    10 : {
        'bustHeight' : ''
    },
    11 : {
        'bustCenter' : ''
    },
    12 : {
        'chestWidth' : ''
    },
    13 : {
        'backWidth' : ''
    },
    14 : {
        'waistLengthBack': ''
    },
    15 : {
        'shirtLength' : '',
        'height' : ''
    },
    last_meas_ladies_step : {}
};

/*
if (!window.console) {
    console = {
        trace   : function () {},
        log     : function () {}
    };
}

if (!window.console.trace) {
    window.console.trace = function () {};
}
*/

function date_conv (d) {
    var a = d.split('-');
    return (a[2] + '.' + a[1] + '.' + a[0]);
}

function date_conv_yy (d) {
    var a = d.split('-');
    return (a[2] + '.' + a[1] + '.' + a[0].substr(2));
}

 function IsValidDate(Day,Mn,Yr) {
    var dateMonth = Mn - 1;
    //Mn-1 потому как у него месяцы с 0 начинаются видимо
    var dt = new Date(Yr, dateMonth, Day);
    
    if (dt.getDate() != Day) {
        return false;
    } else if (dt.getMonth() != dateMonth) {
        return false;
    } else if (dt.getFullYear() != Yr) {
        return false;
    }
        
    return true;
 }

function myalert(msg)
{
    /*
    if ($ && $.gritter) {
        $.gritter.add({
			title: ' ',
			text: msg,
			sticky: true,
			time: 1200
		});
    } else {
        alert(msg);
    }
    */
    $('div.msg-alert').hide().find('.ui-widget-content').dialog('close');
    var container = $('<div class="alertContent"></div>').append(msg).insertAfter(document.body).MsgAlert({autoClose:false, alertWidth: '300', alertHeight: 'auto', wait:false, closeTime:3000, alertTitleDefault:'сообщение'});
}

function myconfirm (msg) {
    return (confirm (msg));
}

// НАЙТИ ЭЛЕМЕНТ ПО ID
function elt(id) {
    if (result = document.getElementById(id)) {
        return result;
    } else {
        if (window.console) {
            //console.info('cant find id, %s', id);
            //console.trace();
        }
    }
    return null;
}

function write_inner (id, contents) {
    $('#' + id).html(contents);
    //elt(id).innerHTML = contents;
}

function show_inline_item (item) {
    try {
        item.style.display = 'inline';
        item.style.visibility = 'visible';
    } catch (e) {
        el = elt(item);
        el.style.display = 'inline';
        el.style.visibility = 'visible';
    }
}

function show_item (item) {
    try {
        item.style.display = 'block';
        item.style.style.visibility = 'visible';
    } catch (e) {
        el = elt(item);
        el.style.display = 'block';
        el.style.visibility = 'visible';
    }
}

function hide_item (item) {
    try {
        item.style.display = 'none';
        item.style.visibility = 'hidden';
    } catch (e) {
        el = elt(item);
        el.style.display = 'none';
        el.style.visibility = 'hidden';
    }
}

function check_inputs (t) {
    var err = false;
    for (var i in t) {
        var e = elt (i);
        if (e.value.match(t[i])) {
            if (e.saved_bgcolor != undefined)
                e.style.backgroundColor = e.saved_bgcolor;
        } else {
            if (e.saved_bgcolor == undefined)
                e.saved_bgcolor = e.style.backgroundColor;
            e.style.backgroundColor = 'red';
            if (!err)
                e.focus();
            err = true;
        }
    }
    if (err) {
        myalert ('Обнаружены ошибки');
        throw 'err validating input';
    }
}

function enable_ckbox (item, set_state) {
    var elt = $('#' + item);
    var currentState = set_state  == 'true' || set_state == true ? 'true' : 'false';
    var previousState = set_state  == 'true' || set_state == true ? 'false' : 'true';
    if (elt) {
        if (elt.is('input')) {
            elt.removeAttr('disabled');
        }
        elt.removeClass(previousState)
        .removeClass('disabled')
        .addClass(currentState);
    }
}

function disable_ckbox (item) {
    var elt = $('#' + item);
    if (elt) {
        if (elt.is('input')) {
            elt.attr('disabled', 'disabled');
        }
        elt.addClass('disabled');
    }
}

function select_ckbox (what) {
    var x = $('#' + what);
    if (x.length) {
        if (x.hasClass('disabled'))
            return;
        eval ('select_ckbox_' + what + '()');
    }
}

function enable_ckbox_button (item, set_state) {
    elt(item).className = 'ckbox ' + set_state;
}

function disable_ckbox_button (item) {
    elt(item).className = 'ckbox disabled';
}

function select_ckbox_button (what) {
    var x = elt(what);
    var c = x.className;
    if (c == 'ckbox disabled')
        return;
    eval ('select_ckbox_button_' + what + '()');
}

function disable_dropdown(item) {
    elt(item).className = 'disabled';
    $("#"+item).attr('disabled', 'disabled');
}

function enable_dropdown(item, value) {
    elt(item).className = '';
    $('#'+item).val(value);
    $("#"+item).removeAttr('disabled');
}


function cursor_wait (item) {
    elt(item).style.cursor = 'progress';
}

function cursor_clear (item) {
    elt(item).style.cursor = 'pointer';
}

function hide_popup6 () {
    if (current_popup6)
        hide_item (current_popup6);
    else
        hide_popup5 ();
}

function hide_popup5 () {
    if (current_popup5)
        hide_item (current_popup5);
    else
        hide_popup4 ();
}

function hide_popup4 () {
    if (current_popup4)
        hide_item (current_popup4);
    else
        hide_popup3 ();
}

function hide_popup3 () {
    if (current_popup3)
        hide_item (current_popup3);
    else
        hide_popup2 ();
}

function hide_popup2 () {
    if (current_popup2)
        hide_item (current_popup2);
    else
        hide_popup ();
}

function hide_popup () {
    if (current_popup)
        hide_item (current_popup);
    else {
        hide_item (current_page);
        show_item ('popups');
        show_item ('menu_popup_container');
    }
}

function show_popup6 () {
    if (current_popup6)
        show_item (current_popup6);
    else
        show_popup5 ();
}

function show_popup5 () {
    if (current_popup5)
        show_item (current_popup5);
    else
        show_popup4 ();
}

function show_popup4 () {
    if (current_popup4)
        show_item (current_popup4);
    else
        show_popup3 ();
}

function show_popup3 () {
    if (current_popup3)
        show_item (current_popup3);
    else
        show_popup2 ();
}

function show_popup2 () {
    if (current_popup2)
        show_item (current_popup2);
    else
        show_popup ();
}

function show_popup () {
    if (current_popup)
        show_item (current_popup);
    else {
        hide_item ('popups');
        hide_item ('menu_popup_container');
        show_item (current_page);
    }
}

function change_popup6 (p) {
    hide_item (current_page);
    show_item ('popups');
    show_item ('menu_popup_container');
    if (current_popup6)
        hide_item (current_popup6);
    current_popup6 = p;
    // change_popup7 ('');
    if (p)
        hide_popup5 ();
    else
        show_popup5 ();
}

function change_popup5 (p) {
    if (current_popup5)
        hide_item (current_popup5);
    current_popup5 = p;
    change_popup6 ('');
    if (p)
        hide_popup4 ();
    else
        show_popup4 ();
}

function change_popup4 (p) {
    if (current_popup4)
        hide_item (current_popup4);
    current_popup4 = p;
    change_popup5 ('');
    if (p)
        hide_popup3 ();
    else
        show_popup3 ();
}

function change_popup3 (p) {
    if (current_popup3)
        hide_item (current_popup3);
    current_popup3 = p;
    change_popup4 ('');
    if (p)
        hide_popup2 ();
    else
        show_popup2 ();

}

function change_popup2 (p) {
    if (current_popup2)
        hide_item (current_popup2);
    current_popup2 = p;
    change_popup3 ('');
    if (p)
        hide_popup ();
    else
        show_popup ();
}

function change_popup (p) {
    if (current_popup)
        hide_item (current_popup);
    current_popup = p;
    change_popup2 ('');
}

function change_page(name)
{
    current_page = name + '_page';
    try {
        eval (current_page + '_init()');
    } catch (e) {}
    show_item (current_page);
}

function clear_email (f) {
    if (f.value == 'e-mail')
        f.value = '';
}

function loadURL (url, callback) {
    var xmlhttp = null;
    if (window.XMLHttpRequest)  // code for Firefox, Opera, IE7, etc.
        xmlhttp = new XMLHttpRequest ();
    else if (window.ActiveXObject)    // code for IE6, IE5
        xmlhttp = new ActiveXObject ('Microsoft.XMLHTTP');
    if (xmlhttp != null) {
        if (callback)
            xmlhttp.onreadystatechange = function () {
                if (xmlhttp.readyState == 4)  // 4 = "loaded"
                    if (xmlhttp.status == 200)  // 200 = "OK"
                        callback (xmlhttp.responseText);
                    else
                        myalert('Произошла ошибка получения данных с сервера: ' + xmlhttp.statusText);
            }
        xmlhttp.open ('GET', url, callback ? true : false);
        xmlhttp.send (null);
    } else
        myalert ('Ваш браузер не поддерживает XMLHTTP.');
}

function customerService (f, action, callback, params) {
    if (config.customerService.running) {
        //console.trace();
        //console.log('tried to run: ' + action + ' already running: ' + config.customerService.name);
        //return;
    }
    
    config.customerService.running = true;
    config.customerService.name = action;
    
    var xmlhttp = null;
    if (window.XMLHttpRequest)  // code for Firefox, Opera, IE7, etc.
        xmlhttp = new XMLHttpRequest ();
    else if (window.ActiveXObject)    // code for IE6, IE5
        xmlhttp = new ActiveXObject ('Microsoft.XMLHTTP');
    if (xmlhttp != null) {
        var i;
        if (f)
            f.style.cursor = 'wait';
        var s = 'action=' + action;
        for (i in params)
            s += '&' + i + '=' + encodeURIComponent(params[i]);
        xmlhttp.onreadystatechange = function () {
            try {
                if (xmlhttp.readyState == 4) {  // 4 = "loaded"
                    config.customerService.running = false;
                    config.customerService.name = '';
                    if (f)
                        f.style.cursor = 'pointer';
                    if (xmlhttp.status == 200) {  // 200 = "OK"
                        eval (xmlhttp.responseText);
                        if (customerServiceCode) {
                            //myalert ('Ошибка ' + customerServiceCode + ': ' + customerServiceErr);
                            myalert (customerServiceErr);
                            if (customerServiceCode == 453)
                                authorize ();
                            else if (customerServiceCode == 454)
                                get_captcha (last_captcha);
                            return;
                        }
                        callback (xmlhttp.responseText);
                    } else
                        myalert('Произошла ошибка получения данных с сервера: ' + xmlhttp.statusText);
                }
            } catch(e) {
                //Античный баг в Firefox - при ошибке вызывает исключение
                //См. https://bugzilla.mozilla.org/show_bug.cgi?id=238559
                //myalert('Произошла ошибка получения данных с сервера: ' + e.message);
            }
        }
        xmlhttp.open ('POST', customerServiceUrl, true);
        xmlhttp.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded');
        xmlhttp.send (s);
    } else
        myalert ('Ваш браузер не поддерживает XMLHTTP.');
}

function error_callback (res) {
}

function handleErr (msg, url, line) {
    var p = {};
    p.msg = lastStackTrace ? msg + '\n\n' + lastStackTrace.join('->') : msg;
    p.url = url;
    p.line = line;
    p.ua = navigator.userAgent;
    customerService (0, 'error', error_callback, p);
    lastStackTrace = null;
    return false;
}

onerror = handleErr;

document.onclick = function () {
    click_count++;
}

function switch2authorized (name) {
    //debugger;
    write_inner ('customerName', name);
    hide_item ('unauthorized');
    show_item ('authorized');
    authorized = true;
    getDetails ();
    try {
        eval (current_page + '_authorized()');
    } catch (e) {}
	$('#ShirtInProfile, #ShirtInProfile_2').show();
	$('#ShirtInProfile_unauth, #ShirtInProfile_unauth_2').hide();
}

function login_callback (res) {
    eval (res);
    switch2authorized (customerName);
}

function login (f) {
    var p = {};
    p.email = elt('email').value;
    p.password = elt('password').value;
    elt('password').blur();
    elt('password').value = '*****';
    customerService (f, 'login', login_callback, p);
    return (false);
}

function switch2unauthorized (dont_close) {
    if (!dont_close)
        change_popup ('');
    hide_item ('authorized');
    show_item ('unauthorized');
    authorized = false;
    if (is_design_page) {
        elt('measurementsName').value = '';
        elt('measurementsName').disabled = true;
        write_inner ('select_profile', '&nbsp;');
        write_inner ('select_profile_cart', 'Для использования сохраненных размеров необходимо <u onclick="authorize()">авторизоваться или зарегистрироваться</u>');
		$('#ShirtInProfile, #ShirtInProfile_2').hide();
		$('#ShirtInProfile_unauth, #ShirtInProfile_unauth_2').show();
    }
    try {
        eval (current_page + '_unauthorized()');
    } catch (e) {}
    //При свежезагруженной страничке currentProductAttr еще не определено, но может быть определено, если пользователь
    //кликнул Logout. В этом случае надо пересчитать цену, тк мокут пропасть скидки.
    if ( typeof currentProductAttr != 'undefined' ) {
        calc_price();
    }
}

function logout_callback (res) {
    switch2unauthorized ();
}

function logout (f) {
    customerService (f, 'logout', logout_callback);
    delete customerInfo;
}

function change_cart (count, sum) {
    write_inner ('cart_count', count);
    write_inner ('cart_sum', sum);

    if (init_count != null && count > init_count) {
        var mixMarketProductsCardImg = new Image(1,1);
        mixMarketProductsCardImg.src = 'http://mixmarket.biz/tr.plx?e=3779415&r='+escape(document.referrer)+'&t='+(new Date()).getTime();
    }
    init_count = count;
}

function days2text (t) {
    switch (t % 100) {
        case 11:
        case 12:
        case 13:
        case 14:
            return 'дней';
    }
    switch (t % 10) {
        case 1:
            return 'день';
        case 2:
        case 3:
        case 4:
            return 'дня';
    }
    return 'дней';
}

function change_productionTime (t) {
    if (is_design_page) {
        if (design_sex == 'f')
            t = t > 7 ? t : 7;
        write_inner ('production_time', t);
        write_inner ('production_time_days', days2text (t));
    }
}

function getOrder_callback (res) {
    eval (res);
    order = zorder;
    order_contents = a;
    write_inner ('order_num', order.orderNum);
    write_inner ('order_date', date_conv (order.orderDate));
    var s = '';
    for (var i in a) {
        var o = a[i];
        if (o.category.match(/^custom/)) {
            //FIXME корявое повторение кода, смотри getCart_callback
            switch(o.category) {
                case 'customshirt':
                    if (o.variation && o.category == 'customshirt') {
                        src = '/' + contentGender + '/shirtPresets/'+ o.variation + '/pict.jpg';
                    } else {
                        src = '/' + contentGender + '/' + o.category + '/'+ o.product + '/fabric_icon.png';
                    }                    
                    break;
                case 'customskirt':
                    src = '/' + contentGender + '/skirtPresets/' + o.variation + '/pict_cart.jpg';
                    break;
                case 'customTie':
                    src = '/' + contentGender + '/' + o.category + '/' + o.product + '/fabric_icon.png';
                    break;
                case 'customBooklet':
                    src = '/' + contentGender + '/' + o.category + '/booklet_pict.jpg';
                    break;
            }
        } else { 
            switch (o.category) {
                case 'presets':
                    switch (o.variation) {
                        case 'ladiesSkirt':
                            //src = '../skirtPresets/' + o.article + '/pict.jpg';
                            src = '/' + contentGender + '/skirtPresets/' + o.article + '/pict.jpg';
                            break;
                    }
                    break;
                case 'mensTrousers':
                    src = '/' + contentGender + '/trousersPresets/' + o.variation + '/pict_cart.jpg';
                    break;
                case 'mensTrunks':
                    src = '/male/trunks/' + o.variation + '/pict_cart.jpg';
                    break;
                case 'accessories':
                    src = '/male/elysees/' + o.product + '/' + o.article + '/pict_cart.jpg';
                    break;
                default:
                    src = '/' + contentGender + '/' + o.category + '/' + o.product + '_pict.jpg';
                    break;
            }
        }
        s += '<div class="cart_article">';
        s += '<table summary="">';
        s += '<tr>';
        s += '<td width="100">';
        s += '<img alt="" src="' + src + '" /><br />';
        s += '</td>';
        s += '<td width="130">';
        s += '<span class="articleName" onclick="orderArticleView(this,\'' + i + '\')">';
        s += o.displayName;
        s += '</span>';
        s += '<br />Цена: ' + o.price + ' руб.<br />';
        s += '<br />Количество: ' + o.count + '<br />';
        s += '<br />Сумма: ' + o.sum + ' руб.';
        s += '</td>';
        s += '<td>';
        s += '<span class="articleDescrHeader">Описание:</span><br />';
        s += o.shortDescription;
        s += '</td>';
        s += '</tr>';
        s += '</table>';
        s += '</div>';
    }
    s += 'Стоимость товаров: ' + (order.sum - order.shippingSum) + ' руб.<br />';
    s += 'Стоимость доставки: ' + order.shippingSum + ' руб.<br />';
    s += 'Итого: ' + order.sum + ' руб.<br />';
    var toPay = order.sum - order.usedOst - order.usedVirtual;
    var usedBalance = order.sum - toPay;
    if (usedBalance > 0) {
        s += 'Использовано с л/с: ' + usedBalance + ' руб.<br/>';
        s += 'К оплате: <b>' + toPay + '</b> руб.<br />';
    }
    if (toPay > 0 && order.paidByCard == '0' && !order.shipping.match (/^intl/))
        show_inline_item ('getInvoice');
    else
        hide_item ('getInvoice');
    if (order.paidByCard != '0')
        show_inline_item ('getReceipt');
    else
        hide_item ('getReceipt');
    var state = order.orderState;
    if (state == 'created' && toPay > 0) {
        getActiveAddress ();
        write_inner ('checkout4_toPay', toPay); //Для того, чтоб работал Ассист из истории
        write_inner ('checkout4_orderNum', order.orderNum);
        show_inline_item ('payOrder');
        show_inline_item ('payOrderAssist');
    } else {
        hide_item ('payOrder');
        hide_item ('payOrderAssist');
    }
    if (state == 'created' && toPay == 0)
        show_inline_item ('confirmOrder');
    else
        hide_item ('confirmOrder');
    if (state == 'created' || state == 'confirmed' || state == 'scheduled' || state == 'scheduled2')
        show_inline_item ('cancelOrder');
    else
        hide_item ('cancelOrder');
    if (state == 'shipped' || state == 'shipped2')
        show_inline_item ('confirmDelivery');
    else
        hide_item ('confirmDelivery');
    write_inner ('orderView', s);
    change_popup3 ('orderView_page');
}


// ЗАПОЛНЕНИЕ КОНТЕЙНЕРА СОДЕРЖИМЫМ КОРЗИНЫ
function getCart_callback(res) 
{
    eval (res);
    //init_sum = sum;
    change_cart(count, sum);
    change_productionTime(productionTime);
    var i;
    var s = '';
    cart_contents = a;
    for (i in a) {
        var o = a[i];
        //var src = o.category == 'customshirt' ? '../shirt/' + o.product + '/fabric_icon.png' : '../' + o.category + '/' + o.product + '_pict.jpg';
        var src = '';
        if (o.category.match(/^custom/)) {
            //FIXME корявое повторение кода, см getOrder_callback
            switch(o.category) {
                case 'customshirt':
                    if (o.variation && o.category == 'customshirt') {
                        src = '/' + contentGender + '/shirtPresets/'+ o.variation + '/pict.jpg';
                    } else {
                        src = '/' + contentGender + '/' + o.category + '/'+ o.product + '/fabric_icon.png';
                    }                    
                    break;
                case 'customskirt':
                    src = '/' + contentGender + '/skirtPresets/' + o.variation + '/pict_cart.jpg';
                    break;
                case 'customTie':
                    src = '/' + contentGender + '/' + o.category + '/' + o.product + '/fabric_icon.png';
                    break;
                case 'customBooklet':
                    src = '/' + contentGender + '/' + o.category + '/booklet_pict.jpg';
                    break;
            }
        } else {
            switch (o.category) {
                case 'presets':
                    switch (o.variation) {
                        case 'ladiesSkirt':
                            //src = '../skirtPresets/' + o.article + '/pict.jpg';
                            src = '/' + contentGender + '/skirtPresets/' + o.article + '/pict.jpg';
                            break;
                    }
                    break;
                case 'mensTrousers':
                    src = '/' + contentGender + '/trousersPresets/' + o.variation + '/pict_cart.jpg';
                    break;
                case 'mensTrunks':
                    src = '/male/trunks/' + o.variation + '/pict_cart.jpg';
                    break;
                case 'accessories':
                    src = '/male/elysees/' + o.product + '/' + o.article + '/pict_cart.jpg';
                    break;
                default:
                    src = '/' + contentGender + '/' + o.category + '/' + o.product + '_pict.jpg';
                    break;
            }
        }
        //s += '<div class="cart_article">';
        
        s += '<div class="cart_row_div cart_article">'
        
        s += '<div class="cart_first_column">'
            s += '<img alt="" src="' + src + '" /><br />';
            if (o.category != 'giftCerts') {
                s += '<a href="#" onclick="updateArticleAmount(this,\'' + i + '\')">Пересчитать</a><br />';
            }
            s += '<a href="#" onclick="removeArticle(this,\'' + i + '\')">Удалить</a>';
        s += '</div>'
        
        s += '<div class="cart_second_column">';
            s += '<a href="#" class="articleName" onclick="articleView(this,\'' + i + '\')">';
            s += o.displayName;
            s += '</a>';
            s += '<br />Цена: ' + o.price + ' руб.<br />';
            s += '<br />Количество: <input type="text" id="article_count_' + i + '" size="1" maxlength="1" value="' + o.count + '" /><br />';
            s += '<br />Сумма: ' + o.sum + ' руб.';
        s += '</div>';
        
        s += '<div class="cart_third_column">';
            s += '<span class="articleDescrHeader">Описание:</span><br />';
            s += o.shortDescription;
        s += '</div>';
        /*
        s += '<table summary="">';
        s += '<tr>';
        s += '<td width="100">';
        s += '<img alt="" src="' + src + '" /><br />';
        if (o.category != 'giftCerts') {
            s += '<a href="#" onclick="updateArticleAmount(this,\'' + i + '\')">Пересчитать</a><br />';
        }
        s += '<a href="#" onclick="removeArticle(this,\'' + i + '\')">Удалить</a>';
        s += '</td>';
        s += '<td width="130">';
        s += '<a href="#" class="articleName" onclick="articleView(this,\'' + i + '\')">';
        s += o.displayName;
        s += '</a>';
        s += '<br />Цена: ' + o.price + ' руб.<br />';
        s += '<br />Количество: <input type="text" id="article_count_' + i + '" size="1" maxlength="1" value="' + o.count + '" /><br />';
        s += '<br />Сумма: ' + o.sum + ' руб.';
        s += '</td>';
        s += '<td>';
        s += '<span class="articleDescrHeader">Описание:</span><br />';
        s += o.shortDescription;
        s += '</td>';
        s += '</tr>';
        s += '</table>';
        */
        s += '</div>';
        
        s += '</div>';
    }
    write_inner('cartView', s);

    if (s) {
        change_popup('cartView_page');
    }
}

// ПОЛУЧЕНИЕ СОДЕРЖИМОГО КОРЗИНЫ
function getCart(getCartContents)
{
    var p = {};
    if (getCartContents) {
        p.getCartContents = 'true';
    }
    customerService(0, 'getCart', getCart_callback, p);
}

function get_captcha (id) {
    last_captcha = id;
    var d = new Date ();
    var t = d.getTime();
    elt(id).src = customerServiceUrl + '?action=captcha&rnd=' + t;
    elt('r_captcha').value = '';
    elt('rgc_captcha').value = '';
}

function change_subscribeNews () {
    enable_ckbox_button ('subscribeNews', ckboxes.subscribeNews);
}

function select_ckbox_button_subscribeNews () {
    ckboxes.subscribeNews = !ckboxes.subscribeNews;
    change_subscribeNews ();
}

function change_subscribeNews2 () {
    enable_ckbox_button ('subscribeNews2', ckboxes.subscribeNews2);
}

function select_ckbox_button_subscribeNews2 () {
    ckboxes.subscribeNews2 = !ckboxes.subscribeNews2;
    change_subscribeNews2 ();
}

function change_subscribeSMS () {
   var phone = phone_field_to_sms_phone( elt('rc_phone').value);
   if (!phone) {
       $("#subscribeSMS_label").text("Да, я хочу получать SMS от MTMteam на телефон: <не заполнено поле 'телефон'>");
       //Само значение ckboxes.subscribeSMS при выключении чекбокса не изменится. Случай
       //'пустой телефон' (=>чекбокс выключен) и subscribeSMS == true будет отдельно обработан в setDetails
       disable_ckbox_button('subscribeSMS');
   } else {
       $("#subscribeSMS_label").text("Да, я хочу получать SMS от MTMteam на телефон: " + phone);
       enable_ckbox_button ('subscribeSMS', ckboxes.subscribeSMS);
   }
}

function select_ckbox_button_subscribeSMS () {
    ckboxes.subscribeSMS = !ckboxes.subscribeSMS;
    change_subscribeSMS();
}


function show_register () {
    if (!cookieId) {
        myalert ('Требуется поддержка cookies');
        return;
    }
    elt('r_male').checked = false;
    elt('r_male_img').className = 'radio false';
    elt('r_female').checked = false;
    elt('r_female_img').className = 'radio false';
    radiobuttons.r_sex = '';
    ckboxes.subscribeNews = true;
    change_subscribeNews ();
    elt('r_feeEmail').value = '';
    get_captcha ('captcha');
    change_popup ('registration_page');
}

function register_callback (res) {
    eval (res);
    myalert ('Готово');
    
    change_popup ('');
    elt('email').value = elt('r_email').value;
    var f = elt('r_form');
    for (var i=0; i<f.length; i++)
        if (f.elements[i].type == 'text' || f.elements[i].type == 'password')
            f.elements[i].value = '';
    switch2authorized (customerName);
}

function register (f) {
    var t = {
        'r_email' : REGEX_EMAIL,
        'r_password' : /./,
        'r_password2' : /./,
        'r_lastName' : /[А-Яа-яA-Za-z]{2}/,
        'r_firstName' : /[А-Яа-яA-Za-z]{2}/,
        'r_mnogoRu' : /(^$)|(^\d{8}$)/,
        'r_captcha' : /[0-9a-z]{5}/
    };
    check_inputs (t);
    if (elt('r_password').value != elt('r_password2').value) {
        myalert ('Введенные пароли не совпадают');
        elt('r_password').focus();
        return;
    }
    var p = {};
    p.lastName = elt('r_lastName').value;
    p.firstName = elt('r_firstName').value;
    p.middleName = elt('r_middleName').value;
    p.email = elt('r_email').value;
    if (elt('r_feeEmail').value)
        p.feeEmail = elt('r_feeEmail').value;
    p.subscribeNews = ckboxes.subscribeNews;
    if (elt('r_birthday').value)
        p.birthday = elt('r_birthday').value;
    p.sex = elt('r_male').checked ? 1 : elt('r_female').checked ? 2 : 9;
    p.phone = elt('r_phone').value;
    if (elt('r_mnogoRu').value)
        p.mnogoRu = elt('r_mnogoRu').value;
    p.password = elt('r_password').value;
    p.captcha = elt('r_captcha').value;
    customerService (f, 'register', register_callback, p);
}

function checkBirthdayFormat (prefix) {
    var regexp = /^\d{2}$/;
    var yearRegexp = /^\d{4}$/gi;
    var year = elt(prefix + '_year');
    var month = elt(prefix + '_month');
    var day = elt(prefix + '_day');
    if (year && month && day && year.value && month.value && day.value) {
        if (year.value != 'ГГГГ' && month.value != 'ММ' && day.value != 'ДД') {
            if (!year.value.match(yearRegexp) || parseInt(year.value,10) < 1) {
                myalert('Год указан неверно');
                return false;
            }
            if (!month.value.match(regexp) || parseInt(month.value,10) > 12 || parseInt(month.value,10) < 1) {
                myalert('Месяц указан неверно');
                return false;
            }
            if (!day.value.match(regexp) || parseInt(day.value,10) > 31 || parseInt(day.value,10) < 1) {
                myalert('День указан неверно');
                return false;
            }
            
            if (!IsValidDate(day.value, month.value, year.value)) {
                myalert('Неверная дата');
                return false;
            }
            
        }
        
        var numFilled = 0;
        if (year.value != 'ГГГГ') numFilled++;
        if (month.value != 'ММ') numFilled++;
        if (day.value != 'ДД') numFilled++;
        
        if (numFilled == 0) {
            return "default";
        }
        
        if (numFilled > 0 && numFilled != 3) {
            myalert('Дата указана не полностью');
            return false;
        }
        
        return true;
    }
    return "none";
}

function getDetails_callback (res) {
    eval (res);
    customerId = objectId;
    customerInfo = {
        'name' : firstName + ' ' + lastName,
        'firstName' : firstName,
        'lastName' : lastName,
        'email' : email,
        'phone' : phone,
        'groups': recipientGroups.split(',')
    };
    partner_status = partnerStatus;
    write_inner ('p_name', lastName + ' ' + firstName + ' ' + middleName);
    write_inner ('p_email', email);
    if (raiffeisenCode) {
        write_inner ('p_raiffeisen', raiffeisenCode);
        elt ('rc_raiffeisen').value = raiffeisenCode;
        elt ('raiffeisenCodeCheckout').value = raiffeisenCode;
    }
    //write_inner ('p_birthday', birthday && birthday != '0000-00-00' ? birthday : 'не указан');
    if (birthday && birthday != '0000-00-00') {
        var parts = birthday.split('-');
        if (parts.length && parts.length == 3) {
            write_inner ('p_birthday', parts[2] + '-' + parts[1] + '-' + parts[0]);
        }
    }
    
    write_inner ('p_phone', phone ? phone : 'не указан');
    write_inner ('p_sex', sex == 1 ? 'мужской' : sex == 2 ? 'женский' : 'не указан');
    write_inner ('p_subscribeNews', subscribeNews == 'true' ? 'да' : 'нет');
    write_inner ('p_subscribeSMS', subscribeSMS == 'true' ? phone_field_to_sms_phone(phone) : 'нет');
    write_inner ('p_personalDiscount', personalDiscount ? personalDiscount + ' %' : '0 %');
    write_inner ('p_personalCode', customerId.substr (0, 4) + '-' + customerId.substr (4, 4));
    if (mnogoRu) {
        write_inner ('p_mnogoRu', mnogoRu);
        elt('p_mnogoRu_row').className = '';
    } else {
        elt('p_mnogoRu_row').className = 'collapsed';
    }
    balance_details = {
        ost         : parseInt (ost, 10),
        usedOst     : parseInt (usedOst, 10),
        virtualOst  : parseInt (virtualOst, 10),
        usedVirtual : parseInt (usedVirtual, 10)
    };
    account_balance = balance_details.ost;
    account_balance -= balance_details.usedOst;
    account_balance += balance_details.virtualOst;
    account_balance -= balance_details.usedVirtual;

    write_inner ('account_balance', account_balance);
    elt('account_balance_nonzero').style.display = account_balance ? 'inline' : 'none';
    elt('rc_email').value = email;
    elt('rc_lastName').value = lastName;
    elt('rc_firstName').value = firstName;
    elt('rc_middleName').value = middleName;
    if (birthday && birthday != '0000-00-00') {
        var parts = birthday.split('-');
        if (parts.length && parts.length == 3) {
            elt('rc_year').value = parts[0];
            elt('rc_month').value = parts[1];
            elt('rc_day').value = parts[2];
        }
    }
    elt('rc_phone').value =  phone ? phone : '';
    elt('rc_mnogoRu').value =  mnogoRu;
    elt('mnogoRu').value =  mnogoRu;
    radiobuttons.rc_sex = '';
    elt('rc_male').checked = false;
    elt('rc_male_img').className = 'radio false';
    elt('rc_female').checked = false;
    elt('rc_female_img').className = 'radio false';
    if (sex == 1)
        elt('rc_male').click();
    else if (sex == 2)
        elt('rc_female').click();
    ckboxes.subscribeNews2 = subscribeNews == 'true';
    change_subscribeNews2 ();
    if (ckboxes.subscribeNews2) {
        hide_item ('subscribeNews_link');
    } else {
        show_inline_item ('subscribeNews_link')
    }
    ckboxes.subscribeSMS = (subscribeSMS == 'true'); // Конвертим в bool
    change_subscribeSMS();

    if (is_design_page)
        elt('measurementsName').disabled = false;
    customerService (0, 'shirtProfileList', profileList_callback);
    try {
        eval (current_page + '_details()');
    } catch (e) {}
    calc_price();
}

function getDetails () {
    customerService (0, 'getDetails', getDetails_callback);
}

function personal_page () {
    change_popup ('personal_page');
}

function soc_buttons(u,t,i){var str = '';if(!u)u=location.href;if(!t)t=document.title;u=encodeURIComponent(u);t=encodeURIComponent(t);var s=new Array('"http://www.facebook.com/sharer.php?u='+u+'&t='+t+'" title="Поделиться в Facebook"','"http://www.odnoklassniki.ru/dk?st.cmd=addShare&st._surl='+u+'&title='+t+'" title="Добавить в Одноклассники"','"http://www.livejournal.com/update.bml?event='+u+'&subject='+t+'" title="Опубликовать в LiveJournal"','"http://twitter.com/share?text='+t+'&url='+u+'" title="Добавить в Twitter"','"#" onclick="window.open(\'http://vkontakte.ru/share.php?url='+u+'&title='+t+((i)?'&image='+i:'')+'\', \'_blank\', \'scrollbars=0, resizable=1, menubar=0, left=200, top=200, width=554, height=421, toolbar=0, status=0\');return false" title="Поделиться В Контакте"','"http://connect.mail.ru/share?url='+u+'&title='+t+'" title="Поделиться в Моем Мире@Mail.Ru"','"http://share.yandex.ru/go.xml?service=moikrug&url='+u+'&title='+t+'" title="Поделиться в Мой Круг"');for(i=0;i<s.length;i++)str += (i != 1 ? '<a rel="nofollow" style="display:inline-block;width:16px;height:16px;margin:0 7px 0 0;background:url(images/soc_buttons.png) -'+16*i+'px 0" href='+s[i]+' target="_blank"></a>' : ''); return str;} 

function shirtsInProfileList_callback(res){

	eval (res);
    shirts = a;

    var oid;
	var host = 'http://' + document.location.href.split("/")[2];

    var s = '';
    s += '<table>';
    for (oid in a) {
        var obj = a[oid];
		var sex = ((obj.bustCenter === undefined)? 'male':'female');
		var href = sex + '/ru/designer/id/' + oid;
		var img_src = sex + '/shirtGallery/' + oid.substr(0,2) + '/' + oid.substr(2,2) + '/' + oid.substr(4) + '.jpg';
        s += '<tr><td valign="top"><img width="281" height="308" src="../../'+img_src+'"></img></td><td valign="top" style="padding-left: 30px"><a style="normal_link" href=/' + href + '>Загрузить в конструктор</a><br/><span class="normal_link" onclick="deleteShirtInProfileList(\'' + oid + '\')">Удалить</span><br/><br/>Поделиться ссылкой: '+soc_buttons(host + '/' + href, obj.displayName, host+'/'+img_src)+'</td></tr>';
    }
    s += '</table>';
    write_inner ('shirtsInProfileList', s);
}

function deleteShirtInProfileList(oid){
	if (!myconfirm ('Удалить рубашку, Вы уверены?')) return;
	var p = {};
	p.objectId = oid;
	customerService (0, 'deleteShirtInProfileList', deleteShirtInProfileList_callback, p);
}

function deleteShirtInProfileList_callback(res){
	myalert('Удалено!');
	customerService (0, 'shirtsInProfileList', shirtsInProfileList_callback);
}

function changeDetails_page () {
    change_popup2 ('changeDetails_page');
    $("#rc_phone").keyup( function() {
        //Обновляем флажок 'слать SMS' и подпись для него в процессе редактирования телефона
        change_subscribeSMS();
    });
}

function setDetails_callback (res) {
    myalert ('Готово');
    personal_page ();
    elt('email').value = elt('rc_email').value;
    switch2authorized (elt('rc_firstName').value + (elt('rc_middleName').value ? ' ' + elt('rc_middleName').value : ''));
}

function setDetails (f) {
    var t = {
        'rc_email' : REGEX_EMAIL,
        'rc_lastName' : /[А-Яа-яA-Za-z]{2}/,
        'rc_firstName' : /[А-Яа-яA-Za-z]{2}/,
        'rc_mnogoRu' : /(^$)|(^\d{8}$)/,
        'rc_raiffeisen' : /(^$)|(^\d{9}$)/
    };
    check_inputs (t);
    var p = {};
    p.lastName = elt('rc_lastName').value;
    p.firstName = elt('rc_firstName').value;
    p.middleName = elt('rc_middleName').value;
    p.email = elt('rc_email').value;
    p.subscribeNews = ckboxes.subscribeNews2;
    var sms_phone = phone_field_to_sms_phone( elt('rc_phone').value);
    if (sms_phone && ckboxes.subscribeSMS ) {
        p.subscribeSMS = 'true';
    } else {
        p.subscribeSMS = 'false';
    }
    var dateCheck = checkBirthdayFormat('rc');
    if (dateCheck === false) {
        return;
    } else if (dateCheck == true) {
        p.birthday = elt('rc_year').value + '-' + elt('rc_month').value + '-' + elt('rc_day').value;
    }
    p.sex = elt('rc_male').checked ? 1 : elt('rc_female').checked ? 2 : 9;
    p.phone = elt('rc_phone').value;
    if (elt('rc_mnogoRu').value)
        p.mnogoRu = elt('rc_mnogoRu').value;
    if (elt('rc_raiffeisen').value)
        p.raiffeisenCode = elt('rc_raiffeisen').value;
    customerService (f, 'setDetails', setDetails_callback, p);
}

function countryList_callback (res) {
    eval (res);
    country_list = a;
    var s = '';
    for (var i in a) {
        var o = a[i];
        var c = o.alpha2 + ' ' + o.nameRU;
        s += '<span class="normal_link" onclick="select_country(\'' + o.iso + '\')">' + c + '</span><br />';
    }
    write_inner ('countryList', s);
    change_popup3 ('countryList_page');
}

function countryList (f) {
    customerService (f, 'countryList', countryList_callback);
}

function select_country (iso) {
    var c = country_list[iso];
    elt('cia_iso').value = iso;
    elt('cia_country').value = c.nameEN + ' / ' + c.nameRU;
    elt('cia_postIndex').value = '';
    elt('cia_region').value = '';
    elt('cia_city').value = '';
    elt('cia_streetAddress').value = '';
    elt('cia_recipientName').value = '';
    elt('cia_contactPhone').value = '';
    change_popup3 ('createIntlAddress_page');
    elt('cia_postIndex').focus();
}

function changePass_callback (res) {
    myalert ('Готово');
    change_popup2 ('');
}

function changePass (f) {
    if (!elt('cp_oldpassword').value) {
        myalert ('Не заполнено поле "Старый пароль"');
        elt('cp_oldpassword').focus();
        return;
    }
    if (!elt('cp_newpassword').value) {
        myalert ('Не заполнено поле "Новый пароль"');
        elt('cp_newpassword').focus();
        return;
    }
    if (elt('cp_newpassword').value != elt('cp_newpassword2').value) {
        myalert ('Введенные пароли не совпадают');
        elt('cp_newpassword').focus();
        return;
    }
    var p = {};
    p.oldpassword = elt('cp_oldpassword').value;
    p.newpassword = elt('cp_newpassword').value;
    customerService (f, 'changePass', changePass_callback, p);
}

function changePass_page () {
    elt('cp_oldpassword').value = '';
    elt('cp_newpassword').value = '';
    elt('cp_newpassword2').value = '';
    change_popup2 ('changePass_page');
}

function redeemGiftCert_page () {
    elt('rgc_giftCode1').value = '';
    elt('rgc_giftCode2').value = '';
    // elt('rgc_giftCode3').value = '';
    // elt('rgc_giftCode4').value = '';
    elt('rgc_captcha').value = '';
    get_captcha ('captcha2');
    change_popup2 ('redeemGiftCert_page');
    _gaq.push(['_trackPageview', '/account/redeemGiftCert' ]);
}

function redeemGiftCert_callback (res) {
    myalert ('Готово');
    getDetails ();
    change_popup2 ('');
    _gaq.push(['_trackEvent', 'Biz', 'redeemGiftCert', 'Success' ]);
}

function redeemGiftCert (f) {
    var t = {
        'rgc_giftCode1' : /^[0-9a-f]{4}$/i,
        'rgc_giftCode2' : /^[0-9a-f]{4}$/i,
        // 'rgc_giftCode3' : /^[0-9a-f]{4}$/i,
        // 'rgc_giftCode4' : /^[0-9a-f]{4}$/i,
        'rgc_captcha' : /^\w+$/
    };
    check_inputs (t);
    var p = {};
    p.giftCode = elt('rgc_giftCode1').value + elt('rgc_giftCode2').value; // + elt('rgc_giftCode3').value + elt('rgc_giftCode4').value;
    p.captcha = elt('rgc_captcha').value;
    customerService (f, 'redeemGiftCert', redeemGiftCert_callback, p);
    _gaq.push(['_trackEvent', 'Biz', 'redeemGiftCert', 'Attempt' ]);
}

function createAddress_page () {
    elt('ca_postIndex').value = '';
    elt('ca_country').value = '';
    elt('ca_region').value = '';
    elt('ca_rn').value = '';
    elt('ca_city').value = '';
    elt('ca_np').value = '';
    elt('ca_streetAddress').value = '';
    elt('ca_recipientName').value = '';
    elt('ca_contactPhone').value = '';
    change_popup3 ('createAddress_page');
    elt('ca_postIndex').focus();

    _gaq.push(['_trackPageview', "/account/createAddress" ]);
}

function getAddressByIndex_callback (res) {
    eval (res);
    elt('ca_country').value = country;
    elt('ca_region').value = region;
    elt('ca_rn').value = rn;
    elt('ca_city').value = city;
    elt('ca_np').value = np;
}

function getAddressByIndex (f) {
    elt('ca_country').value = '';
    elt('ca_region').value = '';
    elt('ca_rn').value = '';
    elt('ca_city').value = '';
    elt('ca_np').value = '';
    var p = {};
    p.postIndex = elt('ca_postIndex').value;
    if (!p.postIndex.match(/^\d{6}$/)) {
        myalert ('Почтовый индекс должен состоять из 6 цифр');
        elt('ca_postIndex').focus();
        return;
    }
    customerService (f, 'getAddressByIndex', getAddressByIndex_callback, p);
}

function createAddress_callback (res) {
    customerService (0, 'addressList', addressList_callback);
    change_popup3 ('');
}

function createAddress (f) {
    var p = {};
    p.country = elt('ca_country').value;
    p.postIndex = elt('ca_postIndex').value;
    p.region = elt('ca_region').value;
    p.rn = elt('ca_rn').value;
    p.city = elt('ca_city').value;
    p.np = elt('ca_np').value;
    p.streetAddress = elt('ca_streetAddress').value;
    p.recipientName = elt('ca_recipientName').value;
    p.contactPhone = elt('ca_contactPhone').value;
    if (!p.country) {
        myalert ('Ошибка в почтовом индексе');
        elt('ca_postIndex').focus();
        return;
    } else if (!p.streetAddress) {
        myalert ('Не заполнен адрес');
        elt('ca_streetAddress').focus();
        return;
    } else if (!p.recipientName) {
        myalert ('Не заполнено ФИО получателя');
        elt('ca_recipientName').focus();
        return;
    }
    customerService (f, 'createAddress', createAddress_callback, p);
}

function createIntlAddress_callback (res) {
    customerService (0, 'addressList', addressList_callback);
    change_popup3 ('');
}

function createIntlAddress (f) {
    var p = {};
    p.iso = elt('cia_iso').value;
    p.country = elt('cia_country').value;
    p.postIndex = elt('cia_postIndex').value;
    p.region = elt('cia_region').value;
    p.rn = '';
    p.city = elt('cia_city').value;
    p.np = '';
    p.streetAddress = elt('cia_streetAddress').value;
    p.recipientName = elt('cia_recipientName').value;
    p.contactPhone = elt('cia_contactPhone').value;
    if (!p.postIndex && !myconfirm ('Не заполнен почтовый индекс, Вы уверены, что хотите сохранить адрес без индекса?')) {
        elt('cia_postIndex').focus();
        return;
    }
    if (!p.streetAddress) {
        myalert ('Не заполнен адрес');
        elt('cia_streetAddress').focus();
        return;
    } else if (!p.recipientName) {
        myalert ('Не заполнено имя получателя');
        elt('cia_recipientName').focus();
        return;
    }
    customerService (f, 'createAddress', createAddress_callback, p);
}

function addressList_callback (res) {
    eval (res);
    addresses = a;
    write_inner ('checkout_address', '<span class="normal_link" onclick="createAddress_page()">(+) Добавить адрес доставки</span>');
    write_inner ('addressList', '');

    var empty = true;
    var oid;
    for (oid in a) {
        empty = false;
        break;
    }
    if (empty)
        return;

    var s = '';
    s += '<table summary="" cellspacing="0">';
    s += '<tr><th width="60%">Адрес</th><th>Действия</th></tr>';
    for (oid in a) {
        var obj = a[oid];
        s += obj.selected == 'true' ? '<tr class="selected">' : '<tr>';
        s += '<td>';
        s += obj.displayName;
        s += '</td>';
        s += '<td>';
        s += '<span class="normal_link" onclick="updateAddress_page(\'' + oid + '\')">';
        s += 'Изменить';
        s += '</span>';
        s += ' ';
        s += '<span class="normal_link" onclick="deleteAddress(this,\'' + oid + '\')">';
        s += 'Удалить';
        s += '</span>';
        if (obj.selected != 'true') {
            s += '<br />';
            s += '<span class="normal_link" onclick="setActiveAddress(this,\'' + oid + '\')">';
            s += 'Назначить текущим';
            s += '</span>';
        } else {
            selected_address = obj;
            var phone = selected_address.contactPhone;
            var displayPhone = phone ? ', тел.' + phone : '';
            write_inner ('checkout_address', obj.displayName + displayPhone
                + '<br /><span class="normal_link" onclick="addressList_page()">Изменить адрес</span>'
                + '<div><span class="inverse_link" onclick="checkout2()">Продолжить</span></div>');
        }
        s += '</td>';
        s += '</tr>';
    }
    s += '</table>';
    write_inner ('addressList', s);
}

function addressList_page () {
    customerService (0, 'addressList', addressList_callback);
    change_popup2 ('addressList_page');
    _gaq.push(['_trackPageview', '/account/addressSelect' ]);
}

function savedShirts_page(){
	change_popup2 ('savedShirts_page');
	customerService (0, 'shirtsInProfileList', shirtsInProfileList_callback);
}

function updateNatlAddress_page (oid) {
    elt('ua_objectId').value = oid;
    elt('ua_postIndex').value = addresses[oid].postIndex;
    elt('ua_country').value = addresses[oid].country;
    elt('ua_region').value = addresses[oid].region;
    elt('ua_rn').value = addresses[oid].rn;
    elt('ua_city').value = addresses[oid].city;
    elt('ua_np').value = addresses[oid].np;
    elt('ua_streetAddress').value = addresses[oid].streetAddress;
    elt('ua_contactPhone').value = addresses[oid].contactPhone;
    elt('ua_recipientName').value = addresses[oid].recipientName;
    change_popup3 ('updateAddress_page');
}

function updateIntlAddress_page (oid) {
    elt('uia_objectId').value = oid;
    elt('uia_iso').value = addresses[oid].iso;
    elt('uia_postIndex').value = addresses[oid].postIndex;
    elt('uia_country').value = addresses[oid].country;
    elt('uia_region').value = addresses[oid].region;
    elt('uia_city').value = addresses[oid].city;
    elt('uia_streetAddress').value = addresses[oid].streetAddress;
    elt('uia_contactPhone').value = addresses[oid].contactPhone;
    elt('uia_recipientName').value = addresses[oid].recipientName;
    change_popup3 ('updateIntlAddress_page');
}

function updateAddress_page (oid) {
    if (addresses[oid].iso)
        updateIntlAddress_page (oid);
    else
        updateNatlAddress_page (oid);

    _gaq.push(['_trackPageview', '/account/updateAddress' ]);
}

function updateAddress_callback (res) {
    addressList_page ();
}

function updateAddress (f) {
    var p = {};
    p.objectId = elt('ua_objectId').value;
    p.country = elt('ua_country').value;
    p.postIndex = elt('ua_postIndex').value;
    p.region = elt('ua_region').value;
    p.rn = elt('ua_rn').value;
    p.city = elt('ua_city').value;
    p.np = elt('ua_np').value;
    p.streetAddress = elt('ua_streetAddress').value;
    p.recipientName = elt('ua_recipientName').value;
    p.contactPhone = elt('ua_contactPhone').value;
    customerService (f, 'updateAddress', updateAddress_callback, p);
}

function updateIntlAddress (f) {
    var p = {};
    p.objectId = elt('uia_objectId').value;
    p.iso = elt('uia_iso').value;
    p.country = elt('uia_country').value;
    p.postIndex = elt('uia_postIndex').value;
    p.region = elt('uia_region').value;
    p.rn = '';
    p.city = elt('uia_city').value;
    p.np = '';
    p.streetAddress = elt('uia_streetAddress').value;
    p.recipientName = elt('uia_recipientName').value;
    p.contactPhone = elt('uia_contactPhone').value;
    customerService (f, 'updateAddress', updateAddress_callback, p);
}

function deleteAddress_callback (res) {
    addressList_page ();
}

function deleteAddress (f, oid) {
    var p = {};
    p.objectId = oid;
    customerService (f, 'deleteAddress', deleteAddress_callback, p);
}

function setActiveAddress_callback (res) {
    customerService (0, 'addressList', addressList_callback);
    change_popup2 ('');
}

function setActiveAddress (f, oid) {
    var p = {};
    p.objectId = oid;
    customerService (f, 'setActiveAddress', setActiveAddress_callback, p);
}

function cartView () {
//    if ($('#cart_sum').html() == '0') {
//        myalert('Ваша корзина пуста');
//        return false;
//    }
    getCart(1);
    _gaq.push(['_trackPageview', '/account/cartView' ]);
    return false; //Чтоб не прыгало
}

function removeArticle (f, oid) {
    var p = {};
    p.objectId = oid;
    p.objectType = cart_contents[oid].objectType;
    p.getCartContents = 'true';
    customerService (f, 'removeArticle', getCart_callback, p);
}

function updateArticleAmount (f, oid) {
    var p = {};
    p.objectId = oid;
    p.objectType = cart_contents[oid].objectType;
    p.newCount = elt('article_count_' + oid).value;
    p.getCartContents = 'true';
    customerService (f, 'updateArticleAmount', getCart_callback, p);
}

function cart_shirt_attr_val (attr, val) {
    return ('<b>' + productAttr.shirt[attr].attr.displayName + '</b>: ' + val + '<br />');
}

function cart_shirt_attr (attr) {
    return (cart_shirt_attr_val (attr, productAttr.shirt[attr].values[cart_shirt[attr]].shortName));
}

// ЗАПОЛНЯЕМ СТРАНИЦУ КАСТОМНОЙ РУБАШКИ В КОРЗИНЕ
function getShirt_callback(res)
{
    eval(res);
    cart_shirt = a;
    var last_measurements_step = a.model ? last_meas_ladies_step : last_meas_mens_step;
    var measurements = a.model ? meas_ladies : meas_mens;
    var attrs = a.model ? productAttr.ladies_shirt : productAttr.mens_shirt;
    var s = '';
    s += '<table summary="">';
    s += '<tr>';
    s += '<td width="50%">';
    //    s += '<span class="articleDescrHeader">Ткань:</span>';
    if (a.article) {
        s += '<img alt="" src="' + design_base + '../shirtPresets/' + a.article + '/pict.jpg" />';
    } else {
        s += '<img alt="" src="' + design_base + a.fabric + '/fabric_icon.png" />';
    }
    s += '<br /><span class="articleDescrHeader"><b>Описание:</b></span><br/>';
    s += a.description;
    s += '</td>';
    s += '<td width="50%">';
    var i, j, n = 0;
    s += '<span class="articleDescrHeader"><b>Размеры:</b></span><br/>';
    for (i = 1; i < last_measurements_step; i++)
        for (j in measurements[i])
            if (a[j]) {
                if (attrs[j].attr.attrType == 'measure') {
                    s += ++n + '. ' + attrs[j].attr.displayName + ': ' + a[j] + ' см<br />';
                } else {
                    s += ++n + '. ' + attrs[j].attr.displayName + ': ' + attrs[j].values[a[j]].displayName + '<br />';
                }
            }
    if (a.stdSize && !a.model)
        s += ++n + '. ' + attrs.stdSize.attr.displayName + ': ' + a.stdSize + ' см<br />';
    if (a.article) {
        s += ++n + '. ' + attrs.volume.attr.displayName +': ' + attrs.volume.values[a.volume].shortName + '<br/>';
        switch(a.volume) {
            case 'volumeSlim':
                s += ++n + '. ' + attrs.sleeve.attr.displayName + ': ' + attrs.sleeve.values['sleeveLongNarrow'].shortName + '<br/>';
                break;
            default:
                s += ++n + '. ' + attrs.sleeve.attr.displayName + ': ' + attrs.sleeve.values['sleeveLong'].shortName + '<br/>';
                break;
        }
    }
    s += '</td>';
    s += '</tr>';
    s += '</table>';

    write_inner('shirtView', s);

    if (!a.article) {
        show_inline_item ('copy2design');
    } else {
        hide_item ('copy2design');
    }
    if (current_popup == 'cartView_page')
        change_popup2 ('shirtView_page');
    else
        change_popup4 ('shirtView_page');
}

function close_shirtView () {
    if (current_popup2 == 'shirtView_page')
        change_popup2 ('');
    else
        change_popup4 ('');
}

function close_presetView () {
    if (current_popup2 == 'presetView_page')
        change_popup2 ('');
    else
        change_popup4 ('');
}

function close_tieView () {
    if (current_popup2 == 'customTieView_page')
        change_popup2 ('');
    else
        change_popup4 ('');
}

// ПРОСМОТР КАСТОМНОЙ РУБАШКИ В КОРЗИНЕ
function customshirtView(f, o)
{
    var p = {};
    p.objectId = o.objectId;
    p.objectType = o.objectType;
    customerService (f, 'objectRead', getShirt_callback, p);
}

function presetsView (f, o) {
    if (o) {
        var html = '';
        var src = '/images/dummy.gif';
        switch (o.variation) {
            case 'ladiesSkirt':
                src = '../skirtPresets/' + o.article + '/pict.jpg';
                break;
        }
        
        if (o.category == 'customskirt') {
            src = '/' + contentGender + '/skirtPresets/' + o.variation + '/pict.jpg';
        }
        switch (o.category) {
            case 'customskirt':
                $('#presetView_page > h3').html('Юбка');
                src = '/' + contentGender + '/skirtPresets/' + o.variation + '/pict.jpg';
                break;
            case 'mensTrousers':
                $('#presetView_page > h3').html('Брюки');
                src = '/' + contentGender + '/trousersPresets/' + o.variation + '/pict.jpg';
                break;
            case 'mensTrunks':
                $('#presetView_page > h3').html('Трусы-шорты мужские');
                src = '/mens/trunks/' + o.variation + '/pict.jpg';
                break;
        }

        html += '<table summary="">';
        html += '<tr>';
        html += '<td width="50%">';
        html += '<img alt="" src="' + src + '"/>';

        /*
        if (a.article) {
            s += '<img alt="" src="' + design_base + '../shirtPresets/' + a.article + '/pict.jpg" />';
        } else {
            s += '<img alt="" src="' + design_base + a.fabric + '/fabric_icon.png" />';
        }
        */
        html += '<br /><span class="articleDescrHeader"><b>Описание:</b></span><br />';
        html += o.description;
        html += '</td>';
        html += '<td width="50%">&nbsp;</td>';
        html += '</tr>';
        html += '</table>';

        write_inner ('presetView', html);

        if (current_popup == 'cartView_page')
            change_popup2 ('presetView_page');
        else
            change_popup4 ('presetView_page');
    }
}

// СТРАНИЦА ТОВАРА В КОРЗИНЕ
function articleView (f, oid)
{
    var o = cart_contents[oid];
    eval (o.category + 'View (f, o)');
}

function orderArticleView (f, oid) {
    var o = order_contents[oid];
    eval (o.category + 'View (f, o)');
}

function customshirtView (f, o) {
    var p = {};
    p.objectId = o.objectId;
    p.objectType = o.objectType;
    customerService (f, 'objectRead', getShirt_callback, p);
}

function customskirtView (f, o) {
    presetsView (f, o);
}

function mensTrousersView (f, o) {
    presetsView (f, o);
}

function mensTrunksView (f, o) {
    presetsView(f, o);
}

function customTieView (f, o) {
    var p = {};
    p.objectId = o.objectId;
    p.objectType = o.objectType;
    customerService (f, 'objectRead', getTie_callback, p);
}

function checkout () {
    if (elt('cart_count').innerHTML == '0') {
        myalert ('Ваша корзина пуста');
        return;
    }

    customerService (0, 'addressList', addressList_callback);
    write_inner ('checkout_sum', elt('cart_sum').innerHTML);
    change_popup ('checkout_page');

    _gaq.push(['_trackPageview', '/account/orderOverview' ]);
    _gaq.push(['_trackEvent', 'Biz', 'checkout' ]);
}

function shippingList_callback (res) {
    eval (res);
    shipping_list = a;
    var s = '';
    s += '<table summary="">';
    s += '<tr><td>&nbsp;</td><td><span class="articleDescrHeader">Способы доставки:</span></td><td>&nbsp;</td></tr>';
    var sel = 'true';
    for (var i in a) {
        if (sel == 'true')
            radiobuttons.shippingMethod = i;
        var m = selected_address.contactPhone.match(/\d/g);
        var bad_phone = (m == null || m.length < 10);
        var disabled = bad_phone && jQuery.inArray(a[i].shippingMethod, ['cpcrShipping', 'maxiPostPickupShipping', 'dhlShipping'] ) > -1;
        var system_radio_class = disabled ? ' disabled="disabled"' : sel == 'true' ? ' checked' : '';
        var img_radio_class = disabled ? ' disabled' : sel;
        s += '<tr>';
        s += '<td>';
        s += '<input type="radio" name="shippingMethod" class="shippingMethod_radio" id="' + i + '" value="' + i + '"' + system_radio_class + ' onclick="change_radio(this)" />';
        s += '<img alt="" class="radio ' + img_radio_class + '" src="/images/dummy.gif" id="' + i + '_img" onclick="elt(\'' + i + '\').click()" />';
        s += '</td>';
        s += '<td>';
        s += '<label for="' + i + '" onclick="elt(\'' + i + '\').click();return(false)">' + a[i].description + '</label>';
        s += disabled ? ' (<span class="normal_link" id="contactPhone_required_'+a[i].shippingMethod+'" onclick="addressList_page()">Требуется контактный телефон</span>)' : '';
        s += '</td>';
        s += '<td>';
        s += 'Стоимость<br />' + a[i].price + '&nbsp;руб.';
        s += '</td>';
        s += '</tr>';
        sel = 'false';
    }
    s += '</table>';
    write_inner ('checkout_shipping', s);
}

function shippingList () {
    var p = {};
    p.objectType = 'shipping';
    customerService (0, 'objectList', shippingList_callback, p);
}

function checkout2 () {
    write_inner ('checkout2_sum', elt('cart_sum').innerHTML);
    change_use_balance ();
    write_inner ('checkout_balance', account_balance);
    write_inner ('checkout2_mnogoSum', Math.round(parseInt(elt('cart_sum').innerHTML) / 7));
    var mnogoCode = $('#mnogoRu').unbind('keyup').keyup(function(){
        if ($(this).is('input:text[value!=""]')) {
            $('#checkout2_mnogoRu').show();
        } else {
            $('#checkout2_mnogoRu').hide();
        }
        return false;
    }).val();
    if (mnogoCode.length) {
        $('#checkout2_mnogoRu').show();
    }
    if (account_balance)
        show_item ('use_account_balance');
    else
        hide_item ('use_account_balance');
    shippingList ();
    change_popup2 ('checkout2_page');

    _gaq.push(['_trackPageview', '/account/postServiceList' ]);
}

function change_use_balance () {
    enable_ckbox ('use_balance', use_balance);
}

function select_ckbox_use_balance () {
    use_balance = !use_balance;
    change_use_balance ();
}

function checkout3_paymentList_callback (res) {
    eval (res);
    payment_list = a;
    var intl = false;
    for (var i in shipping_list) {
        intl = shipping_list[i].shippingMethod.match (/^intl/);
        break;
    }
    var s = '';
    s += '<table summary="">';
    for (var i = 0, len = a.length; i < len; ++i) {
        //Фикс глюка в ie, когда пользовательская функция indexOf оказывается в списке его значений
        if (typeof a[i] != 'object') continue;
        
        var pm = a[i].paymentMethod;
        var sel = pm == 'cardPayment';
        if (sel)
            radiobuttons.paymentMethod = pm;
        else if (intl)
            continue;
        s += '<tr>';
        s += '<td>';
        s += '<input type="radio" name="paymentMethod" class="paymentMethod_radio" id="' + pm + '" value="' + pm + '"' + (sel ? ' checked' : '') + ' onclick="change_radio(this)" />';
        s += '<img alt="" class="radio ' + sel + '" src="/images/dummy.gif" id="' + pm + '_img" onclick="elt(\'' + pm + '\').click()" />';
        s += '</td>';
        s += '<td>';
        s += '<label for="' + pm + '" onclick="elt(\'' + pm + '\').click();return(false)">' + a[i].displayName + '</label>';
        s += '</td>';
        s += '</tr>';
    }
    s += '</table>';
    write_inner ('checkout_payment', s);
    change_popup ('checkout3_page');
}

function checkout3_callback (res) {
    eval(res);
    sum -= 0;
    discount -= 0;
    var shipping_cost = parseInt (0 + shipping_list[radiobuttons.shippingMethod].price, 10);
    var usedBalance = use_balance && account_balance > 0 ? Math.min (sum, account_balance) : 0;
    var toPay = sum - usedBalance;
    write_inner ('checkout3_fullSum', sum - shipping_cost + discount);
    write_inner ('checkout3_discount', discount);
    write_inner ('checkout3_sum', sum - shipping_cost);
    write_inner ('checkout3_shipping', shipping_cost);
    write_inner ('checkout3_total', sum);
    write_inner ('checkout3_usedBalance', usedBalance);
    write_inner ('checkout3_toPay', toPay);

    if (toPay > 0) {
        show_item ('checkout_payment');
    } else {
        hide_item ('checkout_payment');
    }

    customerService (0, 'paymentList', checkout3_paymentList_callback);
}

function checkout3 (f) {
    var sum = parseInt (0 + elt('cart_sum').innerHTML, 10);
    var shipping_cost = parseInt (0 + shipping_list[radiobuttons.shippingMethod].price, 10);
    var raiffeisen = elt('raiffeisenCodeCheckout').value;
    var mnogoRu = elt('mnogoRu').value;
    var p = {};
    p.sum = sum + shipping_cost;
    p.shipping = shipping_list[radiobuttons.shippingMethod].shippingMethod;
    p.shippingSum = shipping_cost;
    p.useBalance = use_balance;
    if (mnogoRu) {
        var t = {
            'mnogoRu' : /^\d{8}$/
        };
        check_inputs (t);
        p.mnogoRu = mnogoRu;
    }

    if (raiffeisen) {
        var t = {
            'raiffeisenCodeCheckout' : /^\d{9}$/
        };
        check_inputs (t);
        p.raiffeisenCode = raiffeisen;
    }

    customerService (f, 'preCreateOrder', checkout3_callback, p);
    _gaq.push(['_trackPageview', '/account/paymentServiceList' ]);
}

function get_invoice_paymentList_callback (res) {
    eval (res);
    payment_list = a;
    var objectId = order.objectId;
    var total = parseInt (0 + order.sum, 10);
    var shipping_cost = parseInt (0 + order.shippingSum, 10);
    write_inner ('get_invoice_sum', total - shipping_cost);
    write_inner ('get_invoice_shipping', shipping_cost);
    write_inner ('get_invoice_total', total);
    var s = '';
    s += '<table summary="">';
    for (var i = 0, len = a.length; i < len; ++i) {
        var pm = a[i].paymentMethod;
        if (pm == 'cardPayment' || pm == 'emoneyPayment')
            continue;
        var sel = pm == 'postalPayment';
        if (sel)
            radiobuttons.invoice_paymentMethod = pm;
        s += '<tr>';
        s += '<td>';
        s += '<input type="radio" name="invoice_paymentMethod" class="invoice_paymentMethod_radio" id="invoice_' + pm + '" value="' + pm + '"' + (sel ? ' checked' : '') + ' onclick="change_invoice_radio(this)" />';
        s += '<img alt="" class="radio ' + sel + '" src="/images/dummy.gif" id="invoice_' + pm + '_img" onclick="elt(\'invoice_' + pm + '\').click()" />';
        s += '</td>';
        s += '<td>';
        s += '<label for="invoice_' + pm + '" onclick="elt(\'invoice_' + pm + '\').click();return(false)">' + a[i].displayName + '</label>';
        s += '</td>';
        s += '</tr>';
    }
    s += '</table>';
    s += '<p>';
    s += 'Получить бланк в формате <a id="invoice_doc" href="' + invoiceUrl + objectId + '&format=doc&payment=postalPayment" target="_blank">DOC</a> (MS Word)';
    s += ', <a id="invoice_pdf" href="' + invoiceUrl + objectId + '&format=pdf&payment=postalPayment" target="_blank">PDF</a> (Acrobat Reader), ';
    s += '<a id="invoice_jpg" href="' + invoiceUrl + objectId + '&format=jpg&payment=postalPayment" target="_blank">JPEG</a>';
    s += '</p>';
    write_inner ('get_invoice_payment', s);
    change_popup3 ('get_invoice_page');
}

function get_invoice (f) {
    customerService (f, 'paymentList', get_invoice_paymentList_callback);
    _gaq.push(['_trackPageview', '/account/getInvoice' ]);
}

function change_invoice_radio (f) {
    change_radio (f);
    var objectId = order.objectId;
    var pm = radiobuttons.invoice_paymentMethod;
    elt('invoice_doc').href = invoiceUrl + objectId + '&format=doc&payment=' + pm;
    elt('invoice_pdf').href = invoiceUrl + objectId + '&format=pdf&payment=' + pm;
    elt('invoice_jpg').href = invoiceUrl + objectId + '&format=jpg&payment=' + pm;
}

function createOrder_callback (res) {
    eval (res);
    discountSum -= 0;
    write_inner ('checkout4_orderNum', orderNum);
    write_inner ('checkout4_fullSum', sum - shippingSum + discountSum);
    write_inner ('checkout4_discount', discountSum);
    write_inner ('checkout4_sum', sum - shippingSum);
    write_inner ('checkout4_shipping', shippingSum);
    
    var toPay = sum - usedOst - usedVirtual;
    var usedBalance = sum - toPay;
    write_inner ('checkout4_usedBalance', usedBalance);
    write_inner ('checkout4_toPay', toPay);
    var payment = radiobuttons.paymentMethod;
    var s = '';
    s += '<div id="checkout_invoice">';
    //s += '<p>';
    if (toPay) {
        switch (payment) {
            case 'cardPayment':
                s += 'Вы выбрали оплату пластиковой картой.<br/>';
                s += 'Оплата производится на сервере платежной системы "КиберПлат".<br/>';
                s += 'Сейчас будет произведен переход на сайт "КиберПлат".<br/>';
                s += 'По возвращении обратно на наш сайт Ваш заказ будет доступен в истории заказов в Вашем "Личном кабинете".';
                if (0 && !document.referrer) {
                    s += '<br/><br/><b>Внимание!</b><br/>';
                    s += 'Ваш браузер не предоставил адрес ссылающейся страницы (Referer).<br/>';
                    s += 'Пожалуйста, проверьте настройки Вашего браузера или других систем, которые могут блокировать отправку Referer.<br/>';
                    s += 'Сервер КиберПлат требует предоставления Referer и проверяет его соответствие регистрационным данным интернет-магазина.<br/>';
                    s += 'В случае отсутствия или несоответствия возвращается отказ с сообщением "В переданных магазином данных заказа содержится ошибка. Свяжитесь с администратором магазина".';
                }
                break;
            case 'emoneyPayment':
                s += 'Вы выбрали оплату электронными деньгами.<br/>';
                s += 'Оплата производится на сервере платежной системы "Assist".<br/>';
                s += 'Сейчас будет произведен переход на сайт "Assist".<br/>';
                break;
            case 'postalPayment':
                s += 'Вы выбрали почтовый перевод для оплаты заказа.<br />';
                s += 'Ниже представлен бланк для оплаты в любом почтовом отделении.';
                break;
            case 'sbrfPayment':
                s += 'Вы выбрали оплату через Сбербанк.<br />';
                s += 'Ниже представлен бланк для оплаты заказа в любом отделении Сбербанка России.';
                break;
            case 'bankPayment':
                s += 'Вы выбрали оплату банковским переводом.<br />';
                s += 'Ниже представлен счет для оплаты заказа.';
                break;
        }
        //s += '</p>';
        if (payment != 'cardPayment' && payment != 'emoneyPayment') {
            s += '<div>';
            s += 'Получить бланк в формате <a href="' + invoiceUrl + objectId + '&payment=' + payment + '&format=doc" target="_blank">DOC</a> (MS Word)';
            s += ', <a href="' + invoiceUrl + objectId + '&payment=' + payment + '&format=pdf" target="_blank">PDF</a> (Acrobat Reader), ';
            s += '<a href="' + invoiceUrl + objectId + '&payment=' + payment + '&format=jpg" target="_blank">JPEG</a>';
            s += '</div>';
        }
        s += '</div>';
        
        switch (payment) {
            case 'cardPayment':
                s += '<div><span class="inverse_link" onclick="payOrder(this,\'' + objectId + '\')">Оплатить заказ</span></div>';
                break;
            case 'emoneyPayment':
                s += '<div><span class="inverse_link" onclick="payOrderAssist(this,\'' + objectId + '\')">Оплатить заказ</span></div>';
                break;
            default:
                s += '<div><span class="inverse_link" onclick="checkout_confirm(this,\'' + objectId + '\')">Подтвердить заказ</span></div>';
                break;
        }
    } else {
        s += '&nbsp;</p></p></div>';
        s += '<div><span class="inverse_link" onclick="checkout_confirm(this,\'' + objectId + '\')">Подтвердить заказ</span></div>';
    }
    write_inner ('checkout_payment_instr', s);
    getCart (0);
    if (!toPay)
        hide_item ('checkout_invoice');
    else
        show_item ('checkout_invoice');
    change_popup3 ('checkout4_page');
    if (use_balance) {
        select_ckbox_use_balance ();
        getDetails ();
    }

    // if customer's referal is mixmarket then let's public tracking code
    if (feeId == mix_market_code) {
        var univar1= objectId;
        var mixMarketImg = new Image(1,1);
        mixMarketImg.src = 'http://mixmarket.biz/uni/tev.php?id=1294933142&r='+escape(document.referrer)+'&t='+(new Date()).getTime()+'&a1='+univar1;
    } else if (feeId == mix_market_products_code) {
        var mixMarketProductsCardImg = new Image(1,1);
        mixMarketProductsCardImg.src = 'http://mixmarket.biz/tr.plx?e=3779408&r='+escape(document.referrer)+'&t='+(new Date()).getTime();
    }
}

function checkout4 (f) {
    var p = {};
    p.sum = elt('checkout3_total').innerHTML;
    p.shipping = shipping_list[radiobuttons.shippingMethod].shippingMethod;
    p.shippingSum = shipping_list[radiobuttons.shippingMethod].price;
    p.useBalance = use_balance;
    var mnogoRu = elt('mnogoRu').value;
    var raiffeisen = elt('raiffeisenCodeCheckout').value;
    if (mnogoRu) {
        var t = {
            'mnogoRu' : /^\d{8}$/
        };
        check_inputs (t);
        p.mnogoRu = mnogoRu;
    }
    
    if (raiffeisen) {
        var t = {
            'raiffeisenCodeCheckout' : /^\d{9}$/
        };
        check_inputs (t);
        p.raiffeisenCode = raiffeisen;
    }
    //Удаляем группу one_half. Backend сделает то же самое.
    if (typeof(customerInfo) != 'undefined' && typeof(customerInfo.groups) != 'undefined') {
         customerInfo.groups = jQuery.grep(customerInfo.groups, function(value) {
                 return value != 'one_half';
        });
    }

    customerService (f, 'createOrder', createOrder_callback, p);

    _gaq.push(['_trackPageview', '/account/confirmOrderMessage' ]);
}

function confirmOrder_callback (res) {
    myalert ('Спасибо за Ваш заказ!');
    change_popup ('');
}

function checkout_confirm (f, oid) {
    var p = {};
    p.objectId = oid;
    customerService (f, 'confirmOrder', confirmOrder_callback, p);
    _gaq.push(['_trackEvent', 'Biz', 'confirmOrder' ]);
}

function payOrder_callback (res) {
    eval (res);
    if (retval != '0') {
        myalert ('Ошибка подготовки данных для платежной системы');
        return;
    }
    
    
    elt('payOrder_version').value = version;
    elt('payOrder_message').value = decodeURIComponent (message);
    elt('payOrder_form').action = action;
    elt('payOrder_form').acceptCharset = charset;
    document.charset = charset;
    elt('payOrder_form').submit();
}

function payOrder (f, id) {
    var p = {};
    p.objectId = id;
    p.returnUrl = document.URL;
    _gaq.push(['_trackEvent', 'Biz', 'payOrder' ]);
    customerService (f, 'payOrder', payOrder_callback, p);
}

function payOrderAssist (f, id) {
    //selected_address = {}; customerInfo =
    //console.log(selected_address);
    //console.log(customerInfo);
    elt('emoneyPayment_firstName').value = customerInfo.firstName;
    elt('emoneyPayment_lastName').value = customerInfo.lastName;
    elt('emoneyPayment_email').value = customerInfo.email;
    elt('emoneyPayment_homePhone').value = customerInfo.phone;
    
    elt('emoneyPayment_city').value = selected_address.city;
    elt('emoneyPayment_zip').value = selected_address.postIndex;
    elt('emoneyPayment_address').value = selected_address.streetAddress;
    
    elt('emoneyPayment_return').value = window.location;
    elt('emoneyPayment_order').value = id;
    elt('emoneyPayment_amount').value = elt('checkout4_toPay').innerHTML;
    elt('emoneyPayment_comment').value = 'Оплата заказа ' + elt('checkout4_orderNum').innerHTML;
    
    var form = elt('emoneyPayment_form');
    form.action = 'https://payments104.paysecure.ru/pay/order.cfm';
    form.acceptCharset = 'utf-8';
    document.charset = 'utf-8';
    _gaq.push(['_trackEvent', 'Biz', 'payOrder' ]);
    form.submit();
}

function getReceipt (id) {
    elt('getReceipt_orderid').value = id;
    elt('getReceipt_form').action = getReceiptUrl + location;
    elt('getReceipt_form').submit();
}

function authorize () {
    elt('au_email').value = elt('email').value == 'e-mail' ? '' : elt('email').value;
    elt('au_password').value = '';
    change_popup ('authorization_page');
    elt('au_email').focus();
    elt('au_email').select();
}

function authorize_login (f) {
    var p = {};
    p.email = elt('au_email').value;
    p.password = elt('au_password').value;
    elt('email').value = elt('au_email').value;
    change_popup ('');
    elt('au_password').value = '';
    customerService (f, 'login', login_callback, p);
    return (false);
}

function lost_password () {
    change_popup ('lost_password_page');
}

function generatePassword_callback (res) {
    myalert ('Готово');
    change_popup ('');
}

function generatePassword (f) {
    var p = {};
    p.email = elt('lp_email').value;
    customerService (f, 'generatePassword', generatePassword_callback, p);
    return (false);
}

function change_radio (e) {
    if (e.disabled)
        return;
    var t = e.type;
    var n = e.name;
    var f = e.form;
    radiobuttons[n] = e.value;
    for (var i = 0; i < f.length; i++) {
        var x = f.elements[i];
        if (x.type == t && x.name == n && !x.disabled)
            elt(x.id+'_img').className = 'radio ' + x.checked;
    }
}

function getFormRadioValue(form) {
    f = document.forms[form];
    if(!f){
        f = document.forms[form + 'Form'];
    }
    result = null;
    if(f) {
        for (i=0;i<f.elements.length;i++) {
            if (f.elements[i].checked) {
                result = f.elements[i].value;
                break;
            }
        }
    }
    return result;
}

function profileList_callback (res) {
    eval (res);
    profiles = a;
    last_profile_number = 0;
    write_inner ('profileList', '');
    if (is_design_page) {
        write_inner ('select_profile', '(нет сохраненных размеров)');
        write_inner ('select_profile_cart', '&nbsp;');
    }

    var empty = true;
    var oid;
    for (oid in a) {
        empty = false;
        break;
    }
    if (empty)
        return;

    var s = '', sp = '';
    s += '<table summary="" cellspacing="0">';
    s += '<tr><th>Название</th><th>Пол</th><th>Дата изменения</th><th>Действия</th></tr>';
    for (oid in a) {
        var dn = a[oid].displayName;
        s += '<tr>';
        s += '<td>';
        s += dn;
        if (dn.toLowerCase().indexOf('профиль ') == 0) {
            var n = parseInt (0 + dn.slice(8), 10);
            if (n > last_profile_number)
                last_profile_number = n;
        }
        s += '</td>';
        s += '<td>';
        s += a[oid].sex == 'm' ? 'м' : 'ж';
        s += '</td>';
        s += '<td>';
        s += date_conv (a[oid].modifyDate);
        s += '</td>';
        s += '<td>';
        s += '<span class="normal_link" onclick="updateProfile_page(\'' + oid + '\')">';
        s += 'Изменить';
        s += '</span>';
        s += ' ';
        s += '<span class="normal_link" onclick="deleteProfile(this,\'' + oid + '\')">';
        s += 'Удалить';
        s += '</span>';
        s += '</td>';
        s += '</tr>';
        if (a[oid].sex == design_sex) {
            sp += '<option value="' + oid + '">';
            sp += dn;
            sp += '</option>';
        }
    }
    s += '</table>';
    write_inner ('profileList', s);
    if (is_design_page) {
        if (sp) {
            sp = '<select id="profile_select">' + sp;
            sp += '</select> <u onclick="updateProfile_page(elt(\'profile_select\').value)">Изменить профиль</u>';
            write_inner ('select_profile', sp);
            write_inner ('select_profile_cart', '<a class="addToCart" onclick="addShirt_with_profile(this,elt(\'profile_select\').value)">Добавить в корзину</a>');
        }
        elt('measurementsName').value = 'Профиль ' + (last_profile_number + 1);
    }
}

function profileList_page () {
    write_inner ('profileList', '');
    customerService (0, 'shirtProfileList', profileList_callback);
    change_popup2 ('profileList_page');

    _gaq.push(['_trackPageview', '/account/profileList' ]);
}

function deleteProfile_callback (res) {
    profileList_page ();
}

function deleteProfile (f, oid) {
    if (!myconfirm ('Удалить профиль, Вы уверены?')) return;
    var p = {};
    p.objectId = oid;
    customerService (f, 'deleteShirtProfile', deleteProfile_callback, p);
}

function readShirtProfile_callback (res) {
    eval (res);
    delete a.waistLengthFront;
    delete a.shoulderHeightFront;
    delete a.shoulderHeightBack;
    profile = a;
    var attrs = productAttr.ladies_shirt;
    if (!a.bustHeight) {
        attrs = productAttr.mens_shirt;
        delete a.waistLengthBack;
    }
    var s = '';
    s += '<table summary="">';
    for (var i in a)
        switch (i) {
            case 'objectId':
                elt('up_' + i).value = a[i];
                break;
            case 'customerId':
                break;
            case 'displayName':
                s += '<tr>';
                s += '<td class="left">';
                s += 'Имя профиля';
                s += '</td>';
                s += '<td>';
                s += '<input type="text" size="16" maxlength="32" id="up_' + i + '" value="' + a[i] + '" />';
                s += '</td>';
                s += '</tr>';
                break;
            default:
                if (attrs[i]) {
                    var input;
                    if(attrs[i].attr.attrType == 'measure') {
                        var size = attrs[i].attr.max > 99 ? 3 : 2;
                        input = '<input type="text" size="3" maxlength="' + size + '" id="up_' + i + '" value="' + a[i] + '" /> см.';
                    } else {
                        input  = '<select name="up_' + i + '" id="up_' + i + '">';
                        for (j in attrs[i].values) {
                            val = attrs[i].values[j].attrValue;
                            input += '<option value="' + val + (val == (a[i] ? a[i] : attrs[i].attr.defaultValue) ? '" selected="selected">' : '">') + attrs[i].values[j].displayName + '</option>';
                        }
                        input += '</select>'
                    }
                    s += '<tr>';
                    s += '<td class="left">';
                    s += attrs[i].attr.displayName;
                    s += '</td>';
                    s += '<td>';
                    s += input;
                    s += '</td>';
                    s += '</tr>';
                } else
                    delete profile[i];
        }
    s += '</table>';
    write_inner ('updateProfile', s);
}

function updateProfile_page (oid) {
    write_inner ('updateProfile', '');
    var p = {
        'objectId' : oid
    };
    customerService (0, 'readShirtProfile', readShirtProfile_callback, p);
    change_popup3 ('updateProfile_page');
}

function updateShirtProfile_callback (res) {
    profileList_page ();
}

function updateProfile (f) {
    var attrs = elt('up_bustHeight') ? productAttr.ladies_shirt : productAttr.mens_shirt;
    for (var i in profile) {
        var e = elt('up_'+i);
        var v;
        if (i != 'customerId')
            v = e.value;
        if (i == 'objectId' || i == 'customerId') {
        // nop
        } else if (i == 'displayName') {
            if (!v) {
                myalert ('Не заполнено имя профиля');
                e.focus();
                return;
            } else
                profile[i] = v;
        } else if (( v || i != 'sleeveLength' && i != 'shortSleeveLength' ) && attrs[i].attr.attrType == 'measure') {
            var a = attrs[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(attrs[i].attr.attrType == 'enum') {
            profile[i] = e.options[e.selectedIndex].value;
        } else
            delete profile[i];
    }

    if (elt('up_bustHeight') || check_shirt(profile)) {
        customerService (f, 'updateShirtProfile', updateShirtProfile_callback, profile);
    } else {
        var e = elt('up_' + warn_attr);
        e.focus();
        e.select();
    }
}

function subscribeNews_page () {
    ckboxes.subscribeNews2 = true;
    change_subscribeNews2 ();
    changeDetails_page ();
}

function orderHistory_callback (res) {
    eval (res);
    orders = a;
    write_inner ('orderHistory', '');

    var trigger = show_all_orders ? 0 : 1;
    write_inner ('orderHistory_trigger', '<span class="normal_link" onclick="orderHistory_page(this,' + trigger + ')">Показать ' + (trigger ? 'все' : 'активные') + '</span>');
    var s = '';
    s += '<table summary="" cellspacing="0">';
    s += '<tr><th>Дата заказа</th><th>N заказа</th><th>Стоимость</th><th>Статус</th></tr>';
    for (var oid in a) {
        s += '<tr onclick="show_order(this,\'' + oid + '\')">';
        s += '<td>';
        s += date_conv (a[oid].orderDate);
        s += '</td>';
        s += '<td>';
        s += a[oid].orderNum;
        s += '</td>';
        s += '<td>';
        s += a[oid].sum;
        s += '</td>';
        s += '<td>';
        s += a[oid].displayOrderState;
        s += '</td>';
        s += '</tr>';
    }
    s += '</table>';
    write_inner ('orderHistory', s);
    change_popup2 ('orderHistory_page');
}

function orderHistory_page (f, show_all) {
    var p = {};
    p.activeOnly = show_all ? false : true;
    p.compact = false;
    show_all_orders = show_all;
    customerService (f, 'orderList', orderHistory_callback, p);
    _gaq.push(['_trackPageview', '/account/orderHistory' ]);
}


function show_order (f, oid) {
    current_order = oid;
    var p = {};
    p.objectId = oid;
    p.objectType = 'zorder';
    customerService (f, 'objectRead', getOrder_callback, p);
    _gaq.push(['_trackPageview', '/account/showOrder' ]);
}

function cancelOrder_callback (res) {
    myalert ('Готово');
    orderHistory_page (0, show_all_orders);
    if (order.usedOst != '0' || order.usedVirtual != '0' || order.paidByCard != '0')
        getDetails ();
}

function cancelOrder (f) {
    var p = {};
    p.objectId = current_order;
    if (myconfirm ('Отменить заказ, Вы уверены?'))
        customerService (f, 'cancelOrder', cancelOrder_callback, p);
    _gaq.push(['_trackEvent', 'Biz', 'cancelOrder' ]);
}

function confirmDelivery_callback (res) {
    myalert ('Готово');
    orderHistory_page (0, show_all_orders);
}

function confirmDelivery (f) {
    var p = {};
    p.objectId = current_order;
    if (myconfirm ('Подтвердить получение заказа, Вы уверены?'))
        customerService (f, 'confirmDelivery', confirmDelivery_callback, p);
}

function copyOrder_callback (res) {
    myalert ('Готово');
    getCart (1);
}

function copyOrder (f) {
    var p = {};
    p.objectId = current_order;
    if (myconfirm ('Некоторые товары или материалы могут быть уже недоступны для заказа. Продолжить?'))
        customerService (f, 'copyOrder', copyOrder_callback, p);
    _gaq.push(['_trackEvent', 'Biz', 'copyOrder' ]);

}

function addProduct_callback (res) {
    myalert ('Готово');
    change_popup ('');
    getCart_callback (res);
}

function addProduct (f, oid) {
    if (!oid) {
        myalert ('Не выбран вариант товара');
        return;
    }
    var p = {};
    p.objectId = oid;
    if (oid == virtualGiftCert_oid) {
        var t = {
            'virtualGiftCert_value' : /^[1-9]\d{3,4}$/
        };
        check_inputs (t);
        p.giftCertValue = elt('virtualGiftCert_value').value;
    }
    customerService (f, 'addProduct', addProduct_callback, p);
}

// ЗАПОЛНЕНИЕ POPUP'A ГАЛСТУКА ПОДРОБНОЙ ИНФОРМАЦИЕЙ
function tiesView(f, product)
{
    write_inner ('tiesCartArticle', product.displayName);
    var html = '';

    //html += '<img class="popup_close" alt="" src="../../images/closeNew.png" onclick="change_popup4()" />';
    //html += '<h1>' + product.displayName + '</h1>';
    html += '<div class="productPhoto"><img alt="" class="product_photo" src="/mens/' + product.category + '/' + product.product + '_photo.jpg" /></div>';

    html += '<div class="productInfo">';
    html += '<div>Цена: ' + product.price + ' руб.</div>';

    if (!current_popup) {
        html += '<div><a class="addToCart" onclick="addProduct(this,\'' + product.objectId + '\')">Добавить в корзину</a></div>';
    }

    html += '<div><br /><span class="product_descr_hdr">Описание:</span><br />' + product.description + '</div>';
    html += '</div>';

    write_inner('tiesView', html);
    change_popup4('tiesView_page');
}

// ЗАПОЛНЕНИЕ КОНТЕЙНЕРА ГОТОВЫХ ГАЛСТУКОВ РАЗМЕТКОЙ
function ties_callback(res)
{
    eval(res);
    ties_list = a;

    var html = '';
    html += '<ul class="products">';
    for (var oid in a) {
        var p = a[oid];
        html += '<li class="product">';
        html += '<div class="icon" style="background-image:url(/mens/ties/' + p.product + '_pict.jpg)" onclick="tiesView(this,ties_list[\'' + oid + '\'])">';
        html += '<img src="/images/add2cart.png" onclick="addProduct(this,\'' + oid + '\')" />';
        html += '</div>';
        html += '<div class="price">Цена: ' + p.price + ' руб.</div>';
        html += '<div class="name">' + p.displayName + '</div>';
        html += '</li>';
    }
    html += '</ul>';

    $('.ties').html(html);
}

function ties_page () {
    var p = {};
    p.category = 'ties';
    customerService (0, 'productList', ties_callback, p);
}

function elyseesProduct_page (category, type) {
    var p = {
        category : 'accessories'
    };
    
    $('#contact1').attr('href', 'mailto:'.concat(cont2, '@', domain, '.ru'));
    
    var oldCp4 = window['change_popup4'];
    window['change_popup4'] = function (p) {
        if (typeof p == 'undefined') location.hash = ''; //Когда закрываем окно детального просмотра убить хэш
        oldCp4 (p);
    }
    var productArticle = location.hash.substring(1); //Артикул после #в адресе (если передан)
    var productId = null; //Найденный в списке по артикулу идентификатор
    customerService (0, 'productList', function (data) {
        eval (data);
        var result = {};
        $.each(a, function(k, v) {
            var product = v['product'];
            if(!result[product]) {
                result[product] = [];
            }
            if (productArticle && v.article == productArticle && v.product == type) {
                productId = v.objectId;
            }
            result[product].push(v);
        });
        $('#' + type + 'Table').empty().generateElyseesTableContents(result[type], 5, elyseesProductView, elyseesProductAddToCart);
        
        if (productId) $('#' + productId).trigger('click');
    }, p);
}

function elysees_page () {
    elyseesProduct_page('accessories');
}

function elyseesPens_page () {
    elyseesProduct_page('accessories', 'pens');
}

function elyseesBelts_page () {
    elyseesProduct_page('accessories', 'belts');
}

function elyseesBags_page () {
    elyseesProduct_page('accessories', 'bags');
}

function elyseesPurses_page () {
    elyseesProduct_page('accessories', 'purses');
}

function elyseesCuffLinks_page () {
    elyseesProduct_page('accessories', 'cuffLinks');
}

//Сгенерировать разметку под класс продуктов из Елисейских Полей
$.fn.generateElyseesTableContents = function (container, perRow, clickHandler, addToCartHandler) {
    var ul = $(document.createElement('ul')).addClass('products');
    $(container).each(function(num, current) {
        var html = '';
        html += '<li class="product">'
        html += '<a href="' + window.location.href.replace(window.location.hash, '').replace('#', '') + '#' + current.article + '">'
        html += '<div id="' + current.objectId + '" class="icon" style="background-image:url(/male/elysees/' + current.product + '/' + current.article + '/pict.jpg)">';
        html += '</div>';
        html += '<div class="price">Цена: ' + current.price + ' руб.</div>';
        html += '<div class="name">' + current.displayName + '</div>';
        html += '</a>';
        html += '</li>';            
        $(html)
            .bind('click', current, function(event) {
                event.preventDefault();
                window.location.hash = event.data.article;
                clickHandler(event.data, addToCartHandler);
            })
            .appendTo(ul);
    });
    
    return $(this).html(ul);
}

function elyseesProductView (data, cartHandler) {
    var product = ucFirst(data.product)
    //var page = $('#elysees' + product + 'DetailsView_page');
    //debugger;
    //write_inner('elyseesPensArticle', data.article);
    //write_inner('elyseesPensImage', '<img src="/male/elysees/' + data.product + '/' + data.article + '/pict_big_1.jpg"/>');
    var html = '<div class="priceDiv">Цена: '+ data.price + 'руб. </div>';
    html += '<a id="addElyseesPensToCart" class="addToCart">Добавить в корзину</a>';
    html += '<div class="descrDiv">';
    html += '<span class="product_descr_hdr">Описание:</span><br/>' + data.description;
    html += '</div>'
    //$('#elyseesPensInfo').html(html);
    
    //$('#addElyseesPensToCart').bind('click', data, cartHandler);
    
    var page = $('#elysees' + product + 'DetailsView_page')
        .find('.elyseesArticle').html(data.article).end()
        //.find('.elyseesImage').html('<img src="/male/elysees/' + data.product + '/' + data.article + '/pict_big_1.jpg"/>').end()
        .find('.elyseesInfo').html(html).end()
        .find('.addToCart').bind('click', data, cartHandler).end();
    
    change_popup4 ('elysees' + product + 'DetailsView_page');
    
    var elyseesImageContainer = $(page).find('.elyseesImage').empty();
    var imgBase = '/male/elysees/' + data.product + '/' + data.article;

    generateGalleryLayout(elyseesImageContainer, imgBase, 'elyseesZoom');
        
    
    //Глюк в ие не позволяет включить плагин до показа элементов
    $('.cloud-zoom, .cloud-zoom-gallery').CloudZoom({
        zoomWidth: $(page).find('.elyseesView').width() - 260 - 1, //260 - ширина картинки, 1px - границы
        zoomHeight: 420,
        adjustX: 30,
        useZoom: 'elyseesZoom'
    });

}

function elyseesProductAddToCart (event) {
    addProduct(this, event.data.objectId);
}

// ЗАПОЛНЕНИЕ POPUP'A ЗАПОНКИ ПОДРОБНОЙ ИНФОРМАЦИЕЙ
function cuffLinksView(f, product)
{
    write_inner('cuffLinksCartArticle', product.displayName);
    var html = '';

    //html += '<img class="popup_close" alt="" src="../../images/closeNew.png" onclick="change_popup4()" />';
    //html += '<h1>' + product.displayName + '</h1>';
    html += '<div class="productPhoto"><img alt="" class="product_photo" src="/mens/' + product.category + '/' + product.product + '_photo.jpg" /></div>';

    html += '<div class="productInfo">';
    html += '<div>Цена: ' + product.price + ' руб.</div>';

    if (!current_popup) {
        html += '<div><a class="addToCart" onclick="addProduct(this,\'' + product.objectId + '\')">Добавить в корзину</a></div>';
    }

    html += '<div><br /><span class="product_descr_hdr">Описание:</span><br />' + product.description + '</div>';
    html += '</div>';

    write_inner('cuffLinksView', html);
    change_popup4('cuffLinksView_page');
}

//ЗАПОЛНЕНИЕ КОНТЕЙНЕРА ЗАПОНОК РАЗМЕТКОЙ
function cuffLinks_callback(res)
{
    eval(res);
    cuffLinks_list = a;
    var html = '';

    html += '<ul class="products">';
    for (var oid in a) {
        var p = a[oid];
        html += '<li class="product">';
        html += '<div class="icon" style="background-image:url(/mens/cuffLinks/' + p.product + '_pict.jpg)" onclick="cuffLinksView(this,cuffLinks_list[\'' + oid + '\'])">';
        html += '<img src="/images/add2cart.png" onclick="addProduct(this,\'' + oid + '\')" />';
        html += '</div>';
        html += '<div class="price">Цена: ' + p.price + ' руб.</div>';
        html += '<div class="name">' + p.displayName + '</div>';
        html += '</li>';
    }
    html += '</ul>';

    $('.cuffLinks').html(html);
}

function cuffLinks_page () {
    var p = {};
    p.category = 'cuffLinks';
    customerService (0, 'productList', cuffLinks_callback, p);
}

function mtmwoodView (f, product) {
    write_inner('mtmwoodTitle', product.displayName);
    var s = '';
    s += '<img alt="" class="product_photo" src="/mens/' + product.category + '/' + product.product + '_photo.jpg" />';
    s += '<p><span class="product_descr_hdr">Описание:</span><br />' + product.description + '</p>';
    s += '<p>Цена: ' + product.price + ' руб.</p>';
    if (!current_popup)
        s += '<a onclick="addProduct(this,\'' + product.objectId + '\')">Добавить в корзину</a>';
        write_inner ('mtmwoodView', s);
    change_popup4 ('mtmwoodView_page');
}

function mtmwood_callback (res) {
    eval (res);
    mtmwood_list = a;
    var cols = 5;
    var s = '';
    var i = 0;
    var j;
    s += '<table class="product_table" cellpadding="5">';
    for (var oid in a) {
        var p = a[oid];
        s += i ? '' : '<tr class="products">';
        s += '<td class="product">';
        s += '<div class="product_icon_mtmwood" style="background-image:url(/mens/mtmwood/' + p.product + '_pict.jpg)" onclick="mtmwoodView(this,mtmwood_list[\'' + oid + '\'])">';
        //        s += '<div class="product_icon">';
        //        s += '<img src="../mtmwood/' + p.product + '_pict.jpg" onclick="mtmwoodView(this,mtmwood_list[\'' + oid + '\'])" />';
        s += '<img src="/images/add2cart.png" onclick="addProduct(this,\'' + oid + '\')" />';
        s += '</div>';
        s += '<div class="price">Цена: ' + p.price + ' руб.</div>';
        s += '<div class="name">' + p.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 ('mtmwood', s);
}

function mtmwood_page () {
    var p = {};
    p.category = 'mtmwood';
    customerService (0, 'productList', mtmwood_callback, p);
}

function socksView (f, product) {
    write_inner('socksCartArticle', product.displayName);
    var s = '';
    s += '<h1>' + product.displayName + '</h1>';
    s += '<img alt="" class="product_photo" src="../' + product.category + '/' + product.product + '_photo.jpg" />';
    s += '<p>Цена: ' + product.price + ' руб.<br/>(Цена женских носков указывается за комплект из двух пар, мужских &ndash; из трех пар)</p>';
    s += '<p><span class="product_descr_hdr">Описание:</span><br />' + product.description + '</p>';
    write_inner ('socksView', s);
    change_popup4 ('socksView_page');
}

// ЗАГРУЗКА РАЗМЕТКИ СТРАНИЦЫ ПРОДУКТА НОСКА 
function socksGroupView(g)
{
    var product = socks_list[g];
    var html = '';

    //html += '<img class="popup_close" alt="" src="/images/closeNew.png" onclick="change_popup4()" />';
    html += '<h1>' + product.displayName + '</h1>';

    html += '<form>';
    html += '<span class="product_descr_hdr">Выберите размер:</span><br/>';
    html += '<label for="23" onclick="elt(\'23\').click();return(false)">23</label> ';
    html += '<input type="radio" name="socksSize" class="socksSize_radio" id="23" value="" disabled="disabled" onclick="change_radio(this)" />';
    html += '<img alt="" class="radio disabled" src="/images/dummy.gif" id="23_img" onclick="elt(\'23\').click()" />';
    html += '&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;';
    html += '<label for="25" onclick="elt(\'25\').click();return(false)">25</label> ';
    html += '<input type="radio" name="socksSize" class="socksSize_radio" id="25" value="" disabled="disabled" onclick="change_radio(this)" />';
    html += '<img alt="" class="radio disabled" src="/images/dummy.gif" id="25_img" onclick="elt(\'25\').click()" />';
    html += '&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;';
    html += '<label for="27" onclick="elt(\'27\').click();return(false)">27</label> ';
    html += '<input type="radio" name="socksSize" class="socksSize_radio" id="27" value="" disabled="disabled" onclick="change_radio(this)" />';
    html += '<img alt="" class="radio disabled" src="/images/dummy.gif" id="27_img" onclick="elt(\'27\').click()" />';
    html += '&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;';
    html += '<label for="29" onclick="elt(\'29\').click();return(false)">29</label> ';
    html += '<input type="radio" name="socksSize" class="socksSize_radio" id="29" value="" disabled="disabled" onclick="change_radio(this)" />';
    html += '<img alt="" class="radio disabled" src="/images/dummy.gif" id="29_img" onclick="elt(\'29\').click()" />';
    html += '</form>';

    html += '<div class="productPhoto"><img alt="" class="product_photo" src="/mens/' + product.category + '/' + product.product + '_photo.jpg" /></div>';

    html += '<div class="productInfo">';
    html += '<div>Цена: ' + product.price + ' руб.<br/>(Цена женских носков указывается за комплект из двух пар, мужских &ndash; из трех пар)</div>';
    html += '<div><a class="addToCart" onclick="addProduct(this,radiobuttons.socksSize)">Добавить в корзину</a></div>';
    html += '<div><br /><span class="product_descr_hdr">Описание:</span><br />' + product.description + '</div>';
    html += '</div>';

    write_inner('socksView', html);
    radiobuttons.socksSize = '';

    for (var sz in full_socks_list[g]) {
        elt(sz).disabled = false;
        elt(sz).value = full_socks_list[g][sz].objectId;
        elt(sz + '_img').className = 'radio false';
    }

    change_popup4('socksView_page');
}

//ЗАПОЛНЕНИЕ КОНТЕЙНЕРА НОСКОВ РАЗМЕТКОЙ
function socks_callback(res)
{
    eval (res);
    socks_list = {};
    full_socks_list = {};

    for (var oid in a) {
        var o = a[oid];
        socks_list[o.product] = o;
        if (!full_socks_list[o.product])
            full_socks_list[o.product] = {};
        full_socks_list[o.product][o.variation] = o;
    }

    var html = '';
    html += '<ul class="products">';
    for (var product in socks_list) {
        var p = socks_list[product];
        html += '<li class="product">';
        html += '<div class="icon" style="background-image:url(/mens/socks/' + product + '_pict.jpg)" onclick="socksGroupView(\'' + product + '\')">';
        html += '</div>';
        html += '<div class="price">Цена: ' + p.price + ' руб.</div>';
        html += '<div class="name">' + p.displayName + '</div>';
        html += '</li>';
    }
    html += '</ul>';

    $('.socks').html(html);
}

function socks_page () {
    var p = {};
    p.category = 'socks';
    customerService (0, 'productList', socks_callback, p);
}

// ЗАГРУЗКА РАЗМЕТКИ СТРАНИЦЫ ПРОДУКТА КНИГИ
function booksView(f, product)
{
    write_inner ('booksCartArticle', product.displayName);
    var html = '';

    //html += '<img class="popup_close" alt="" src="../../images/closeNew.png" onclick="change_popup4()" />';
    //html += '<h1>' + product.displayName + '</h1>';
    html += '<div class="productPhoto"><img alt="" class="product_photo" src="../' + product.category + '/' + product.product + '_photo.jpg" /></div>';

    html += '<div class="productInfo">';
    html += '<div>Цена: ' + product.price + ' руб.</div>';

    if (!current_popup) {
        html += '<div><a class="addToCart" onclick="addProduct(this,\'' + product.objectId + '\')">Добавить в корзину</a></div>';
    }

    html += '<div><br /><span class="product_descr_hdr">Описание:</span><br />' + product.description + '</div>';
    html += '</div>';

    write_inner('booksView', html);
    change_popup4('booksView_page');
}

// ЗАПОЛНЕНИЕ КОНТЕЙНЕРА КНИГ РАЗМЕТКОЙ
function books_callback(res)
{
    eval(res);
    books_list = a;

    var html = '';
    html += '<ul class="products">';
    for (var oid in a) {
        var p = a[oid];
        html += '<li class="product">';
        html += '<div class="icon" style="background-image:url(../books/' + p.product + '_pict.jpg)" onclick="booksView(this,books_list[\'' + oid + '\'])">';
        html += '<img src="/images/add2cart.png" onclick="addProduct(this,\'' + oid + '\')" />';
        html += '</div>';
        html += '<div class="price">Цена: ' + p.price + ' руб.</div>';
        html += '<div class="name">' + p.displayName + '</div>';
        html += '</li>';
    }
    html += '</ul>';

    $('.books').html(html);
}

function books_page () {
    var p = {};
    p.category = 'books';
    customerService (0, 'productList', books_callback, p);
    get_ozon_books();
}

function samplesView (f, product) {
}

function orderSamples (f) {
    addProduct (f, samples_oid);
}

function orderLeaflet (f) {
    addProduct(f, leaflet_oid);
}

function samples_callback (res) {
    eval (res);
    for (var oid in a)
        samples_oid = oid;
}

function samples_page () {
    var p = {};
    p.category = 'samples';
    p.article = 'booklet';
    customerService (0, 'productList', samples_callback, p);
}

function giftCertsView (f, product) {
    write_inner ('giftCertsViewCartArticle', product.displayName)
    var html = '';

    //html += '<img class="popup_close" alt="" src="../../images/closeNew.png" onclick="change_popup4()" />';
    //html += '<h1>' + product.displayName + '</h1>';
    html += '<div class="productPhoto"><img alt="" class="product_photo" src="../' + product.category + '/' + product.product + '_photo.jpg" /></div>';

    html += '<div class="productInfo">';
    html += '<div>Цена: ' + product.price + ' руб.</div>';

    if (!current_popup) {
        html += '<div><a class="addToCart" onclick="addProduct(this,\'' + product.objectId + '\')">Добавить в корзину</a></div>';
    }

    html += '<div><br /><span class="product_descr_hdr">Описание:</span><br />' + product.description + '</div>';
    html += '</div>';

    write_inner('giftCertsView', html);
    change_popup4('giftCertsView_page');
}

// ЗАПОЛНЕНИЕ КОНТЕЙНЕРА ПОДАРОЧНЫХ СЕРТИФИКАТОВ РАЗМЕТКОЙ
function giftCerts_callback(res)
{
    eval(res);
    giftCerts_list = a;

    var html = '';
    html += '<ul class="products">';
    for (var oid in a) {
        var p = a[oid];

        if (p.product == 'virtual') {
            virtualGiftCert_oid = oid;
            continue;
        }

        html += '<li class="product">';
        html += '<div class="icon" style="background-image:url(/' + contentGender + '/giftCerts/' + p.product + '_pict.jpg)" onclick="giftCertsView(this,giftCerts_list[\'' + oid + '\'])">';
        html += '<img src="/images/add2cart.png" onclick="addProduct(this,\'' + oid + '\')" />';
        html += '</div>';
        html += '<div class="price">Цена: ' + p.price + ' руб.</div>';
        html += '<div class="name">' + p.displayName + '</div>';
        html += '</li>';
    }
    html += '</ul>';

    $('.giftCert').html(html);
}

function giftCerts_page () {
    var p = {};
    p.category = 'giftCerts';
    customerService (0, 'productList', giftCerts_callback, p);
}

function shirtPreset_page () {
    var p = {
        category : 'presets'
    };
    
    $('#contact1').attr('href', 'mailto:'.concat(cont2, '@', domain, '.ru'));
    
    prepareProductAttr ();
    
    //Навесим юбкам хелп
    var skirt_help = null;
    $('img.showHelpIcon').live('mouseover', function(event) {
        skirt_help = $('#' + $(this).attr('dynsrc')).fadeIn('slow');
    }).live('mouseleave', function(event) {
        $(skirt_help).fadeOut('slow');
    });
    
    var productArticle = location.hash.substring(1); //Артикул после #в адресе (если передан)
    var productId = null; //Найденный в списке по артикулу идентификатор
    
    var oldCp4 = window['change_popup4']; //Для того, чтоб не городить кучу функций с похожим функционалом слегка изменим старую
    window['change_popup4'] = function (p) {
        if (typeof p == 'undefined') location.hash = ''; //Когда закрываем окно детального просмотра убить хэш
        oldCp4 (p);
    }
    
    customerService (0, 'productList', function (data) {
        eval (data);

        var ladiesPreset = [];
        var mensPreset = [];
        var trousersPreset = [];
        var ladiesSkirts = [];
        var mensTrunks = [];
        var ladiesSkirtsByArticle = {};
        var trousersByArticle = {};
        var trunksByArticle = {};
        
        for(record in a) {
            var current = a[record];
            if (productArticle && current['article'] == productArticle) {
                productId = record;
            }
            switch (current.variation) {
                case 'mensShirt':
                    mensPreset.push(current);
                    break;
                case 'ladiesShirt':
                    ladiesPreset.push(current);
                    break;
                case 'ladiesSkirt':
                    ladiesSkirts.push(current);
                    ladiesSkirtsByArticle[current['article']] = current;
                    break;
                case 'mensTrousers':
                    trousersPreset.push(current);
                    trousersByArticle[current['article']] = current;
                    break;
                case 'mensTrunks':
                    mensTrunks.push(current);
                    trunksByArticle[current['article']] = current;
                    break;
            }
        }
        
        //Навешиваем события на форму с юбочными тканями для вычисления цены по клику
        skirtClickHandler = presetFabric_clickHandler('skirt');
        $('#skirtFabricForm img.radio').live('click', ladiesSkirtsByArticle, skirtClickHandler);
        
        trousersClickHandler = presetFabric_clickHandler('trousers');
        $('#trousersFabricForm img.radio').live('click', trousersByArticle, trousersClickHandler);
        


        var counter = 0;
        if (ladiesPreset.length) {
            $('#presetFemaleTable').empty().generatePresetTableContents(ladiesPreset, 5, shirtPresetDetails, presetAddToCart);
        }

        if (mensPreset.length) {
            $('#presetMaleTable').empty().generatePresetTableContents(mensPreset, 5, shirtPresetDetails, presetAddToCart);
        }
        
        if (ladiesSkirts.length) {
            $('#presetSkirtsTable').empty().generatePresetTableContents(ladiesSkirts, 5, skirtPresetDetails, presetAddToCart);
        }
        
        if (trousersPreset.length) {
            $('#presetTrousersTable').empty().generatePresetTableContents(trousersPreset, 5, trousersPresetDetails, presetAddToCart);
        }
        
        if (mensTrunks.length) {
            $('#presetTrunksTable').empty().generatePresetTableContents(mensTrunks, 5, trunksPresetDetails, presetAddToCart);
            currentProductAttr = productAttr.trunks;
            var fabrics = productAttr.trunks.fabric.values;
            //$.fn.fabricPopup = function (path, fabrics, perRow, clickHandler) {
            var p = $('#select_trunksFabric').fabricPopup({
                attrName:      'fabric', 
                path:           '/male/trunks/fabrics', 
                fabrics         : fabrics, 
                perRow          : 3, 
                clickHandler    : function(fabric) {
                    var price =  fabrics[fabric].priceTrunks;
                    price -= calcProductDiscount('trunks', price);
                    $('#trunksPresetInfo .priceDiv').html(price + ' руб.');
                    $('#trunksFabric').val(fabrics[fabric].article);
                },
                priceAttrName   : 'priceTrunks'
            });
//            p.jScrollPane();
            //Изменение размера трусов должно изменять справочное поле обхват бедер
            $('#trunksPresetStdSize').change(function(event) {
                elt('trunksStdSize').value=this.value;
                var volume;
                switch (this.value) {
                    case '44':
                        volume = '88 - 92';
                        break;
                    case '48':
                        volume = '96 - 104';
                        break;
                    case '52':
                        volume = '108 - 111';
                        break;
                    case '58':
                        volume = '115 - 123';
                        break;
                    case '62':
                        volume = '130 - 134';
                        break;
                    case '68':
                        volume = '138 -146';
                        break;
                }
                $('#trunksPresetStdVolume').val(volume);
            });
        }
        
        if (productId) $('#' + productId).trigger('click');

    }, p);
}

/**
 * Хендлер кликов по тканям из юбок и брюк. 
 * Вычисляет цену, переставляет точку выбора, назначает выбранную ткань
 * @param string productName название продукта в дереве аттрибутов
 */
function presetFabric_clickHandler (productName) {
    return function (event) {
        event.preventDefault();

        var view = $(this).closest('.presetView');
        var fabricArticle = $(this).attr('id');
        
        var pa = productAttr[productName].fabric.values;
        
        var article = $(view).find('.presetArticle').html();
        var multiplier = event.data[article].auxData3; //Метраж
        var basePrice = event.data[article].price; //Базовая цена
        var price = parseInt(0 + parseInt(pa[fabricArticle].price) * parseFloat(multiplier) + parseInt(basePrice));
        price = Math.ceil(price / 10) * 10; //Округляем до десятков в большую сторону
        price -= calcProductDiscount('skirt', price);
        $(this)
            .closest('.presetView')
                .find('.presetFabric').val(fabricArticle).end()
                .find('div.priceDiv').html('Цена: ' + price + ' руб.').end()
                .find('input.presetPrice').val(price).end()
            .end()
            .closest('form')
                .find('img.true').removeClass('true').addClass('false').end()
            .end()
            .removeClass('false').addClass('true');        
    }
}

function skirtPreset_page () {
    shirtPreset_page ();
}

/**
 * ГЕНЕРИРУЕМ РАЗМЕТКУ ДЛЯ КОНТЕЙНЕРА ГОТОВЫХ ПРОДУКТОВ
 * @param array container массив, содержащий продукты данного типа (рубашка, юбка, брюки...)
 * @param integer perRow число элементов в ряду
 * @param function clickHandler ссылка на функцию-обработчик клика, вызывающую детальный просмотр
 * @param function addToCartHandler ссылка на функцию-обработчик нажания кнопки "добавить в корзину"
 */
$.fn.generatePresetTableContents = function (container, perRow, clickHandler, addToCartHandler) {
    var ul = $(document.createElement('ul')).addClass('products');
    
    $(container).each(function(num, current) {
        var shirt = (current.variation == 'ladiesShirt' ? productAttr.ladies_shirt : productAttr.shirt);
        var testShirt = (current.variation == 'ladiesShirt' ? productAttr.ladies_testShirt : productAttr.testShirt);

        var path = '';
        var price = 0;
        var html = '';
        switch (current.variation) {
            case 'ladiesSkirt':
                path = 'skirtPresets/';
                var attr = productAttr.skirt.fabric.values;
                var baseFabric = attr[current.auxData2];
                if (!baseFabric) {
                    for (var i in attr) {
                        baseFabric = attr[i];
                        break;
                    }
                }
                price = parseInt(0 + parseInt(baseFabric.price) * parseFloat(current.auxData3) + parseInt(current.price));
                price = Math.ceil(price / 10) * 10;
                
                break;
            case 'mensTrousers':
                path = 'trousersPresets/';
                var attr = productAttr.trousers.fabric.values;
                var baseFabric = attr[current.auxData2];
                if (!baseFabric) {
                    for (var i in attr) {
                        baseFabric = attr[i];
                        break;
                    }
                }
                price = parseInt(0 + parseInt(baseFabric.price) * parseFloat(current.auxData3) + parseInt(current.price));
                price = Math.ceil(price / 10) * 10;
                break;
            case 'mensTrunks':
                path = 'trunks/';
                var attr = productAttr.trunks.fabric.values;
                var baseFabric = '';
                for (var i in attr) {
                    baseFabric = attr[i];
                    break;
                }
                price = parseInt(baseFabric.priceTrunks) + parseInt(current.price);
                break;
            case 'mensShirt':
            case 'ladiesShirt':
                path = 'shirtPresets/';
                price = current.price;
                break;
        }
        
        if (((shirt.fabric.values[current.auxData1] || testShirt.fabric.values[current.auxData1]) && shirt.buttons.values[current.auxData2]) || (current.variation != 'mensShirt' && current.variation != 'ladiesShirt')) {

            html += '<li class="product">'
            html += '<a href="' + window.location.href.replace(window.location.hash, '').replace('#', '') + '#' + current.article + '">'
            html += '<div id="' + current.objectId + '" class="icon" style="background-image:url(/mens/' + path + current.article + '/pict.jpg)">';
            html += '</div>';
            html += '<div class="name">' + current.displayName + '</div>';
            html += '<div class="price">Цена: ' + price + ' руб.</div>';
            html += (current.variation == 'mensShirt' || current.variation == 'ladiesShirt') ? '<div class="menuShortDescription">' + current.shortDescription + '</div>' : '';
            html += '</a>';
            html += '</li>';            
            $(html)
                .bind('click', current, function(event) {
                    event.preventDefault();
                    window.location.hash = event.data.product;
                    clickHandler(event.data, addToCartHandler);
                })
                .appendTo(ul);
        }        
    });
    
    return $(this).html(ul);
}

$.fn.fabricPopup = function (options) {//attr_name, path, fabrics, perRow, clickHandler
    
    var icon = icon_name (options.attrName);
    var fabricList = '<table>';
    var i = 0;
    $.each(options.fabrics, function (k, v) {
        var colorOrig  = v.color;

        fabricList += i ? '' : '<tr>';
        fabricList += '<td width="33%">';
        fabricList += '<div class="design_menu_popup_icon" id="' + k + '">';
        fabricList += '<img src="' + options.path + '/' + v.article + '/fabric.png" id="' + icon + v.article + '"/>';
        fabricList += '</div>';
        if (options.attrName == 'fabric') {
            var price = parseInt(v[options.priceAttrName]) + attr_markup_cost('fabric');
            fabricList += '<div class="fabric_price">' + price + ' руб.</div>';
        }
        fabricList += '<div class="fabric_name">' + v.displayName + '</div>';
        fabricList += '</td>';
        i++;
        if (i >= options.perRow)
            i = 0;
        fabricList += i ? '' : '</tr>';

    });
    fabricList += '</table>';
    
    var parent = $(this);
    
    return $(this)
        .html(fabricList)
        .find('div.design_menu_popup_icon').each(function() {
            var id = $(this).attr('id');
            $(this).find('img').click(function() {
                $(parent).find('img').removeClass('selected_icon');
                $(this).addClass('selected_icon')
                options.clickHandler(id); 
            });
        }).end();
}

function shirtPresetDetails (data, cartFunction) {
    write_inner('presetShirtArticle', data.article);
    write_inner('presetShirtImage', '<img src="../shirtPresets/' + data.article + '/pict_big.jpg"/>');
	var showConstrLink = typeof data.details.split(";")[29] == 'undefined' ? 'true' : data.details.split(";")[29];
	var html='';
	var inCostructor = '';
	$('#soc_buttons_div').empty();
	if(showConstrLink != 'false'){
		var host = 'http://' + document.location.href.split("/")[2];
		var href = host + '/' + ((data.variation == 'mensShirt') ? 'male' : 'female') + '/ru/designer/id/'+data.objectId;
		inCostructor += '&nbsp;&nbsp;&nbsp;&nbsp;<a href="'+href+'">Загрузить в конструктор</a>';
		$('#soc_buttons_div').html('Поделиться ссылкой: '+soc_buttons(href, data.article,host+'/male/shirtPresets/' + data.article + '/pict_big.jpg'));
	}
	html += '<p>Цена: '+ data.price + 'руб. </p>';
    html += '<a id="addShirtPresetToCart" href="#">Добавить в корзину</a>' + inCostructor + '<br/>';
    html += '<p>';
    html += '<span class="product_descr_hdr">Описание:</span><br/>' + data.description;
    html += '</p>'

    write_inner ('presetShirtInfo', html);

    if (data.variation == 'mensShirt') {
        hide_item ('presetLadiesStdSizeTable');
        show_item ('presetMensStdSizeTable');
        elt('presetstdHeight').value = 176;
        elt('presetstdSize').value = 41;
    } else if (data.variation == 'ladiesShirt') {
        show_item ('presetLadiesStdSizeTable');
        hide_item ('presetMensStdSizeTable');
        elt('presetstdHeight').value = 170;
        elt('presetstdSize').value = 88;
    }
    elt('presetVolume').value = 'volumeStandard';

    $('#addShirtPresetToCart').click(function () {
        cartFunction(this, data);
    });

    change_popup4 ('shirtPresetsDetailsView_page');
}

function skirtPresetDetails (data, cartFunction) {
    write_inner('presetSkirtArticle', data.article);

    var html = '<div class="priceDiv"></div>';
    html += '<a id="addSkirtPresetToCart" class="addToCart">Добавить в корзину</a>';
    html += '<div class="descrDiv">';
    html += '<span class="product_descr_hdr">Описание:</span><br/>' + data.description;
    html += '</div>';

    write_inner ('skirtPresetInfo', html);

    show_item ('skirtPresetsStdSizeTable');

    elt('skirtPresetStdHeight').value = 170;
    elt('skirtPresetStdSize').value = 88;

    elt('skirtPresetStdVolume').value = 80;

    $('#addSkirtPresetToCart').click(function () {
        cartFunction(this, data);
    });
    
    //Скроем все ткани и покажем только те, которые имеют остаток
    $('#skirtFabricForm p').hide();
    var fabrics = productAttr.skirt.fabric.values;
    $.each(fabrics, function(k, v) {
        $('p:has(#' + k + ')').show();
    });

    var skirtPresetImageContainer = $('#skirtPresetImage').empty();
    var imgBase = '/' + contentGender + '/skirtPresets/' + data.article;

    generateGalleryLayout(skirtPresetImageContainer, imgBase, 'skirtZoom1');
        
    change_popup4 ('skirtPresetsDetailsView_page');
    
    //На всякий случай имитируем клик по первой ткани в списке
    $('#skirtFabricForm img:visible:first').trigger('click');
    
    //Глюк в ие не позволяет включить плагин до показа элементов
    $('.cloud-zoom, .cloud-zoom-gallery').CloudZoom({
        zoomWidth: $('#skirtPresetsDetailsView').width() - 260 - 1, //260 - ширина картинки, 1px - границы
        zoomHeight: 520,
        adjustX: 30,
        useZoom: 'skirtZoom1'
    });
}

/**
 * Попап просмотра детальной информации о брюках
 */
function trousersPresetDetails (data, cartFunction) {
    write_inner('presetTrousersArticle', data.article);

    var html = '<div class="priceDiv"></div>';
    html += '<a id="addTrousersPresetToCart" class="addToCart">Добавить в корзину</a>';
    html += '<div class="descrDiv">';
    html += '<span class="product_descr_hdr">Описание:</span><br/>' + data.description;
    html += '</div>';

    write_inner ('trousersPresetInfo', html);

    show_item ('trousersPresetsStdSizeTable');

    elt('trousersPresetStdHeight').value = 170;
    elt('trousersPresetStdSize').value = 92;
    elt('trousersPresetStdVolume').value = 104;

    $('#addTrousersPresetToCart').click(function () {
        cartFunction(this, data);
    });
    
    //Скроем все ткани и покажем только те, которые имеют остаток
    $('#trousersFabricForm p').hide();
    var fabrics = productAttr.trousers.fabric.values;
    $.each(fabrics, function(k, v) {
        $('p:has(#' + k + ')').show();
    });

    var skirtPresetImageContainer = $('#trousersPresetImage').empty();
    var imgBase = '/' + contentGender + '/trousersPresets/' + data.article;

    generateGalleryLayout(skirtPresetImageContainer, imgBase, 'trousersZoom1');
    
    //На всякий случай имитируем клик по первой ткани в списке
        
    change_popup4 ('trousersPresetsDetailsView_page');
    $('#trousersFabricForm img:visible:first').trigger('click');
    
    //Глюк в ие не позволяет включить плагин до показа элементов
    $('.cloud-zoom, .cloud-zoom-gallery').CloudZoom({
        zoomWidth: $('#trousersPresetsDetailsView').width() - 260 - 1, //260 - ширина картинки, 1px - границы
        zoomHeight: 520,
        adjustX: 30,
        useZoom: 'trousersZoom1'
    });
}

/**
 * Попап просмотра детальной информации о трусах
 */
function trunksPresetDetails (data, cartFunction) {
    write_inner('presetTrunksArticle', data.article);

    var html = '<div class="priceDiv"></div>';
    html += '<a id="addTrunksToCart" class="addToCart">Добавить в корзину</a>';
    html += '<div class="descrDiv">';
    html += '<span class="product_descr_hdr">Описание:</span><br/>' + data.description;
    html += '</div>';

    write_inner ('trunksPresetInfo', html);

    $('#addTrunksToCart').click(function () {
        cartFunction(this, data);
    });

    var trunksPresetImageContainer = $('#trunksPresetImage').empty();
    var imgBase = '/male/trunks/' + data.article;

    generateGalleryLayout(trunksPresetImageContainer, imgBase, 'trunksZoom1');
        
    change_popup4 ('trunksPresetsDetailsView_page');
    
    //На всякий случай имитируем клик по первой ткани в списке
    $('#select_trunksFabric img:visible:first').trigger('click');
    
    //Глюк в ие не позволяет включить плагин до показа элементов
    $('.cloud-zoom, .cloud-zoom-gallery').CloudZoom({
        zoomWidth: $('#trunksPresetsDetailsView').width() - 260 - 1, //260 - ширина картинки, 1px - границы
        zoomHeight: 520,
        adjustX: 30,
        useZoom: 'trunksZoom1'
    });
}

/**
 * Сгенерировать "галерею" (3 маленькие + 1 большая) в детальном просмотре полукастомных продуктов
 * @param imageContainer контейнер, в который будет дописываться разметка
 * @param imgBase путь до папки, где будут лежать картинки
 * @param zoomId идентификатор большой (активной) картинки для зума
 */
function generateGalleryLayout(imageContainer, imgBase, zoomId) {
    var gallery = '';
    for (var i = 1; i<=3; i++) {
        var imageGallery = '<a href="{imgBase}/pict_huge_{i}.jpg" class="cloud-zoom-gallery" rel="smallImage: \'{imgBase}/pict_big_{i}.jpg\'">';
        imageGallery += '<img src="{imgBase}/pict_tiny_{i}.jpg"/>';
        imageGallery += '</a>';
        gallery += imageGallery.replace(/{imgBase}/gi, imgBase).replace(/{i}/gi, i);
    }
    
    //Формируем разметку под галерею
    $(document.createElement('a'))
        .attr({
            'href'  : imgBase + '/pict_huge_1.jpg',
            'id'    : zoomId
        })
        .addClass('cloud-zoom')
        .html('<img src="' + imgBase + '/pict_big_1.jpg"/>')
        .click(function(ev){ ev.preventDefault(); })
        .appendTo(imageContainer);
    $(document.createElement('br'))
        .appendTo(imageContainer);
    var galleryDiv = $(document.createElement('div'))
        .addClass('zoomGalleryPics')
        .html(gallery)
        .appendTo(imageContainer);    
}

function presetDetails (context, d, cartFunction) {
    var data = d[context.id];
    write_inner ('presetShirtImage', '<img src="/mens/shirtPresets/' + data.article + '/pict_big.jpg"/>');

    var html = '<p>Цена: '+ data.price + 'руб. </p>';
    html += '<a id="addShirtPresetToCart" class="addToCart">Добавить в корзину</a>';
    html += '<p>';
    html += '<span class="product_descr_hdr">Описание:</span><br/>' + data.description;
    html += '</p>'

    write_inner ('presetShirtInfo', html);

    if (data.variation == 'mensShirt') {
        hide_item ('presetLadiesStdSizeTable');
        show_item ('presetMensStdSizeTable');
        elt('presetstdHeight').value = 176;
        elt('presetstdSize').value = 41;
    } else if (data.variation == 'ladiesShirt') {
        show_item ('presetLadiesStdSizeTable');
        hide_item ('presetMensStdSizeTable');
        elt('presetstdHeight').value = 170;
        elt('presetstdSize').value = 88;
    }
    elt('presetVolume').value = 'volumeStandard';

    el = elt ('addShirtPresetToCart');
    if (el) {
        el.onclick = function () {
            cartFunction(this, data);
        }
    }

    change_popup4 ('shirtPresetsDetailsView_page');
}

function presetAddToCart (context, data) {

    switch (data.variation) {
        case 'mensShirt':
        case 'ladiesShirt':
            var p = {
                objectId    : data.objectId,
                article     : data.article,
                price       : data.price
            }
            var shirt = (data.variation == 'ladiesShirt' ? productAttr.ladies_shirt : productAttr.mens_shirt);
            var testShirt = (data.variation == 'ladiesShirt' ? productAttr.ladies_testShirt : productAttr.testShirt);

            for (attr in shirt) {
                if(shirt[attr].attr.attrType != 'measure') {
                    p[attr] = getDefault (shirt, attr);
                }
            }
            if (shirt.fabric.values[data.auxData1] || testShirt.fabric.values[data.auxData1]) {
                //Ткань доступна
                p['fabric'] = data.auxData1;
            } else {
                myalert ('Извините, для пошива данной рубашки не хватает ткани');
                return;
            }

            if (shirt.buttons.values[data.auxData2]) {
                //Пуговицы доступны
                p['buttons'] = data.auxData2;
            } else {
                myalert ('Извините, для пошива данной рубашки не хватает');
                return;
            }

            p.height = elt('presetstdHeight').value;
            p.volume = elt('presetVolume').value;
            var stdSize = elt('presetstdSize').value;
            if (data.variation == 'ladiesShirt') {
                //var stdSeat = elt('stdSeat').value;
                var stdSeat = parseInt(stdSize) + 8;
                p.stdSize = Math.round(stdSize/2);
                p.chestAround = stdSize;
                p.seatAround = stdSeat;
            } else {
                p.stdSize = stdSize;
                delete p.waistLengthBack;
            }

            delete p.waistLengthFront;
            delete p.shoulderHeightFront;
            delete p.shoulderType;
            delete p.shoulderHeightBack;

            var f = function () {};
            if (data.variation == 'mensShirt') {
                f = function (data) {
                    eval (data);
                    change_cart (count, sum);
                    
                    elt('mens_stdHeight_176').selected = true;
                    elt('presetstdHeight').value = elt('mens_stdHeight_176').value;

                    elt('mens_stdSize_41').selected = true;
                    elt('presetstdSize').value = elt('mens_stdSize_41').value;

                    elt('presetMensVolumeStandard').selected = true;
                    elt('presetVolume').value = elt('presetMensVolumeStandard').value;
                    
                    _gaq.push(['_trackEvent', 'Biz', 'PutToBucket', 'PShirt-m' ]);
                    myalert ('Готово');
                }
            } else {
                f = function (data) {
                    eval (data);
                    change_cart (count, sum);
                    
                    elt('ladies_stdHeight_170').selected = true;
                    elt('presetstdHeight').value = elt('ladies_stdHeight_170').value;

                    elt('ladies_stdSize_88').selected = true;
                    elt('presetstdSize').value = elt('ladies_stdSize_88').value;

                    elt('presetLadiesVolumeStandard').selected = true;
                    elt('presetVolume').value = elt('presetLadiesVolumeStandard').value;
                    
                    _gaq.push(['_trackEvent', 'Biz', 'PutToBucket', 'PShirt-f' ]);
                    myalert ('Готово');
                    
                }
            }
            
            customerService (context, data.variation == 'mensShirt' ? 'addShirt' : 'addLadiesShirt', f, p);

            break;
        case 'mensTrousers':
            var h = $('#trousersPresetStdHeight').val();
            var s = $('#trousersPresetStdSize').val();
            var v = $('#trousersPresetStdVolume').val();
            var f = $('#trousersFabric').val();
            var p = $('#trousersPrice').val();
            var l = $('#trousersLength').val();
            

            if (h && s && v && f && p && l) {
                var p = {
                    objectId        : data.objectId,
                    article         : data.article,
                    price           : p,
                    fabric          : f,
                    chestAround     : v,
                    waistAround     : s,
                    height          : h,
                    trousersLength  : l
                };

                customerService (context, 'addTrousers', function (data) {
                    eval (data);
                    change_cart (count, sum);

                    elt('trousersStdHeight_170').selected = true;
                    elt('trousersPresetStdHeight').value = elt('trousersStdHeight_170').value;

                    //elt('trousersPresetStdSize_88').selected = true;
                    elt('trousersPresetStdSize').value = '92';
                    
                    elt('trousersStdVolume_104').selected = true;
                    elt('trousersPresetStdVolume').value = elt('trousersStdVolume_104').value;

                    myalert ('Готово');
                }, p);
            }
            break;

        case 'ladiesSkirt':
            var h = $('#skirtPresetStdHeight').val();
            var s = $('#skirtPresetStdSize').val();
            var v = $('#skirtPresetStdVolume').val();
            var f = $('#skirtFabric').val();
            var b = $('#skirtButtons').val();
            var p = $('#skirtPrice').val();
            

            if (h && s && v && f && b) {
                var p = {
                    objectId    : data.objectId,
                    article     : data.article,
                    price       : p,
                    fabric      : f,
                    buttons     : b,
                    chestAround : v,
                    seatAround  : s,
                    height      : h
                };

                customerService (context, 'addSkirt', function (data) {
                    eval (data);
                    change_cart (count, sum);

                    elt('skirtStdHeight_170').selected = true;
                    elt('skirtPresetStdHeight').value = elt('skirtStdHeight_170').value;

                    elt('skirtPresetStdSize_88').selected = true;
                    elt('skirtPresetStdSize').value = elt('skirtPresetStdSize_88').value;

                    elt('skirtPresetStdVolume').value = 80;

                    myalert ('Готово');
                }, p);
            }
            break;
        case 'mensTrunks':
            var f = $('#trunksFabric').val();
            var s = $('#trunksStdSize').val();
            var p = productAttr.trunks.fabric.values[$('#trunksFabric').val()].priceTrunks;
            if (f && s && p) {
                var product = {
                    objectId    : data.objectId,
                    article     : data.article,
                    price       : p - calcProductDiscount('trunks', p),
                    fabric      : f,
                    trunksSize  : s
                };

                customerService (context, 'addTrunks', function (data) {
                    eval (data);
                    change_cart (count, sum);

                    elt('trunksSize4244').selected = true;
                    elt('trunksStdSize').value = elt('trunksSize4244').value;
                    elt('trunksFabric').value = '';

                    myalert ('Готово');
                }, product);
            }
            break;
    }
}

function backToShirtPresets () {
    hide_item ('shirtDetails');
    show_item ('shirtsList');
}

function friends_page_details () {
    hide_item ('friends_unauthorized');
    show_item ('friends_authorized');
    var code = customerId.substr (0, 4) + '-' + customerId.substr (4, 4);
    elt('friends_link').value = code;
    elt('friendsName').value = '';
    elt('friendsMail').value = '';
    elt('message').value = '';
    elt('friends_link').select();
    
    var mm = elt('hiddenmessage').value;
    
    var msg = mm.replace(/%CUSTOMERNAME%/g, customerInfo.name ? customerInfo.name : 'Ваш друг');
    msg = msg.replace(/%CUSTOMERMAIL%/g, customerInfo.email ? customerInfo.email : '')
    elt('mailmessage').value = elt('hiddenmessage').value = msg.replace(/%PERSONALCODE%/, customerId.substr (0, 4) + '-' + customerId.substr (4, 4));
    
    elt('friendsName').onkeyup = replaceFriendMailTokens;
    elt('message').onkeyup = replaceFriendMailTokens;
    
    elt('friendSubmitLink').onclick = function () {
        var friendsName = elt('friendsName');
        var friendsMail = elt('friendsMail');
        var msg = elt('message');
        if (friendsName.value && friendsMail.value) {
            if (!friendsMail.value.match(REGEX_EMAIL)) {
                myalert('Введенный email друга не является правильным')
                return false;
            }
            
            var p = {
                friendsName : friendsName.value,
                friendsMail : friendsMail.value,
                message     : msg.value
            }
            
            customerService (0, 'tellAFriend', function (data) {
                myalert('Готово');
            }, p);
            
        } else {
            myalert('Не заполнены необходимые поля');
            return false;
        }
        
        return false;
    }
}

function replaceFriendMailTokens() {
    elt('mailmessage').value = elt('hiddenmessage').value.replace(/%FRIENDSNAME%/g, elt('friendsName').value).replace(/%MESSAGE%/g, elt('message').value);
}

/*
function friends_page_details () {
    hide_item ('friends_unauthorized');
    show_item ('friends_authorized');
    //var link = location.protocol + '//' + location.host + '/?' + customerId;
    var code = customerId.substr(0, 8);
    elt('friends_link').value = code;
    elt('friends_link').select();
}
*/

function friends_page_unauthorized () {
    hide_item ('friends_authorized');
    show_item ('friends_unauthorized');
}

function feedbacks_page_authorized () {
    hide_item ('feedbacks_unauthorized');
    show_item ('feedbacks_authorized');
}

function feedbacks_page_unauthorized () {
    hide_item ('feedbacks_authorized');
    show_item ('feedbacks_unauthorized');
}

function feedback_callback (res) {
    myalert ('Спасибо за Ваш отзыв! Ваш отзыв принят и будет опубликован после проверки модератором.');
    elt('feedback_public_name').value = '';
    elt('feedback_location').value = '';
    elt('feedback_text').value = '';
}

function feedback (f) {
    var p = {};
    p.displayName = elt('feedback_public_name').value;
    p.location = elt('feedback_location').value;
    p.content = elt('feedback_text').value;
    customerService (f, 'feedback', feedback_callback, p);
}

function news_left_callback (res) {
    eval (res);
    var n = 0, s = '';
    for (var i in a) {
        if (++n > 3) break;
        d = date_conv_yy (a[i].newsDate);
        c = a[i].shortContent;
        s += '<span class="news_left_date">' + d + '</span>&nbsp;';
        s += '<span class="news_left_text">' + c + '</span><br/>';
        // s += '<a class="normal_link" href="news.php">...</a>';
    }
    if (s)
        write_inner ('news_left', '<a class="normal_link" href="news.php">Новости</a><br/>' + s);
}

function news_left () {
    var p = {};
    p.offset = 0;
    customerService (0, 'newsList', news_left_callback, p);
}

function change_section(s) {
    if (!s) {
        return null;
    }
    //var e = elt(s + '_section_link');

    //if (e) {
    //    e.className = 'selected';
    //}

    current_page = s + '_page';
    eval(current_page + '()');
    show_item (current_page);
}

function getCookie (name) {
    var prefix = name + '=';
    var cookieStartIndex = document.cookie.indexOf(prefix);
    if (cookieStartIndex == -1)
        return null;
    var cookieEndIndex = document.cookie.indexOf(';', cookieStartIndex + prefix.length);
    if (cookieEndIndex == -1)
        cookieEndIndex = document.cookie.length;
    return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}

function setCookie (name, value, expires, path, domain, secure) {
    document.cookie = name + '=' + escape (value) +
            (expires ? '; expires=' + expires : '') +
            (path ? '; path=' + path : '') +
            (domain ? '; domain=' + domain : '') +
            (secure ? '; secure' : '');
}

function cancelAccess_callback (res) {
}

function access_callback (res) {
    eval (res);
    if (email)
        elt('email').value = email;
    if (logged == 'true')
        switch2authorized (customerName);
    else
        switch2unauthorized (1);
    cookieId = getCookie ('ID');
    if (cookieId) {
        var d = new Date();
        sessId = d.getTime();
        loadURL ('/images/session_dummy.gif?session_start=' + sessId + '&ID=' + cookieId + '&xres=' + screen.width + '&yres=' + screen.height
            + '&ref=' + encodeURIComponent (document.referrer));
        getCart (0);
    } else {
        var p = {};
        p.sessionId = sessionId;
        customerService (0, 'cancelAccess', cancelAccess_callback, p);
        myalert ('Для корректной работы требуется поддержка cookies');
    }
}

function load_popups_callback (res) {
    write_inner ('popups', res);
    customerService (0, 'access', access_callback);
}

function li_counter2_load () {
    li_counter2.src = 'http://counter.yadro.ru/logo?44.12';
}

/*
 * ГЛАВНАЯ ФУНКЦИЯ ИНИЦИАЛИЗАЦИИ, ВЫЗЫВАЕТСЯ НА ВСЕХ СТРАНИЦАХ
 */
function init () {
	// определяем и устанавливаем язык & пол
    langset();
    genderset();

    popups_url = '/' + contentGender + '/' + contentLang + '/popups2';
    design_base = '/' + contentGender + '/shirt/';
    tie_design_base = '/' + contentGender + '/customTie/';

    li_counter1.src = "http://counter.yadro.ru/hit?r"+
        escape(document.referrer)+((typeof(screen)=="undefined")?"":
        ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
        screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+
        ";h"+escape(document.title.substring(0,80))+";"+Math.random();
    li_counter1.onload = li_counter2_load;
    loadURL (popups_url, load_popups_callback);
    // news_left ();



    // tracker for adlabs
    //var adLabsTracker = new Image(1,1);
    //adLabsTracker.src = 'http://luxup.ru/tr/962/&r='+escape(document.referrer)+'&t='+(new Date()).getTime();
}

function init_section (section) {
    init();
    change_section(section);
}

function contacts_page_init () {
    var s = cont1.concat('@', domain, '.ru');
    $('#contact1').attr('href', 'mailto:'.concat(s)).html(s);

    s = cont2.concat('@', domain, '.ru');
    $('#contact2').attr('href', 'mailto:'.concat(s)).html(s);
    
    s = 'sadilova'.concat('@', domain, '.ru');
    $('#orderPlacement').attr('href', ''.concat('mailto:', s)).html(s);

    // вставляем почтовые адреса партнёров
    for (var partner in partnersEmails) {
        var email = partnersEmails[partner];
        $('#' + partner)
            .attr('href', ''.concat('mailto:', email))
            .append(document.createTextNode(email));
    }


    var shown = false;

    $('press_about_us_button').addEvent ('click',function (){
        shown ? learnMoreSlide.hide () : learnMoreSlide.show ();
        shown = !shown;
    });

    /*
    hide_item('press_about_us');
    elt('press_about_us_button').onclick = function () {
       shown ? hide_item ('press_about_us') : show_item ('press_about_us');
       shown = !shown;
    };
    */
}

function corporative_page_init() {
    contacts_page_init (); //Функциональность та-же - проставление мыла
}

// ИНИЦИАЛИЗАЦИЯ СТРАНИЦЫ
function init_page(page)
{
    init();
    change_page(page);
}

function goodbye () {
    if (cookieId)
        loadURL ('/images/session_dummy.gif?session_end=' + sessId + '&ID=' + cookieId + '&c=' + click_count);
}

function customBookletView (f, product) {

}

// checking ranges of product's attributes
function check_shirt(shirtConfig)
{
    var warn_message = "При сохранении профиля размеров проводится автоматический контроль указанных Вами размеров во избежании ошибок и неточностей при снятии мерок.\n Просим проверить указанные размеры:\n";

    //.\n";
    warn_step = null;

    var warn_message_neck   = check_shirt_neck(shirtConfig['neckAround'], shirtConfig['chestAround']);
    var warn_message_height = check_shirt_height(shirtConfig['height'], shirtConfig['sleeveLength'], shirtConfig['shirtLength']);
    var warn_flag = (warn_message_neck || warn_message_height) ? true : false;

/*
    warn_step  = 100;
    warn_attr  = null;
*/
    if (warn_message_neck) {
        warn_message += '"Обхват груди" - ' + shirtConfig['chestAround'] + ' см\n';
    }

    if (warn_message_height) {
        warn_message += '"Длина рукава" - ' + shirtConfig['sleeveLength'] + ' см\n';
        warn_message += '"Длина рубашки" - ' + shirtConfig['shirtLength'] + ' см\n';
    }

    if (warn_flag) {
        warn_message += '\nВаши размеры указаны с существенными отклонениями от типовых значений\n';
        warn_message += warn_message_neck + '\n' + warn_message_height + '\n\n Вы подтверждаете указанные Вами значения?';
        return myconfirm(warn_message);
    }

    return true;
}

// check chestAround
function check_shirt_neck(neckAround, chestAround)
{
    var warn_message = '';
    var chest_neck_step = 12;
    var neck_sizes = {
        '37': {'chestAroundMin': 80},
        '38': {'chestAroundMin': 84},
        '39': {'chestAroundMin': 88},
        '40': {'chestAroundMin': 92},
        '41': {'chestAroundMin': 96},
        '42': {'chestAroundMin': 100},
        '43': {'chestAroundMin': 104},
        '44': {'chestAroundMin': 108},
        '45': {'chestAroundMin': 112},
        '46': {'chestAroundMin': 116},
        '47': {'chestAroundMin': 120},
        '48': {'chestAroundMin': 124},
        '49': {'chestAroundMin': 128},
        '50': {'chestAroundMin': 132},
        '51': {'chestAroundMin': 136}
    }

    if (neck_sizes[neckAround]) {
        var chest_min = neck_sizes[neckAround]['chestAroundMin'];
        var chest_max = neck_sizes[neckAround]['chestAroundMin'] + chest_neck_step;
        if (chestAround > chest_max || chestAround < chest_min) {
            getAttrStep('chestAround');
            return warn_message = 'В типовой фигуре обхват шеи ' + neckAround + ' см соответствует обхвату груди ' + chest_min + '-' + chest_max + ' см';
        }
    }

    return warn_message;
}

function check_shirt_height(heightConf, sleeveLength, shirtLength)
{
    var warn_message = '';
    var height_step = 5;
    var sleeve_step = 6;

    var height_sizes = {
        '155': {'sleeveLengthMin':55,
               'shirtLengthMin':62,
               'shirtLengthMax':71
              },
        '161': {'sleeveLengthMin':58,
               'shirtLengthMin':66,
               'shirtLengthMax':75
              },
        '167': {'sleeveLengthMin':61,
               'shirtLengthMin':71,
               'shirtLengthMax':79
              },
        '173': {'sleeveLengthMin':64,
               'shirtLengthMin':74,
               'shirtLengthMax':83
              },
        '179': {'sleeveLengthMin':67,
               'shirtLengthMin':78,
               'shirtLengthMax':87
              },
        '185': {'sleeveLengthMin':70,
               'shirtLengthMin':83,
               'shirtLengthMax':91
              },
        '191': {'sleeveLengthMin':73,
               'shirtLengthMin':86,
               'shirtLengthMax':95
              },
        '197': {'sleeveLengthMin':76,
               'shirtLengthMin':91,
               'shirtLengthMax':99
              }
    }

    for (height_min in height_sizes) {
        var height_max = parseInt(height_min) + height_step;
        // let's check
        if (heightConf <= height_max && heightConf >= height_min) {
            var sleeveLengthMin = height_sizes[height_min]['sleeveLengthMin'];
            var sleeveLengthMax = parseInt(sleeveLengthMin) + sleeve_step;
            var shirtLengthMin  = height_sizes[height_min]['shirtLengthMin'];
            var shirtLengthMax  = height_sizes[height_min]['shirtLengthMax'];

            if (sleeveLength > sleeveLengthMax ||
                sleeveLength < sleeveLengthMin) {
                warn_message += 'длина рукава обычно составляет ' + sleeveLengthMin + '-' + sleeveLengthMax + ' см\n';
                warn_step ? null : getAttrStep('sleeveLength');
            }

            if (shirtLength > shirtLengthMax ||
                shirtLength < shirtLengthMin) {
                warn_message += warn_message ? 'а ' : '';
                warn_message += 'длина рубашки обычно составляет ' + shirtLengthMin + '-' + shirtLengthMax + ' см';
                warn_step ? null : getAttrStep('shirtLength');
            }

            if (warn_message) {
                warn_message = 'При росте ' + heightConf + ' см ' + warn_message;
            }

            return warn_message;
        }
    }

    return warn_message;
}

function getAttrStep(attr)
{
    if (typeof(meas) != 'undefined') {
        for (meas_step in meas) {
            if (meas[meas_step][attr] != undefined) {
            //if (meas[meas_step][attr] != undefined && meas_step < warn_step) {
                warn_step = parseInt(meas_step);
                warn_attr = attr;
                return warn_step;
            }
        }
    } else {
        warn_step = 100;
        warn_attr = attr;
    }

    return false;
}

function resolveAbsoluteUrl(u) {
    var r = '', m = [];
    if (/\./.test(u)) {
        while (u !== undefined && u !== '') {
            if (u === '.' || u === '..') {
                u = '';
            } else if (/^\.\.\//.test(u)) { // starts with ../
                u = u.substring(3);
            } else if (/^\.\//.test(u)) { // starts with ./
                u = u.substring(2);
            } else if (/^\/\.(\/|$)/.test(u)) { // starts with /./ or consists of /.
                u = '/' + u.substring(3);
            } else if (/^\/\.\.(\/|$)/.test(u)) { // starts with /../ or consists of /..
                u = '/' + u.substring(4);
                r = r.replace(/\/?[^\/]+$/, '');
            } else {
                m = u.match(/^(\/?[^\/]*)(\/.*)?$/);
                u = m[2];
                r = r + m[1];
            }
        }
        return r;
    } else {
        return u;
    }
};

if(typeof Array().indexOf != 'function'){
  Array.prototype.indexOf = function(obj){
   for(var i=0; i<this.length; i++){
    if(this[i]==obj){
     return i;
    }
   }
   return -1;
  }
}


function dbg(obj) {
    elt('dbg').innerHTML = dump_object(obj);
}

function dump_object(obj, prepend) {
    html = '';
    if(prepend == null)
        prepend = 'root:';
    for(var i in obj) {
        if(typeof obj[i] == 'object')
            html += prepend + i + ':<br/>' + dump_object(obj[i], prepend + ":" + i + ':') + '<br/>';
        else
            html += prepend + i + ': ' + obj[i] + '<br/>';
    }

    return html;
}

function empty( val ) {
    return ( val === "" || val === 0   || val === "0" || val === null  || val === false  ||  ( typeof val=='object' && (val instanceof Array) && val.length === 0 ) );
}

function getTie_callback (res) {
    eval (res);
    cart_shirt = a;
    var s = '';
    s += '<table summary="">';
    s += '<tr>';
    s += '<td width="50%">';
    //    s += '<span class="articleDescrHeader">Ткань:</span>';
    s += '<img alt="" src="/male/customTie/' + (a.useTieFabric == 'true' ? a.tieFabric : a.fabric) + '/fabric_icon.png" />';
    s += '<span class="articleDescrHeader">Описание:</span>';
    s += a.description;
    s += '</td>';

    s += '</tr>';
    s += '</table>';
    write_inner ('tieView', s);
    url = window.location + '';
    url.match(/customTie/) ?
        show_inline_item ('copy2designTie') : hide_item ('copy2designTie');

    if (current_popup == 'cartView_page')
        change_popup2 ('customTieView_page');
    else
        change_popup4 ('customTieView_page');
}

function getActiveAddress () {
    customerService (0, 'addressList', function (res) {
        eval (res);
        for (oid in a) {
            if (a[oid].selected == 'true') {
                selected_address = a[oid];
                return;
            }
        }
    });
}

//Таблица соответствий длин брюк введенному росту в
function trousersHeightToLength (height) {
    var len = 0;
    switch (parseInt(height)) {
        case 158:
            len = 93;
            break;
        case 164:
            len = 97;
            break;
        case 170:
            len = 101;
            break;
        case 176:
            len = 105;
            break;
        case 182:
            len = 109;
            break;
        case 188:
            len = 113;
            break;
        case 194:
            len = 117;
            break;
        case 200:
            len = 121;
            break;
    }
    
    $('#trousersLength').val(len);
}

//Перевести первую букву строки в верхний регистр
function ucFirst(str) {
    return str.charAt(0).toUpperCase() + str.substr(1);
}



function phone_field_to_sms_phone (phone) {
    if (!phone) { return null; }
    var first_phone = (phone.split(/[;,]/g))[0];
    first_phone = first_phone.replace(/^\s/,"");

    if (!first_phone) { return null; }

    var res = '';
    if(first_phone[0] == '+') {
        res = '+';
    }
    first_phone = first_phone.replace(/\D/g,"");

    if (!first_phone) { return null; }
    res += first_phone;
    return res;
}


