var sel;

function CWindow(id, posx, posy, width, height, title, content, resizable)
{
    if (resizable == null) resizable = true;
    
    var w = window.innerWidth ? window.innerWidth : document.body.clientWidth;
    posx = (posx > w - width - 50) ? w - width - 50 : posx;
    
    if (title.length > (width/7)) title = title.substr(0, (width/7))+'...';
    
    var menu = $('<table></table>')
                    .attr({'id': id+'m'})
                    .css({
                            'height': '14px',
                            'width': '100%',
                            'background': '#E9F1F8',
                            'text-align': 'left',
                            'cursor': 'move',
                            'font': '12px Tahoma'
                         })
                    .append(
                        $('<tr></tr>')
                        .append(
                            $('<td></td>')
                            .append(
                                       $('<div>').css({
                                                        'height': '14px',
                                                        'clip': 'auto',
                                                        'overflow' : 'hidden'
                                                      }).append(title)
                                   )
                               )
                        .append(
                            $('<td></td>')
                            .css({'width':'15px', 'text-align': 'center'})       
                            .append(
                                       $('<span></span>')
                                        .html('X')
                                        .bind('click', function(){$('#'+id).remove();})
                                        .css({                                                
                                                'cursor': 'pointer',
                                                'font': '12px Tahoma'
                                             })
                                   )         
                               )
                           );
    
    var tb;
    $('body').append(tb =
                        $('<table></table>')
                            .attr({'id': id})
                            .css({
                                    'text-align': 'center',
                                    'width': width ? width+'px' : '200px',
                                    'height': height ? height+'px' : '',
                                    'position': 'absolute',
                                    'left': posx,
                                    'top': posy,
                                    'background': '#fafaff',
                                    'border': '1px solid #bbbbbb'                                    
                                 })
                                 
                            .append(                            
                                $('<tr></tr>')
                                .append(
                                    $('<td></td>')
                                    .css({'height':'14px'})
                                    .append(menu)
                                       )                                
                                   )
                                   
                            .append(                            
                                $('<tr></tr>')   
                                .append(                                    
                                    $('<td></td>')
                                    .css({'clip': 'auto', 'overflow' : 'hidden', 'height': '100%'})
                                    .append(content)
                                       )
                                   )         
                            .fadeIn(500,0.9)
                     );                               
    if (resizable)
    {
        tb.append(                            
                    $('<tr></tr>')   
                    .append(                                    
                        $('<td></td>')
                        .css({'text-align':'right', 'height': '8px'})
                        .append('<img id="resizeSE" src="/img/resize.png" class="png" style="cursor:se-resize;">')       
                           )
                 );
                 
        $('#'+id).Resizable({
                                minWidth: 200,
				                minHeight: 100,
				                maxWidth: 800,
				                maxHeight: 600,
				                dragHandle: '#'+id+'m',				                
				                handlers: {se: '#resizeSE'}				                
				            });
	}
	else
	    $('#'+id).Draggable({handle: '#'+id+'m'});
}

//--------------- Выбор картинки ------------------

function ImagePanel(image_id, x, y)
{        
    $('#ipnl').remove();       
    
    var title = 'Загрузка изображения';
    
    var table = $('<table></table>');
    table.append(
                    $('<tr></tr>')
                        .append($('<td></td>').css({'text-align': 'center'}).append( 'Файл:&nbsp;&nbsp;' ))
                        .append($('<td></td>').css({'text-align': 'center'})
                            .append('<input id="load_image" name="iimage" type="file" size="30" />'+
                                    '<input name="edit_group" type="hidden" value="6" />'+
                                    '<input name="pagemode" type="hidden" value="1" />'+
                                    '<input name="field" type="hidden" value="'+image_id+'" />')
                      )
                );
                                        
    CWindow('ipnl', x, y, 300, 0, title, $('<div>').append('<br/>')
                                            .append($('<form id="eif" name="eif" method="post" enctype="multipart/form-data"></form>')
                                            .append(table)
                                            .append('<hr/>'+
                                                    '<input type="submit" value="Загрузить">'+
                                                    '<br/><br/>'))
                             );                    
}


//-------------- Выбор галереи ----------------

function SuccLG(data, v)
{    
    if (data)
    {
        eval('var fls = '+data+';');
        if (!fls) return;
        GalleriesPanel(v['item_link_id'], v['specification'], v['x'], v['y'], fls)
    }
    else
        alert('Ошибка загрузки списка групп изображений. Обновите страницу и попробуйте снова.');   
}
    
function GalleriesPanel(item_link_id, specification, x, y, fls)
{
    if (!fls)
    {
        $.iMax.EPreq('loadgalleries', {}, SuccLG, {
                                                    'item_link_id' : item_link_id,
                                                    'specification' : specification,
                                                    'x' : x,
                                                    'y' : y
                                                    });        
        return;
    }
    
    $('#gpnl').remove();        
    
    var title = specification['data']['name']+' - '+specification['data']['caption'];    
    
    var lpgid;
    var table = $('<table></table>');
    table.append(
                    $('<tr></tr>')
                        .append($('<td></td>').css({'text-align': 'center'}).append( 'Выбор галереи:&nbsp;&nbsp;' ))
                        .append($('<td></td>').css({'text-align': 'center'}).append( lpgid = $('<select id="lpgid"/>').css({'width': '200px'}) ))                                                    
                );
    var i;            
    for (i in fls) if (i != 'indexOf')
        lpgid.append('<option '+(fls[i]['group_id'] == specification['params']['group_id']['value'] ? 'selected' : '' )+'>'+fls[i]['group_id']+': '+fls[i]['name']+'</option>');
    
    CWindow('gpnl',x,y,300,0,title, $('<div>').append('<br/>')
                                            .append($('<form></form>').append(table))
                                            .append('<hr/><button id="sbmtgpnl">Сохранить</button><br/><br/>')
                             );                                             
                           
    $('#sbmtgpnl').bind('click', function(){
                        var s = $('#lpgid option[@selected]').get(0).innerHTML;
                        editItem(item_link_id, {'group_id': s.substr(0,s.indexOf(':'))});
                        $('#gpnl').remove();} );                         
}

//--------------- Выбор flash ----------------------

function SuccLF(data, v)
{
    
    if (data)
    {
        eval('var fls = '+data+';');
        if (!fls) return;
        FlashPanel(v['item_link_id'], v['specification'], v['x'], v['y'], fls);
    }
    else
        alert('Ошибка загрузки списка flash файлов. Обновите страницу и попробуйте снова.');   
}
    
function FlashPanel(item_link_id, specification, x, y, fls)
{
    if (!fls)
    {
        $.iMax.EPreq('loadflash', {}, SuccLF, {
                                                    'item_link_id' : item_link_id,
                                                    'specification' : specification,
                                                    'x' : x,
                                                    'y' : y
                                                    });
        return;
    }
    
    $('#fpnl').remove();       
    
    var title = specification['data']['name']+' - '+specification['data']['caption'];    
    
    var lpfid;
    var table = $('<table></table>');
    table.append(
                    $('<tr></tr>')
                        .append($('<td></td>').css({'text-align': 'center'}).append( 'Выбор flash:&nbsp;&nbsp;' ))
                        .append($('<td></td>').css({'text-align': 'center'}).append( lpfid = $('<select id="lpfid"/>').css({'width': '200px'}) ))                                                    
                )
         .append(
                    $('<tr></tr>')
                        .append($('<td></td>').css({'text-align': 'center'}).append( 'Номер кнопки:&nbsp;&nbsp;' ))
                        .append($('<td></td>').css({'text-align': 'center'}).append( lpfbid = $('<input type="text" id="lpfbid"/>').css({'width': '200px'}) ))
                        .append($('<td></td>').css({'text-align': 'center'}).append( lpfbcid = $('<input type="checkbox" id="lpfbcid"/>').css({'width': '20px'}) ))
                );
    var i;            
    for (i in fls) if (i != 'indexOf')
        lpfid.append('<option '+(fls[i] == specification['params']['flash_name']['value'] ? 'selected' : '' )+'>'+fls[i]+'</option>');
    
    CWindow('fpnl',x,y,300,0,title, $('<div>').append('<br/>')
                                            .append($('<form></form>').append(table))
                                            .append('<hr/><button id="sbmtfpnl">Сохранить</button><br/><br/>')
                             );                                             
                           
    $('#sbmtfpnl').bind('click', function(){
                        var s = $('#lpfid option[@selected]').get(0).innerHTML;
                        
                        var arr = {'flash_name': s};                        
                        
                        if (lpfbcid.attr('value') == 'on')                        
                            arr['button'] = lpfbid.attr('value');                        
                        
                        editItem(item_link_id, arr);
                        $('#fpnl').remove();} );                     
}


//--------- Выбор менюхи ----------------------

function SuccLM(data, v)
{    
    if (data)
    {
        eval('var fls = '+data+';');        
        if (!fls) return;
        MenuPanel(v['item_link_id'], v['specification'], v['x'], v['y'], fls);
    }
    else
        alert('Ошибка загрузки меню. Обновите страницу и попробуйте снова.');   
}
    
function MenuPanel(item_link_id, specification, x, y, fls)
{
    if (!fls)
    {
        $.iMax.Mreq('loadmenu', {'id': 0}, SuccLM, {
                                                    'item_link_id' : item_link_id,
                                                    'specification' : specification,
                                                    'x' : x,
                                                    'y' : y
                                                    });
        
        return;
    }
    
    $('#mpnl').remove();                  
    
    var title = specification['data']['name']+' - '+specification['data']['caption'];    
    
    var lpmid;
    var table = $('<table></table>');
    table.append(
                    $('<tr></tr>')
                        .append($('<td></td>').css({'text-align': 'center'}).append( 'Выбор меню:&nbsp;&nbsp;' ))
                        .append($('<td></td>').css({'text-align': 'center'}).append( lpmid = $('<select id="lpmid"/>').css({'width': '150px'}) ))                                                    
                );
                
    for (i in fls) if (i != 'indexOf')
        lpmid.append('<option '+(fls[i]['self']['id'] == specification['params']['menu_id']['value'] ? 'selected' : '' )+'>'+fls[i]['self']['id']+': '+fls[i]['self']['name']+'</option>');         
                     
    CWindow('mpnl',x,y,260,0,title, $('<div>').append('<br/>')
                                            .append($('<form></form>').append(table))
                                            .append('<hr/><button id="sbmtmpnl">Сохранить</button><br/><br/>')
                             );                                
                           
    $('#sbmtmpnl').bind('click', function(){
        var s = $('#lpmid option[@selected]').get(0).innerHTML;        
        editItem(item_link_id, {'menu_id': s.substr(0,s.indexOf(':'))});
        $('#mpnl').remove();} );                       
}

//--------- Выбор страницы ----------------------

function SuccLP(data, v)
{
    
    if (data)
    {
        eval('var fls = '+data+';');        
        if (!fls) return;
        PagePanel(v['item_link_id'], v['specification'], v['x'], v['y'], fls);
    }
    else
        alert('Ошибка загрузки списка страниц. Обновите страницу и попробуйте снова.');   
}
    
function PagePanel(item_link_id, specification, x, y, fls)
{
    if (!fls)
    {        
        $.iMax.EPreq('loadpages', {}, SuccLP, {
                                                    'item_link_id' : item_link_id,
                                                    'specification' : specification,
                                                    'x' : x,
                                                    'y' : y
                                                    });
        
        return;
    }
    
    $('#pagep').remove();                                
    
    var title = specification['data']['name']+' - '+specification['data']['caption'];    
    
    var lppid;
    var table = $('<table></table>');
    table.append(
                    $('<tr></tr>')
                        .append($('<td></td>').css({'text-align': 'center'}).append( 'Страница контента:&nbsp;&nbsp;' ))
                        .append($('<td></td>').css({'text-align': 'center'}).append( lppid = $('<select id="lppid"/>').css({'width': '200px'}) ))                                                    
                );
                
    for (i in fls) if (i != 'indexOf')
        lppid.append('<option '+(i == specification['params']['page_id']['value'] ? 'selected' : '' )+'>'+i+': '+fls[i]['title']+'</option>');                               
                     
    CWindow('pagep',x,y,350,0,title, $('<div>').append('<br/>')
                                            .append($('<form></form>').append(table))
                                            .append('<hr/><button id="sbmtpagep">Сохранить</button><br/><br/>')
                             );
                                                    
    $('#sbmtpagep').bind('click', function(){
                    var s = $('#lppid option[@selected]').get(0).innerHTML;
                    editItem(item_link_id, {'page_id': s.substr(0,s.indexOf(':'))});
                    $('#pagep').remove();} );                        
}

//--------- Все это мясо для менюхи -------------

function find(id, mass)
{
    var i;
    
    for (i in mass)
        if (mass[i]['self']['id'] == id)
            return mass[i]['self'];
    
    var k;
    for (i in mass)        
        if (k = find(id, mass[i]['nodes'])) return k;
            
    return null;        
}

function editlp()
{
    var n = lpnode;    
     
    n['name'] = $('#lpname').attr('value');
    
    var sel = $('#lpbid').attr('value');
    n['block_id'] = sel.substr(0,sel.indexOf(':'));
    
    return n;
}

function linkPanel(id, blocks, x, y)
{
    var i;
        
    lpnode = find(id, imenu);
    
    $('#lnkp').remove();        
    
    title = 'Идентификатор пункта меню: '+id;
    
    var table = $('<table></table>');        
    
    var lpbid;
    
    table.append(
                    $('<tr></tr>')
                        .append($('<td></td>').css({'text-align': 'center'}).append('Текст ссылки'))
                        .append($('<td></td>').css({'text-align': 'center'}).append('Номер блока'))                                                    
                )
         .append(
                    $('<tr></tr>')
                        .append($('<td></td>').css({'text-align': 'center'}).append( $('<input type="text" id="lpname" value="'+lpnode['name']+'"/>') ).append('&nbsp;&nbsp;'))
                        .append($('<td></td>').css({'text-align': 'center'}).append( lpbid = $('<select id="lpbid"/>').css({'width': '200px'}) ))                                                    
                );
                
    for (i in blocks) if (i != 'indexOf')
        lpbid.append('<option '+(i == lpnode['block_id'] ? 'selected' : '' )+'>'+i+': '+blocks[i]['caption']+'</option>');
              
    CWindow('lnkp',x,y,360,0,title, $('<div>').append('<br/>')
                                            .append($('<form></form>').append(table))
                                            .append('<hr/><button id="sbmtLink">Сохранить</button><br/><br/>')
                             );                   
    
    $('#sbmtLink').bind('click', function(){editLink(editlp()); $('#lnkp').remove();} );                            
}

//---------------- specificationPanel -----------------------

function spcfToArray()
{
    var mass = {};
    
    $('form#spcf input[@type = text]').each(
                                                function()
                                                {                                                    
                                                    if ($('form#spcf input[@name = c'+this.name+']').attr('checked'))
                                                        mass[this.name] = this.value;
                                                }    
                                            );
    return mass;                                            
}

function specificationPanel(item_link_id, specification, x, y)
{
    switch (specification['data']['id'])
    {
        case '197': PagePanel(item_link_id, specification, x, y); return;
        case '202': FlashPanel(item_link_id, specification, x, y); return;
        case '207': MenuPanel(item_link_id, specification, x, y); return;        
        case '213': GalleriesPanel(item_link_id, specification, x, y); return;
    }    
    
    $('#spc').remove();
    
    var title = specification['data']['name']+' - '+specification['data']['caption'];        

    var table = $('<table></table>')
                .append(    
                    $('<tr></tr>')
                    .append($('<td></td>').css({'width': '150px', 'text-align': 'right'}).append('Имя переменной'))
                    .append($('<td></td>').css({'text-align': 'center'}).append('Значение'))
                    .append($('<td></td>')))
                .append('<tr><td colspan="3">&nbsp;</td></tr>');
         
           
    for (i in specification['params']) if (i != 'indexOf')
        table.find('tbody').append(                        
                        $('<tr></tr>')
                            .append($('<td></td>').append($('<div></div>').attr({'title': specification['params'][i]['caption']}).html(i+': ') ).css({'text-align': 'right'}))
                            .append($('<td></td>').append('<input type="text" name="'+i+'" value="'+(specification['params'][i]['value'] ? specification['params'][i]['value'] : '')+'" />'))                            
                            .append($('<td></td>').append('<input type="checkbox" name="c'+i+'" '+(specification['params'][i]['value'] == null ? '' : 'checked')+' />'))
                    );                 
    
    CWindow('spc',x,y,300,0,title, $('<div>')                                   
                                   .append('<br/>')
                                   .append($('<form id="spcf"></form>').append(table))
                                   .append('<hr/><button id="sbmtSpec">Сохранить</button><br/><br/>')
                             );
                             
    $('#sbmtSpec').bind('click', function(){editItem(item_link_id, spcfToArray()); $('#spc').remove();} );
}