var q = {
    1 : 'Мелкие морщины в углах глаз (гусиные лапки)',
    2 : 'Складки от носа до рта (носогубные складки)',
    3 : 'Морщины в углах рта',
    4 : 'Второй подбородок',
    5 : 'Брыли',
    7 : 'Рубцы после травм и операций на лице',
    8 : 'Нежелательный рост волос',
    //9 : 'Морщины на лбу глубокие',
    10: 'Болели ли Вы крапивницей?',  
    11: 'Обращались ли к врачу по поводу аллергических реакций на коже?',
    13: 'Вам известно, что Вы не переносите средства для наружного применения?',  
    14: 'Вам известно, что Вы не переносите электро-физиотерапевтические процедуры?',  
    15: 'Наблюдаетесь ли Вы у кардиолога?',
    16: 'Наблюдаетесь ли Вы у врача по поводу хронических заболеваний?',
    17: 'Вам установлены металлопротезы костей, суставов (остеосинтез)?',  
    18: 'Вам установлен искусственный (электронный) водитель ритма?',  
    19: 'Вы часто загораете, подвергаетесь ультрафиолетовому облучению на работе или дома?',  
    
    20: 'Для Вас характерно: всегда сгораете, загар никогда не появляется?',  
    21: 'Для Вас характерно: всегда сгораете, загар появляется лишь иногда?',  
    22: 'Для Вас характерно: иногда сгораете, всегда появляется загар?',
    23: 'Для Вас характерно: никогда не сгораете, всегда загар?', 
    24: 'Для Вас характерно: кожа всегда умеренно загорелая?',  
    25: 'Для Вас характерно: на коже всегда темный загар?', 
    
    56: 'Упоминалась ли по отношению к Вам «солнечная крапивница»?',
    57: 'Вы принимали препарат «Аккутан» или «Роаккутан» последние 6 месяцев?',
    58: 'Вы загорали, посещали солярий хотя бы один раз за последние 3-4 недели?',
    59: 'Вы пользовались средством для автозагара хотя бы один раз за последнюю неделю?',
    60: 'У Вас плохая переносимость воды?',
    30: 'Часто ли Вы делаете пилинги и процедуру микродермабразии?',
    
    28: 'Были ли у Вас недавно травмы на лице?',    
    31: 'Морщины на лбу глубокие',
    32: 'Морщины на лбу поверхностные',
    33: 'Морщины на лбу сохраняются в покое',
    34: 'Морщины на лбу появляются при сокращении мышц',
    36: 'Дряблая кожа щек (мелкие морщины)',
    37: 'Мелкие морщины возле наружных углов глаз',
    38: 'Носогубные складки глубокие',
    39: 'Складки в углах рта глубокие (с опущением углов рта)',
    
    41: 'Изменение овала лица по типу второго подбородка',
    42: 'Изменение овала лица по типу брылей',
    43: 'Изменение овала лица за счет околоушных складок',
    44: 'Изменение овала лица за счет удлинения мочек ушей',
    45: 'Светло-коричневые пятна или веснушки на лице',
    51: 'Брови густые, широкие, срастающиеся',
    52: 'Нежелательные волосы над верхней губой, под нижней губой и на подбородке',
    99: 'Есть ли у Вас рубцы на лице?',
    46: 'Рубцы красно-розового цвета',
    63: 'Рубцы синюшные',
    64: 'Рубцы белого цвета',
    65: 'Рубцы розово-коричневого цвета',
    47: 'Рубцы не выступают и не западают',
    48: 'Рубцы западающие',
    49: 'Рубцы выступающие',
    50: 'Рубцы не выходящие за границы повреждения кожи',
    
    53: 'Светлокоричневые пятна на висках',
    54: 'Светлокоричневые пятна на веках',
    55: 'Светлокоричневые пятна на щеках',
    40: 'Радиальные складки на губах поверхностные',
    62: 'Радиальные складки на губах глубокие'
    
}

var d = {
    0 : { name: 'Мелкоморщинистый тип старения',
          sname: 'мелкоморщинистого типа старения',
          q: {
              32: 50,
              40: 80,
              36: 100
          } },
    1 : { name: 'Менопаузальное старение',
          sname: 'менопаузального старения',
          q: {
              40: 25,
              36: 35,
              45: 65
          } },
    2 : { name: 'Деформационный тип старения',
          sname: 'деформационного типа старения',
          q: {
              31: 50,
              38: 50,
              39: 65,
              62: 35,
              41: 50,
              42: 50,
              43: 65,
              44: 65,
              33: 35
          } },
    3 : { name: 'Мимические морщины',
          sname: 'мимических морщин',
          q: {
              31: 100,
              38: 100,
              39: 50,
              62: 50,
              40: 50,
              34: 100
          } },
    4 : { name: 'Фотостарение',
          sname: 'фотостарения',
          q: {
              32: 65,
              37: 65,
              45: 65,
              19: 100
          } },
    5 : { name: 'Смешанный тип старения',
          q: {} },
    6 : { name: 'Чувствительная кожа',
          q: {
              10: 100,
              60: 35,
              20: 35,
              21: 35,
              30: 35,
              13: 65
          } },
    7 : { name: 'Рубцы на этапе заживления',
          q: {
              46: 50,
              50: 50
          } },
    8 : { name: 'Свежие рубцы: западающие',
          q: {
              63: 50,
              48: 50,
              50: 25
          } },
    9 : { name: 'Свежие рубцы: ровные',
          q: {
              46: 25,
              47: 50,
              50: 25
          } },
    10: { name: 'Свежие рубцы: выступающие',
          q: {
              46: 25,
              65: 25,
              49: 25,
              50: 25
          } },
    11: { name: 'Свежие рубцы: западающие',
          q: {
              64: 25,
              48: 50,
              50: 25
          } },
    12: { name: 'Старые рубцы: ровные',
          q: {
              64: 25,
              47: 50,
              50: 25
          } },
    13: { name: 'Старые рубцы: выступающие',
          q: {
              64: 25,
              49: 50,
              50: 25
          } },
    14: { name: 'Рост волос по мужскому типу',
          q: {
              51: 100,
              52: 100
          } }
}

var answers;
var diags;
var age;
var sex;
var cur;
var np;

var keys = {};
var k = 0;

for ( var key in q )
{
    keys[k] = key;
    k++;
}

$( document ).ready (
    function () {
        Show ( 'splash' );
        DoHead ( 'Программа "КСК-зеркальце"' );
    }
);

function InitVars ()
{
    answers = {};
    diags = [];
    age = 0;
    sex = 0;
    cur = null;
    np = null;
}

function GetFirst ()
{
    for ( var i in keys ) 
    {
        first = keys[i];
        break;
    }
    
    cur = first;
}

function GetNPKeys ()
{
    var next = null;
    var prev = null;
    
    for ( var i in keys )
    {
        if ( keys[i] == cur )
        {
            i = parseInt ( i );
            
            if ( i < k - 1 )
            {
                next = keys[i + 1];
            }
            
            if ( i > 0 )
            {
                prev = keys[i - 1];
            }
            
            if ( i <= 7 )
            {
                DoHead ( 'Отмечаете ли Вы у себя?' );
            } else if ( i > 7 && i <= 28 ) {
                DoHead ( 'Ответьте пожалуйста<br />на вопросы:' );
            } else if ( i > 26 ) {
                DoHead ( 'Внимательно посмотрите<br />на себя в зеркало<br />и ответьте на вопросы:' );
            }
        }
    }
    
    np = { next: next, prev: prev };
}

function GetQuestions ()
{
    if ( $( 'input[name="age"]:checked' ).length == 1 )
    {
        age = $( 'input[name="age"]:checked' ).val();
    }
    
    if ( $( 'input[name="sex"]:checked' ).length == 1 )
    {
        sex = $( 'input[name="sex"]:checked' ).val();
    }
    
    Show ( 'que' );
    
    DoHead ( 'Вы отмечаете у себя' );
    
    GetFirst ();
    GetQue ( cur );
}

function GetNext ()
{
    if ( np.next )
    {
        GetQue ( np.next );
    } else {
        CalcDiags ();
    }
}

function GetBack ()
{
    if ( np.prev )
    {
        GetQue ( np.prev );
    } else {
        Show ( 'age_sex' );
    }
}

function GetQue ( key )
{
    if ( cur == 99 && typeof ( answers[99] ) == 'undefined' )
    {
        cur = 53;
    } else {
        cur = key;
    }
    
    GetNPKeys ();
    
    $( '#que' ).text ( q[cur] );
}

function YesAction ()
{
    if ( cur >= 20 && cur <= 25 )
    {
        if ( typeof ( answers[20] ) != 'undefined' || typeof ( answers[21] ) != 'undefined' || typeof ( answers[22] ) != 'undefined' || typeof ( answers[23] ) != 'undefined' || typeof ( answers[24] ) != 'undefined' || typeof ( answers[25] ) != 'undefined' )
        {
            delete ( answers[20] );
            delete ( answers[21] );
            delete ( answers[22] );
            delete ( answers[23] );
            delete ( answers[24] );
            delete ( answers[25] );
            
            alert ( 'Вы даете противоречивые ответы по поводу загара. Правильным будет считаться последний ответ.' );
        }
    }
    
    answers[cur] = 1;
    GetNext ();
}

function NoAction ()
{
    GetNext ();
}

function CalcDiags ()
{
    $( '#diags' ).empty();
    Show ( 'diags' );
    
    var tdiags = {};
    
    for ( var i = 0; i < 5; i++ )
    {
        tdiags[i] = 0;
        
        for ( var j in d[i].q )
        {
            if ( typeof ( answers[j] ) != 'undefined' )
            {
                tdiags[i] += d[i].q[j];
            }
        }
        
        if ( i == 1 && ( age == 5 || age == 6 ) && sex == 'f' )
        {
            tdiags[i] += 85;
        }
    }
    
    var max   = null;
    var max_n = null;
    var cnt_m = 0;
    
    for ( var j in tdiags )
    {
        if ( max < tdiags[j] )
        {
            max   = tdiags[j];
            max_n = j;
        }
        
        if ( tdiags[j] >= 100 )
        {
            cnt_m++;
        }
    }
    
    if ( max_n != null )
    {
        if ( max < 100 )
        {
            var str = 'Смешанный тип старения с преобладанием ' + d[max_n].sname;
            diags.push ( 5 );
        } else {
            if ( cnt_m == 1 )
            {
                var str = d[max_n].sname;
            } else {
                var str = 'Смешанный тип старения с преобладанием ' + d[max_n].sname;
            }
            
            diags.push ( max_n );
        }
        
        $( '#diags' ).append ( '<div class="item">' + str + '</div>' );
        d[5].name = str;
    }
    
    //===========
    for ( var i = 5; i <= 12; i++ )
    {
        var summ = 0;
        
        for ( var j in d[i].q )
        {
            if ( typeof ( answers[j] ) != 'undefined' )
            {
                summ += d[i].q[j];
            }
        }
        
        if ( summ >= 100 )
        {
            $( '#diags' ).append ( '<div class="item">' + d[i].name + '</div>' );
            diags.push ( i );
        }
    }
    
    if ( diags.length == 0 )
    {
        $( '#diags_block b' ).hide ();
        DoHead ( '' );
        $( '#diags' ).append ( '<div class="diag_error">Недостаточно ответов для постановки полного диагноза. <a href="javascript:void(0)" onclick="GetQuestions()">Начать тест заново</a></div>' );
    } else {
        $( '#diags_block b' ).show ();
        DoHead ( 'Состояние Вашего лица' );
        ShowPhototype ();
        
        //Соберем остальные данные
        PreShowApp ();
        PreShowSalonUh ();
        PreShowHome ();
        PreShowRecomm ();
    }
}

function ShowPhototype ()
{
    var type = null;
    
    if ( typeof ( answers[20] ) != 'undefined' ) type = 1;
    if ( typeof ( answers[21] ) != 'undefined' ) type = 2;
    if ( typeof ( answers[22] ) != 'undefined' ) type = 3;
    if ( typeof ( answers[23] ) != 'undefined' ) type = 4;
    if ( typeof ( answers[24] ) != 'undefined' ) type = 5;
    if ( typeof ( answers[25] ) != 'undefined' ) type = 6;
    
    if ( type )
    {
        $( '#diags' ).append ( '<div>Фототип вашей кожи: ' + type + '</div>' );
    }
}

function ShowHomoch ()
{
    $( '#homoch' )
        .empty ()
        .append ( '<div>Посоветуйтесь с мнением Вашего косметолога.</div>' );
    
    if ( typeof ( answers[56] ) != 'undefined' || typeof ( answers[57] ) != 'undefined' || typeof ( answers[58] ) != 'undefined' || typeof ( answers[59] ) != 'undefined' )
    {
        $( '#homoch' ).append ( '<div>Вам противопоказаны светотепловые и лазерные процедуры.</div>' );
    }
    
    if ( typeof ( answers[14] ) != 'undefined' || typeof ( answers[15] ) != 'undefined' || typeof ( answers[16] ) != 'undefined' || typeof ( answers[17] ) != 'undefined' || typeof ( answers[18] ) != 'undefined' )
    {
        $( '#homoch' ).append ( '<div>По поводу применения к Вам аппаратных методик проконсультируйтесь со своим лечащим врачом.</div>' );
    }
    
    $( '#homoch_block' ).show ();
}

function Show ( type, h )
{
    $( '#que_block' ).hide ();
    $( '#diags_block' ).hide ();
    $( '#app_block' ).hide ();
    $( '#salon_uh_block' ).hide ();
    $( '#home_block' ).hide ();
    $( '#recomm_block' ).hide ();
    $( '#homoch_block' ).hide ();
    $( '#left_block' ).hide ();
    $( '#age_sex_block' ).hide ();
    $( '#splash_block' ).hide ();
    $( '#final_block' ).hide ();
    
    $( '#' + type + '_block' ).show ();
    
    $( '#que_buttons' ).hide ();
    $( '#diags_buttons' ).hide ();
    $( '#app_buttons' ).hide ();
    $( '#salon_uh_buttons' ).hide ();
    $( '#home_buttons' ).hide ();
    $( '#recomm_buttons' ).hide ();
    $( '#age_sex_buttons' ).hide ();
    $( '#splash_buttons' ).hide ();
    $( '#final_buttons' ).hide ();
    
    $( '#' + type + '_buttons' ).show ();
    
    if ( h ) ShowHomoch ();
}

var app_data;

function ShowApp ()
{
    Show ( 'app', true );
    $( '#app_homoch' ).remove ();
    $( '#homoch' ).prepend ( '<div id="app_homoch">Для получения комментариев по действию аппаратных методик нажмите на текст методики.</div>' );
    
    DoHead ( 'Методы возможного<br />лечения для выбора<br />Вашим косметологом:', true );
}

function PreShowApp ()
{
    $( '#app' ).empty ();
    
    var steps = { pre: 'Подготовительный этап', main: 'Основной этап', add: 'Дополнительно по показаниям' };
    
    $.getJSON ( 'actions.php?action=get_app', { 'diags[]': diags }, function ( data ) {
        app_data = data;
        
        for ( var i in diags )
        {
            $( '#app' ).append ( '<div style="color: #000; font-size: 12px; margin-top: 3px;"><b>' + d[diags[i]].name + '</b></div>' );
            
            for ( var l in steps )
            {
                if ( typeof ( data[diags[i]][l] ) != 'undefined' )
                {                    
                    $( '#app' ).append ( '<div style="padding-left: 20px"><b>' + steps[l] + '</b></div>' );
                    
                    for ( var j in data[diags[i]][l] )
                    {
                        $( '#app' ).append ( '<div style="padding-left: 40px;"><a class="methodic" href="javascript:void(0)" onclick="ShowMethodic( ' + diags[i] + ', \'' + l + '\', ' + j + ' )">- ' + data[diags[i]][l][j].name + '</a></div>' );
                    }
                }
            }
        }
    } );
}

function ShowMethodic ( diag, eta, n )
{
    var html = '<div class="lhead">Физиологическое действие методики</div>' + app_data[diag][eta][n]['desc'] + '<div class="lhead" style="margin-top: 10px; border-top: #a7a7a7 solid 1px; padding-top: 3px;">Ожидаемый эффект</div>' + app_data[diag][eta][n]['eff'];
    
    if ( app_data[diag][eta][n]['link2'] != '' )
    {
        html += '<div style="margin-top: 10px;"><a class="link" target="_blank" href="' + app_data[diag][eta][n]['link2'] + '">Узнать подробнее о методике...</a></div>';
    }
    
    if ( app_data[diag][eta][n]['link1'] != '' )
    {
        html += '<div><a class="link" target="_blank" href="' + app_data[diag][eta][n]['link1'] + '">Узнать подробнее об аппарате...</a></div>';
    }
    
    $( '#left' )
        .empty ()
        .html ( html );
    
    $( '#left_block' ).show ();
}

function ShowWhere ()
{
    $.getJSON ( 'actions.php?action=get_salons', function ( data ) {
        html = data.select + '<a href="javascript:void(0)" class="sprint" onclick="GetSPrint()" /></a>';
        
        $( '#left' )
            .empty ()
            .html ( html );
        
        $( '#left_block' ).show ();
        
        ChangeCity ( $( '#city_select' ).get ( 0 ) );
    } );
}

function ChangeCity ( obj )
{
    var val = $( obj ).val ();
    
    $( '#city_salons' ).remove ();
    
    $.getJSON ( 'actions.php?action=get_city_salons', { id: val }, function ( data ) {
        $( '#left' ).append ( data.salons );
    } );
}

function ShowWhereBuy ()
{
    $.getJSON ( 'actions.php?action=get_wb', function ( data ) {
        html = data.select + '<a href="javascript:void(0)" class="sprint" onclick="GetSPrint()" /></a>';
        
        $( '#left' )
            .empty ()
            .html ( html );
        
        $( '#left_block' ).show ();
        
        ChangeCity ( $( '#city_select' ).get ( 0 ) );
    } );
}

function ChangeCityWB ( obj )
{
    var val = $( obj ).val ();
    
    $( '#city_salons' ).remove ();
    
    $.getJSON ( 'actions.php?action=get_city_wb', { id: val }, function ( data ) {
        $( '#left' ).append ( data.salons );
    } );
}

function ShowSalonUh ()
{
    Show ( 'salon_uh', true );
    DoHead ( 'Салонные методы лечения:' );
}

function PreShowSalonUh ()
{
    $( '#salon_uh' ).empty ();
     
    $.getJSON ( 'actions.php?action=get_salon', function ( data ) {
        for ( var i in diags )
        {
            $( '#salon_uh' ).append ( '<div><b>' + d[diags[i]].name + '</b></div>' );
            $( '#salon_uh' ).append ( '<div><b>' + data[diags[i]].when + '</b></div>' );
            
            for ( var j in data[diags[i]].rows )
            {
                $( '#salon_uh' ).append ( '<div style="padding-left: 20px">- ' + data[diags[i]].rows[j] + '</div>' );
            }
        }
    } );
}

function ShowHome ()
{
    Show ( 'home', true );
    DoHead ( 'Домашние методы лечения:' );
}

function PreShowHome ()
{
    $( '#home' ).empty ();
     
    $.getJSON ( 'actions.php?action=get_home', function ( data ) {
        for ( var i in diags )
        {
            $( '#home' ).append ( '<div><b>' + d[diags[i]].name + '</b></div>' );
            
            for ( var j in data[diags[i]] )
            {
                $( '#home' ).append ( '<div style="padding-left: 20px">- ' + data[diags[i]][j] + '</div>' );
            }
        }
    } );
}

function ShowFinal ()
{
    Show ( 'final' );
    DoHead ( 'Поздравляем!' );
}

function ShowRecomm ()
{
    Show ( 'recomm', true );
    DoHead ( 'Рекомендации по диете<br />и образу жизни:', '125px' );
}

function PreShowRecomm ()
{
    $( '#recomm' ).empty ();
     
    $.getJSON ( 'actions.php?action=get_recomm', function ( data ) {
        for ( var i in diags )
        {
            $( '#recomm' ).append ( '<div><b>' + d[diags[i]].name + '</b></div>' );
            
            for ( var j in data[diags[i]] )
            {
                $( '#recomm' ).append ( '<div style="padding-left: 20px">- ' + data[diags[i]][j] + '</div>' );
            }
        }
    } );
}

function GetAgeSex ()
{
    InitVars ();
    
    Show ( 'age_sex' );
    DoHead ( 'Введите Ваши данные' );
}

function DoHead ( text, top )
{
    if ( typeof ( top ) == 'undefined' )
    {
        $( '#head' ).css ( 'paddingTop', '150px' );
    } else if ( typeof ( top ) == 'string' ) {
        $( '#head' ).css ( 'paddingTop', top );
    } else  {
        $( '#head' ).css ( 'paddingTop', '100px' );
    }
    
    $( '#head' ).html ( text );
}

function GetPrint ()
{
    window.open ( 'print.html', 'Печать', 'top=160,left=200,width=600,height=500,scrollbars=yes' );
}

function GetSPrint ()
{
    window.open ( 'sprint.html', 'Печать', 'top=160,left=200,width=600,height=500,scrollbars=yes' );
}