(function($) {
    var characterBaseURL = 'http://www.stranadruzey.ru/';
    var characterSettings = {
        anime: {
            bcolor: [
                'white', 'Светлый',
                'brown', 'Смуглый',
                'black', 'Черный'
            ],
            lhair: [
                'short', 'Короткие',
                'middle', 'Средние',
                'long', 'Длинные'
            ],
            chair: [
                    'darkhair', 'Черные',
                    'blondhair', 'Светлые',
                    'redhair', 'Рыжие',
                    'brownhair', 'Темные'
                    ],
            clothes: [
                    'daily', 'Повседневная',
                    'school', 'Школьная', 
                    'holiday', 'Праздничная',
                    'winter', 'Зимняя'
                  ],
            title: 'Аниме',
            bodies: [
                     'normal', 'Нормальное',
                     'plump', 'Плотное'
                     ],
            bg: [
                     'bg1', 'Первый (с питомцем)',
                     'bg2', 'Второй',
                     'bg3', 'Третий',
                     'bg4', 'Четвертый',
                     'bg5', 'Пятый',                 
                     'bg6', 'Шестой (время года)',
                     'bg7', 'Седьмой (праздник)'                     
            ]
        },
        artistic: {
            bcolor: [
                'white', 'Светлый',
                'brown', 'Смуглый',
                'black', 'Черный'
            ],
            lhair: [
                'short', 'Короткие',
                'middle', 'Средние',
                'long', 'Длинные'
            ],
            chair: [
                    'darkhair', 'Черные',
                    'blondhair', 'Светлые',
                    'redhair', 'Рыжие',
                    'brownhair', 'Темные'
                    ],
            clothes: [
                    'daily', 'Повседневная',
                    'school', 'Школьная', 
                    'holiday', 'Праздничная',
                    'winter', 'Зимняя'
                  ],
            title: 'Артистичный',
            bodies: [
                     'normal', 'Нормальное',
                     'plump', 'Плотное'
                     ],
            bg: [
                     'bg1', 'Первый (с питомцем)',
                     'bg2', 'Второй',
                     'bg3', 'Третий',
                     'bg4', 'Четвертый',
                     'bg5', 'Пятый',                 
                     'bg6', 'Шестой (время года)',
                     'bg7', 'Седьмой (праздник)'                 
            ]
        },
        wizard: {
            bcolor: [
                'white', 'Светлый',
                'brown', 'Смуглый',
                'black', 'Черный'
            ],
            lhair: [
                'short', 'Короткие',
                'middle', 'Средние',
                'long', 'Длинные'
            ],
            chair: [
                    'darkhair', 'Черные',
                    'blondhair', 'Светлые',
                    'redhair', 'Рыжие',
                    'brownhair', 'Темные'
                    ],
            clothes: [
                    'daily', 'Повседневная',
                    'school', 'Школьная', 
                    'holiday', 'Праздничная',
                    'winter', 'Зимняя'
                  ],
            title: 'Волшебный',
            bodies: [
                     'normal', 'Нормальное',
                     'plump', 'Плотное'
                     ],
            bg: [
                     'bg1', 'Первый (с питомцем)',
                     'bg2', 'Второй',
                     'bg3', 'Третий',
                     'bg4', 'Четвертый',
                     'bg5', 'Пятый',                 
                     'bg6', 'Шестой (время года)',
                     'bg7', 'Седьмой (праздник)'                 
            ]
        },
        game: {
            bcolor: [
                'white', 'Светлый',
                'brown', 'Смуглый',
                'black', 'Черный'
            ],
            lhair: [
                'short', 'Короткие',
                'middle', 'Средние',
                'long', 'Длинные'
            ],
            chair: [
                    'darkhair', 'Черные',
                    'blondhair', 'Светлые',
                    'redhair', 'Рыжие',
                    'brownhair', 'Темные'
                    ],
            clothes: [
                    'daily', 'Повседневная',
                    'school', 'Школьная', 
                    'holiday', 'Праздничная',
                    'winter', 'Зимняя'
                  ],
            title: 'Игровой',
            bodies: [
                     'normal', 'Нормальное',
                     'plump', 'Плотное'
                     ],
            bg: [
                     'bg1', 'Первый (с питомцем)',
                     'bg2', 'Второй',
                     'bg3', 'Третий',
                     'bg4', 'Четвертый',
                     'bg5', 'Пятый',                 
                     'bg6', 'Шестой (время года)',
                     'bg7', 'Седьмой (праздник)'                 
            ]
        },         
        stylish: {
            bcolor: [
                'white', 'Светлый',
                'brown', 'Смуглый',
                'black', 'Черный'
            ],
            lhair: [
                'short', 'Короткие',
                'middle', 'Средние',
                'long', 'Длинные'
            ],
            chair: [
                    'darkhair', 'Черные',
                    'blondhair', 'Светлые',
                    'redhair', 'Рыжие',
                    'brownhair', 'Темные'
                    ],
            clothes: [
                    'daily', 'Повседневная',
                    'school', 'Школьная', 
                    'holiday', 'Праздничная',
                    'winter', 'Зимняя'
                  ],
            title: 'Модный',
            bodies: [
                     'normal', 'Нормальное',
                     'plump', 'Плотное'
                     ],
            bg: [
                     'bg1', 'Первый (с питомцем)',
                     'bg2', 'Второй',
                     'bg3', 'Третий',
                     'bg4', 'Четвертый',
                     'bg5', 'Пятый',                 
                     'bg6', 'Шестой (время года)',
                     'bg7', 'Седьмой (праздник)'                 
            ]
        },
        punk: {
            bcolor: [
                'white', 'Светлый',
                'brown', 'Смуглый',
                'black', 'Черный'
            ],
            lhair: [
                'short', 'Короткие',
                'middle', 'Средние',
                'long', 'Длинные'
            ],
            chair: [
                    'darkhair', 'Черные',
                    'blondhair', 'Светлые',
                    'redhair', 'Рыжие',
                    'brownhair', 'Темные'
                    ],
            clothes: [
                    'daily', 'Повседневная',
                    'school', 'Школьная', 
                    'holiday', 'Праздничная',
                    'winter', 'Зимняя'
                  ],
            title: 'Панковский',
            bodies: [
                     'normal', 'Нормальное',
                     'plump', 'Плотное'
                     ],
            bg: [
                     'bg1', 'Первый (с питомцем)',
                     'bg2', 'Второй',
                     'bg3', 'Третий',
                     'bg4', 'Четвертый',
                     'bg5', 'Пятый',                 
                     'bg6', 'Шестой (время года)',
                     'bg7', 'Седьмой (праздник)'                 
            ]
        },
        pirate: {
            bcolor: [
                'white', 'Светлый',
                'brown', 'Смуглый',
                'black', 'Черный'
            ],
            lhair: [
                'short', 'Короткие',
                'middle', 'Средние',
                'long', 'Длинные'
            ],
            chair: [
                    'darkhair', 'Черные',
                    'blondhair', 'Светлые',
                    'redhair', 'Рыжие',
                    'brownhair', 'Темные'
                    ],
            clothes: [
                    'daily', 'Повседневная',
                    'school', 'Школьная', 
                    'holiday', 'Праздничная',
                    'winter', 'Зимняя'
                  ],
            title: 'Пиратский',
            bodies: [
                     'normal', 'Нормальное',
                     'plump', 'Плотное'
                     ],
            bg: [
                     'bg1', 'Первый (с питомцем)',
                     'bg2', 'Второй',
                     'bg3', 'Третий',
                     'bg4', 'Четвертый',
                     'bg5', 'Пятый',                 
                     'bg6', 'Шестой (время года)',
                     'bg7', 'Седьмой (праздник)'                 
            ]
        },                             
        diligent: {
            bcolor: [
                'white', 'Светлый',
                'brown', 'Смуглый',
                'black', 'Черный'
            ],
            lhair: [
                'short', 'Короткие',
                'middle', 'Средние',
                'long', 'Длинные'
            ],
            chair: [
                    'darkhair', 'Черные',
                    'blondhair', 'Светлые',
                    'redhair', 'Рыжие',
                    'brownhair', 'Темные'
                    ],
            clothes: [
                    'daily', 'Повседневная',
                    'school', 'Школьная', 
                    'holiday', 'Праздничная',
                    'winter', 'Зимняя'
                  ],
            title: 'Прилежный',
            bodies: [
                     'normal', 'Нормальное',
                     'plump', 'Плотное'
                     ],
            bg: [
                     'bg1', 'Первый (с питомцем)',
                     'bg2', 'Второй',
                     'bg3', 'Третий',
                     'bg4', 'Четвертый',
                     'bg5', 'Пятый',                 
                     'bg6', 'Шестой (время года)',
                     'bg7', 'Седьмой (праздник)'                 
            ]
        },
        rap: {
            bcolor: [
                'white', 'Светлый',
                'brown', 'Смуглый',
                'black', 'Черный'
            ],
            lhair: [
                'short', 'Короткие',
                'middle', 'Средние',
                'long', 'Длинные'
            ],
            chair: [
                    'darkhair', 'Черные',
                    'blondhair', 'Светлые',
                    'redhair', 'Рыжие',
                    'brownhair', 'Темные'
                    ],
            clothes: [
                    'daily', 'Повседневная',
                    'school', 'Школьная', 
                    'holiday', 'Праздничная',
                    'winter', 'Зимняя'
                  ],
            title: 'Рэперский',
            bodies: [
                     'normal', 'Нормальное',
                     'plump', 'Плотное'
                     ],
            bg: [
                     'bg1', 'Первый (с питомцем)',
                     'bg2', 'Второй',
                     'bg3', 'Третий',
                     'bg4', 'Четвертый',
                     'bg5', 'Пятый',                 
                     'bg6', 'Шестой (время года)',
                     'bg7', 'Седьмой (праздник)'                 
            ]
        },        
        sport: {
            bcolor: [
                'white', 'Светлый',
                'brown', 'Смуглый',
                'black', 'Черный'
            ],
            lhair: [
                'short', 'Короткие',
                'middle', 'Средние',
                'long', 'Длинные'
            ],
            chair: [
                    'darkhair', 'Черные',
                    'blondhair', 'Светлые',
                    'redhair', 'Рыжие',
                    'brownhair', 'Темные'
                    ],
            clothes: [
                    'daily', 'Повседневная',
                    'school', 'Школьная', 
                    'holiday', 'Праздничная',
                    'winter', 'Зимняя'
                  ],
            title: 'Спортивный',
            bodies: [
                     'normal', 'Нормальное',
                     'plump', 'Плотное'
                     ],
            bg: [
                     'bg1', 'Первый (с питомцем)',
                     'bg2', 'Второй',
                     'bg3', 'Третий',
                     'bg4', 'Четвертый',
                     'bg5', 'Пятый',                 
                     'bg6', 'Шестой (время года)',
                     'bg7', 'Седьмой (праздник)'                 
            ]
        },        
        hooligan: {
            bcolor: [
                'white', 'Светлый',
                'brown', 'Смуглый',
                'black', 'Черный'
            ],
            lhair: [
                'short', 'Короткие',
                'middle', 'Средние',
                'long', 'Длинные'
            ],
            chair: [
                    'darkhair', 'Черные',
                    'blondhair', 'Светлые',
                    'redhair', 'Рыжие',
                    'brownhair', 'Темные'
                    ],
            clothes: [
                    'daily', 'Повседневная',
                    'school', 'Школьная', 
                    'holiday', 'Праздничная',
                    'winter', 'Зимняя'
                  ],
            title: 'Хулиганский',
            bodies: [
                     'normal', 'Нормальное',
                     'plump', 'Плотное'
                     ],
            bg: [
                     'bg1', 'Первый (с питомцем)',
                     'bg2', 'Второй',
                     'bg3', 'Третий',
                     'bg4', 'Четвертый',
                     'bg5', 'Пятый',                 
                     'bg6', 'Шестой (время года)',
                     'bg7', 'Седьмой (праздник)'                 
            ]
        },
        emo: {
            bcolor: [
                'white', 'Светлый',
                'brown', 'Смуглый',
                'black', 'Черный'
            ],
            lhair: [
                'short', 'Короткие',
                'middle', 'Средние',
                'long', 'Длинные'
            ],
            chair: [
                    'darkhair', 'Черные',
                    'blondhair', 'Светлые',
                    'redhair', 'Рыжие',
                    'brownhair', 'Темные'
                    ],
            clothes: [
                    'daily', 'Повседневная',
                    'school', 'Школьная', 
                    'holiday', 'Праздничная',
                    'winter', 'Зимняя'
                  ],
            title: 'Эмо',
            bodies: [
                     'normal', 'Нормальное',
                     'plump', 'Плотное'
                     ],
            bg: [
                     'bg1', 'Первый (с питомцем)',
                     'bg2', 'Второй',
                     'bg3', 'Третий',
                     'bg4', 'Четвертый',
                     'bg5', 'Пятый',                 
                     'bg6', 'Шестой (время года)',
                     'bg7', 'Седьмой (праздник)'                
            ]
        }          
    }
    $.fn.childCharacterEdit = function(options) {
        //debug(this);
        renderEditMode(this, options, characterBaseURL, characterSettings);
    };
    $.fn.childCharacterView = function(options) {
        //debug(this);
        renderViewMode(this, options, characterBaseURL, characterSettings);
    };
    function renderViewMode(obj, opts, characterBaseURL, characterSettings) {
        /**
         * remove container elements
         */
        $(obj).empty();
        
        /**
         * Begin: init variables
         */
        var class_prfx = '';
        var prof = opts.prof || null;        
        var body = opts.body || null;
        var cbody = opts.bcolor || null;
        var lenhair = opts.lhair || null;
        var colorhair = opts.chair || null;
        var sex = opts.sex || null;
        var cloth = opts.cloth || null;
        var background = opts.bg || null;
        
        switch (sex) {
            case '1':
                class_prfx = 'b_';
                break;
            case '2':
                class_prfx = 'g_'
                break;
            default:
                return false;
        }
        
        /**
         * Begin: draw form elements and init event handlers on it
         */
        var divExtra = $('<div class="extra"></div>').appendTo(obj);
            var divChProf = $('<div id="dCharacterProf2" class="CharacterViewModeProfession2"></div>').insertBefore(divExtra);
            var defaultBody = $('<div class="'+class_prfx+'default_body character"></div>').appendTo(divExtra).hide();
        /**
         * End: draw form elements and init event handlers on it
         */
        
        /**
         * Begin: switch prof value - selected or not (value, undef, 0)
         */
        //Типаж не выбран, показываем тело по умолчанию в зависимости от пола пользователя
        if ( !prof || prof == '0' ) {
            $(divChProf).text("Не выбрано");
            $(defaultBody).show();
        } else {
            if ( $('link#'+prof+'_character_style').get().length == 0 ) {
                $('<link id="'+prof+'_character_style" rel="stylesheet" type="text/css" href="'+characterBaseURL+'css/characters2/'+prof+'.css" />').appendTo(divExtra);
            }
            
            $(divChProf).text( characterSettings[prof].title );
            
            body = ( body && body != '' && body != '0' ) ? body : 'normal';
            cbody = ( cbody && cbody != '' && cbody != '0' ) ? cbody : 'white';
            cloth = ( cloth && cloth != '' && cloth != '0' ) ? cloth : 'daily';
            
            var class_name = class_prfx + prof + '_' + body;
            var chDiv = $('<div class="'+class_name + '_' + cbody+' character"></div>').appendTo(divExtra);
            
            if (lenhair && colorhair) {
                var hair = lenhair + colorhair;
                $('<div class="'+class_name+'_'+hair+'"></div>').appendTo(chDiv);
            }
            if (cloth) {
                $('<div class="'+class_name+'_'+cloth+'clothes"></div>').appendTo(chDiv);
            }
            if (background) {
                $('<div class="'+class_name+'_'+background+'"></div>').prependTo(divExtra);
            }
        }
    }
    function renderEditMode(obj, opts) {
        
        /**
         * remove container elements
         */
        $(obj).empty();
        
        /**
         * Begin: init variables
         */
        var class_prfx = '';
        var prof = opts.prof || null;        
        var body = opts.body || null;
        var cbody = opts.bcolor || null;
        var lenhair = opts.lhair || null;
        var colorhair = opts.chair || null;
        var sex = opts.sex || null;
        var cloth = opts.cloth || null;
        var background = opts.bg || null;
        
        switch (sex) {
            case '1':
                class_prfx = 'b_';
                break;
            case '2':
                class_prfx = 'g_'
                break;
            default:
                return false;
        }
        
        if ( !prof || typeof(characterSettings[prof]) == 'undefined' ) prof = '0';
        /**
         * End: init variables
         */
        
        /**
         * Begin: draw form elements and init event handlers on it
         */
        var divExtra = $('<div class="extra"></div>').appendTo(obj);
            var divChProf = $('<div id="dCharacterProf" style="font:normal 11pt arial;padding:0 0 10px 0;color:#555c63;position:relative"></div>').appendTo(divExtra);
            var divLCol = $('<div class="l_col"></div>').appendTo(divExtra);
            
            var defaultBody = $('<div class="'+class_prfx+'default_body character"></div>').appendTo(divLCol).hide();
            
            var divRCol = $('<div class="r_col"></div>').appendTo(divExtra);
                var selectProfLabel = $('<label for="dCharacters_editMode2_prof">Типаж:</label>').appendTo(divRCol);
                var selectProf = $('<select id="dCharacters_editMode2_prof">').appendTo(divRCol);
                
                var selectBodyLabel = $('<label for="dCharacters_editMode2_body">Телосложение:</label>').appendTo(divRCol);
                var selectBody = $('<select id="dCharacters_editMode2_body">').appendTo(divRCol);
                
                var selectBColorLabel = $('<label for="dCharacters_editMode2_bcolor">Цвет тела:</label>').appendTo(divRCol);
                var selectBColor = $('<select id="dCharacters_editMode2_bcolor">').appendTo(divRCol);
                
                var selectLHairLabel = $('<label for="dCharacters_editMode2_lhair">Длина волос:</label>').appendTo(divRCol);
                var selectLHair = $('<select id="dCharacters_editMode2_lhair">').appendTo(divRCol);
                
                var selectCHairLabel = $('<label for="dCharacters_editMode2_chair">Цвет волос:</label>').appendTo(divRCol);
                var selectCHair = $('<select id="dCharacters_editMode2_chair">').appendTo(divRCol);
                
                var selectClothesLabel = $('<label for="dCharacters_editMode2_clothes">Одежда:</label>').appendTo(divRCol);
                var selectClothes = $('<select id="dCharacters_editMode2_clothes">').appendTo(divRCol);
                
                var selectBGLabel = $('<label for="dCharacters_editMode2_bg">Фон:</label>').appendTo(divRCol);
                var selectBG = $('<select id="dCharacters_editMode2_bg">').appendTo(divRCol);
                
                //var notifyDiv = $('<div></div>').appendTo(divRCol);
            $('<div class="clr"></div>').appendTo(divExtra);
            
            //Заполняем селект для выбора типажа
            $('<option value="0">Не выбрано</option>').appendTo(selectProf);
            for ( var type in characterSettings ) {
                $('<option value="'+type+'">'+characterSettings[type].title+'</option>').appendTo(selectProf);
            }
            //Вешаем обработчики на изменение значения селектов
            $(selectProf).change(function () {
                var selectedValue = $(this).val();
                
                renderEditMode(obj,
                    {
                        'sex':      sex,
                        'prof':     selectedValue,
                        'body':     body,
                        'bcolor':   bcolor,
                        'lhair':    lhair,
                        'chair':    chair,
                        'cloth':    cloth,
                        'bg':       bg
                    }, characterBaseURL, characterSettings
                );
                
                /*if ( selectedValue == "0" ) {
                    $(divChProf).text("Не выбрано");
                    
                    $.each( $(divRCol).find('select:gt(0)'), function() {
                        $(this).find('option:first').attr("selected","selected");
                        $(this).attr("disabled","disabled");
                    });
                    
                    $(divLCol).find('#characterBG_normal')
                        .removeClass()
                        .hide();
                    $(divLCol).find('#characterBG_plump')
                        .removeClass()
                        .hide();
                    
                    $.each( $(divLCol).find('.character'), function() {
                        $(this).children().hide();
                        $(this).hide();
                    });
                    
                    prof = selectedValue;
                    
                    $('.'+class_prfx + 'default_body.character').show();
                } else {
                    $(divChProf).text(characterSettings[selectedValue].title);
                    if ( $('link#'+selectedValue+'_character_style').get().length == 0 ) {
                        $('<link id="'+selectedValue+'_character_style" rel="stylesheet" type="text/css" href="'+characterBaseURL+'css/characters2/'+selectedValue+'.css" />')
                            .appendTo(divLCol);
                    }
                    
                    $.each( $(divRCol).find('select:gt(0)'), function() {
                        $(this).find('option:first').attr("selected","selected");
                        $(this).attr("disabled","");
                    });
                    //TODO: BG fix
                    $.each( $(divLCol).find('.character'), function() {
                        $(this).children().hide();
                        $(this).hide();
                    });
                    
                    prof = selectedValue;
                    //Телосложение, цвет тела и одежда по умолчанию
                    body = 'normal';
                    cbody = 'white';
                    cloth = 'daily';
                    
                    $(selectBody).val(body);
                    $(selectBColor).val(cbody);
                    $(selectClothes).val(cloth);
                    
                    $('.' + class_prfx + prof + '_' + body + '_' + cbody).show();
                    $('.' + class_prfx + prof + '_' + body + '_' + cloth + 'clothes').show();
                }*/
                //$(notifyDiv).text('prof='+prof+', '+'body='+body+', '+'cbody='+cbody+', '+'lenhair='+lenhair+', '+'colorhair='+colorhair+', '+'cloth='+cloth);
                return false;
            });
            $(selectBody).change(function () {
                var selectedValue = $(this).val();
                
                $.each( $(divRCol).find('select:gt(1)'), function() {
                    $(this).find('option:first').attr("selected","selected");
                    $(this).attr("disabled","");
                });
                
                $(divLCol).find('#characterBG_normal')
                    .removeClass()
                    .hide();
                $(divLCol).find('#characterBG_plump')
                    .removeClass()
                    .hide();
                
                $.each( $(divLCol).find('.character'), function() {
                    $(this).children().hide();
                    $(this).hide();
                });
                
                body = selectedValue;
                cbody = 'white';
                cloth = 'daily';
                
                $(selectBColor).val(cbody);
                $(selectClothes).val(cloth);
                
                $('.' + class_prfx + prof + '_' + body + '_' + cbody).show();
                $('.' + class_prfx + prof + '_' + body + '_' + cloth + 'clothes').show();
                //$(notifyDiv).text('prof='+prof+', '+'body='+body+', '+'cbody='+cbody+', '+'lenhair='+lenhair+', '+'colorhair='+colorhair+', '+'cloth='+cloth);
                return false;
            });
            $(selectBColor).change(function () {
                var selectedValue = $(this).val();
                
                $.each( $(divRCol).find('select:gt(2)'), function() {
                    $(this).find('option:first').attr("selected","selected");
                    $(this).attr("disabled","");
                });
                
                $(divLCol).find('#characterBG_normal')
                    .removeClass()
                    .hide();
                $(divLCol).find('#characterBG_plump')
                    .removeClass()
                    .hide();
                
                $.each( $(divLCol).find('.character'), function() {
                    $(this).children().hide();
                    $(this).hide();
                });
                
                cbody = selectedValue;
                cloth = 'daily';
                
                $(selectClothes).val(cloth);
                
                $('.' + class_prfx + prof + '_' + body + '_' + cbody).show();
                $('.' + class_prfx + prof + '_' + body + '_' + cloth + 'clothes').show();
                //$(notifyDiv).text('prof='+prof+', '+'body='+body+', '+'cbody='+cbody+', '+'lenhair='+lenhair+', '+'colorhair='+colorhair+', '+'cloth='+cloth);
                return false;
            });
            $(selectLHair).change(function () {
                $(selectCHair).find('option:first').attr("selected","selected");
                for ( var k=0;k<lhair.length;k+=2 ) {
                    for ( var n=0;n<chair.length;n+=2 ) {
                        var pstfx = lhair[k]+chair[n];
                        $('.'+class_prfx+prof+'_'+body+'_'+pstfx).hide();
                    }
                }
                
                lenhair = $(this).val();
                //$(notifyDiv).text('prof='+prof+', '+'body='+body+', '+'cbody='+cbody+', '+'lenhair='+lenhair+', '+'colorhair='+colorhair+', '+'cloth='+cloth);
                return false;
            });
            $(selectCHair).change(function () {
                lenhair = $(selectLHair).val();
                if ( !lenhair || lenhair == '0' ) { alert('Выберите длину волос'); return false; }
                var selectedValue = $(this).val();
                
                for ( var k=0;k<lhair.length;k+=2 ) {
                    for ( var n=0;n<chair.length;n+=2 ) {
                        var pstfx = lhair[k]+chair[n];
                        $('.' + class_prfx + prof + '_' + body + '_' + pstfx).hide();
                    }
                }
                colorhair = selectedValue;
                var visible_hair_prfx = lenhair+colorhair;
                $('.'+class_prfx+prof+'_'+body+'_'+visible_hair_prfx).show();
                
                //$(notifyDiv).text('prof='+prof+', '+'body='+body+', '+'cbody='+cbody+', '+'lenhair='+lenhair+', '+'colorhair='+colorhair+', '+'cloth='+cloth);
                return false;
            });
            $(selectClothes).change(function () {
                var selectedValue = $(this).val();
                
                for ( var k=0;k<clothes.length;k+=2 ) {
                    $('.' + class_prfx + prof + '_' + body + '_' + clothes[k] + 'clothes').hide();
                }
                cloth = selectedValue;
                $('.' + class_prfx + prof + '_' + body + '_' + cloth + 'clothes').show();
                
                //$(notifyDiv).text('prof='+prof+', '+'body='+body+', '+'cbody='+cbody+', '+'lenhair='+lenhair+', '+'colorhair='+colorhair+', '+'cloth='+cloth);
                return false;
            });
            $(selectBG).change(function () {
                prof = $(selectProf).val();
                body = $(selectBody).val();
                var selectedValue = $(this).val();
                
                $(divLCol).find('#characterBG_normal')
                    .removeClass()
                    .hide();
                $(divLCol).find('#characterBG_plump')
                    .removeClass()
                    .hide();
                
                var bgDiv = $(divLCol).find('#characterBG_'+body);

                var class_name = class_prfx + prof + '_' + body + '_' + selectedValue;
                $(bgDiv).addClass(class_name);
                $(bgDiv).show();
                
                //$(notifyDiv).text('prof='+prof+', '+'body='+body+', '+'cbody='+cbody+', '+'lenhair='+lenhair+', '+'colorhair='+colorhair+', '+'cloth='+cloth);
                return false;
            });

        /**
         * End: draw form elements and init event handlers on it
         */
        
        /**
         * Begin: switch prof value - selected or not (value, undef, 0)
         */
        //Типаж не выбран, показываем тело по умолчанию в зависимости от пола пользователя
        if ( !prof || prof == '0' ) {
            $(divChProf).text("Не выбрано");
            $(defaultBody).show();
            
            $(selectBody).hide();
            $(selectBodyLabel).hide();
            
            $(selectBColor).hide();
            $(selectBColorLabel).hide();
            
            $(selectLHair).hide();
            $(selectLHairLabel).hide();
            
            $(selectCHair).hide();
            $(selectCHairLabel).hide();
            
            $(selectClothes).hide();
            $(selectClothesLabel).hide();
            
            $(selectBG).hide();
            $(selectBGLabel).hide();
            
            //$(notifyDiv).text('prof='+prof+', '+'body='+body+', '+'cbody='+cbody+', '+'lenhair='+lenhair+', '+'colorhair='+colorhair+', '+'cloth='+cloth);
        }
        //Типаж выбран, формируем изображение в зависимости от сохраненных настроек
        else {
            var bcolor = characterSettings[prof].bcolor;
            var lhair = characterSettings[prof].lhair;
            var chair = characterSettings[prof].chair;
            var clothes = characterSettings[prof].clothes;
            var bodies = characterSettings[prof].bodies;
            var bg = characterSettings[prof].bg;
            
            if ( $('link#'+prof+'_character_style').get().length == 0 ) {
                $('<link id="'+prof+'_character_style" rel="stylesheet" type="text/css" href="'+characterBaseURL+'css/characters2/'+prof+'.css" />').appendTo(divLCol);
            }
            
            $(divChProf).text( characterSettings[prof].title );
            
            $(selectProf).val(prof);
            
            /**
            * если тело не выбрано, показываем нормальное светлое
            */
            body = ( body && body != '' && body != '0' ) ? body : 'normal';
            cbody = ( cbody && cbody != '' && cbody != '0' ) ? cbody : 'white';
            cloth = ( cloth && cloth != '' && cloth != '0' ) ? cloth : 'daily';
            
            //$('<option value="0">Не выбрано</option>').appendTo(selectBColor);
            for ( var j=0;j<bcolor.length;j+=2 ) {
                var opt = $('<option value="'+bcolor[j]+'">'+bcolor[j+1]+'</option>').appendTo(selectBColor);
                if ( bcolor[j] == cbody ) $(opt).attr("selected", "yes");
            }
            $('<option value="0">Не выбрано</option>').appendTo(selectLHair);
            for ( var j=0;j<lhair.length;j+=2 ) {
                var opt = $('<option value="'+lhair[j]+'">'+lhair[j+1]+'</option>').appendTo(selectLHair);
                if ( lhair[j] == lenhair ) $(opt).attr("selected", "yes");
            }
            $('<option value="0">Не выбрано</option>').appendTo(selectCHair);
            for ( var j=0;j<chair.length;j+=2 ) {
                var opt = $('<option value="'+chair[j]+'">'+chair[j+1]+'</option>').appendTo(selectCHair);
                if ( chair[j] == colorhair ) $(opt).attr("selected", "yes");
            }
            //$('<option value="0">Не выбрано</option>').appendTo(selectBody);
            for ( var j=0;j<bodies.length;j+=2 ) {
                var opt = $('<option value="'+bodies[j]+'">'+bodies[j+1]+'</option>').appendTo(selectBody);
                if ( bodies[j] == body ) $(opt).attr("selected", "yes");
            }
            //$('<option value="0">Не выбрано</option>').appendTo(selectClothes);
            for ( var j=0;j<clothes.length;j+=2 ) {
                var opt = $('<option value="'+clothes[j]+'">'+clothes[j+1]+'</option>').appendTo(selectClothes);
                if ( clothes[j] == cloth ) $(opt).attr("selected", "yes");
            }
            $('<option value="0">Не выбрано</option>').appendTo(selectBG);
            for ( var j=0;j<bg.length;j+=2 ) {
                var opt = $('<option value="'+bg[j]+'">'+bg[j+1]+'</option>').appendTo(selectBG);
                if ( bg[j] == background ) $(opt).attr("selected", "yes");
            }

            /**
            * Рисуем все типы тел для данного вида деятельности
            */
            var hairCombination = lenhair+colorhair;
            for ( var i=0;i<bodies.length;i+=2 ) {
                var class_name = class_prfx + prof + '_' + bodies[i];
                for ( var j=0;j<bcolor.length;j+=2 ) {
                    var chDiv = $('<div class="'+class_name+'_'+bcolor[j]+' character" name="'+class_prfx+prof+'"></div>').appendTo(divLCol).hide();
                    
                    for ( var k=0;k<lhair.length;k+=2 ) {
                        for ( var n=0;n<chair.length;n+=2 ) {
                            var pstfx = lhair[k]+chair[n];
                            if ( hairCombination != pstfx ) {
                                $('<div class="'+class_name+'_'+pstfx+'"></div>').appendTo(chDiv).hide();
                            } else {
                                $('<div class="'+class_name+'_'+pstfx+'"></div>').appendTo(chDiv).show();
                            }
                        }
                    }
                    for ( var l=0;l<clothes.length;l+=2 ) {
                        if ( cloth != clothes[l] ) {
                            $('<div class="'+class_name+'_'+clothes[l]+'clothes"></div>').appendTo(chDiv).hide();
                        } else {
                            $('<div class="'+class_name+'_'+clothes[l]+'clothes"></div>').appendTo(chDiv).show();
                        }
                    }
                }
               
                var bgDiv = $('<div id="characterBG_'+bodies[i]+'"></div>').prependTo(divLCol).hide();
                for ( var j=0;j<bg.length;j+=2 ) {
                    if ( background == bg[j] && body == bodies[i] ) {
                        $(bgDiv).addClass(class_name+'_'+bg[j]).show();
                        break;
                    }
                }
               
            }
            $('div.' + class_prfx + prof + '_' + body + '_' + cbody).show();
            
            //$(notifyDiv).text('prof='+prof+', '+'body='+body+', '+'cbody='+cbody+', '+'lenhair='+lenhair+', '+'colorhair='+colorhair+', '+'cloth='+cloth);
        }
    }
    function debug($obj) {
        if (window.console && window.console.log)
            window.console.log('character selection count: ' + $obj.size());
    };
})(jQuery);
