/*

*/
$(document).ready(
function()
{  var lastHtml = '' ;

  $(document).keyup(function(e)
  {
    if ( ( e.which==115 ) && ( !e.shiftKey ) ) // F4
    {
      if ( $("p:first").hasClass( "editmeman" ) )
      {        if ( confirm( 'Закончить редактирование?' ) )
        {
          $("p:first").removeClass( "editmeman" ) ;
          $("#editall").focusout() ;

          deactivateAll() ;
        }
      }
      else
      {
        if ( confirm( 'Начать редактирование страницы?' ) )
        {          $("p:first").addClass( "editmeman" ) ;
          involveAll() ;

        }
       }
    }

    // Сохраняем полученный документ
    if ( ( e.which==119 )  && ( !e.shiftKey ) )  // F8
    {      if ( confirm( 'Сохранить страницу?' ) )
      {
        // Название страницы
        var sPath = window.location.pathname ;
        var sPage = sPath.substring( sPath.lastIndexOf('/') + 1 ) ;

        // Выключаем редактирование
	$("p:first").removeClass( "editmeman" ) ;
	$("p:first").removeClass( "installed" ) ;
	$("#editall").focusout() ;
	deactivateAll() ;

        // Сохраняем без перезагрузки
        $.ajax({ url: "save.php",
                 type: "post",
                 data: ( { html: $('html').html(), page : sPage } ),
                 success: function()
                 {
                   alert( 'Страница ' + sPage + ' успешно сохранена' );
                 }
              });
      }
    }
  });


  function involveAll()
  {    $("p").click( function(e) { startEdit( $(this) ) ; } ) ;
    $("span").click( function(e) { startEdit( $(this) ) ; } ) ;
    $("li").click( function(e) { startEdit( $(this) ) ; } ) ;
    $("h1").click( function(e) { startEdit( $(this) ) ; } ) ;
    $("h2").click( function(e) { startEdit( $(this) ) ; } ) ;
    $("h3").click( function(e) { startEdit( $(this) ) ; } ) ;
    $("h4").click( function(e) { startEdit( $(this) ) ; } ) ;
    $("h5").click( function(e) { startEdit( $(this) ) ; } ) ;
    $("h6").click( function(e) { startEdit( $(this) ) ; } ) ;
    $("em").click( function(e) { startEdit( $(this) ) ; } ) ;
    $("a").click( function(e) { return startEdit( $(this) ) ; } ) ;
  }

  function deactivateAll()
  {    $("p").unbind( 'click' ) ;
    $("span").unbind( 'click' ) ;
    $("li").unbind( 'click' ) ;
    $("h1").unbind( 'click' ) ;
    $("h2").unbind( 'click' ) ;
    $("h3").unbind( 'click' ) ;
    $("h4").unbind( 'click' ) ;
    $("h5").unbind( 'click' ) ;
    $("h6").unbind( 'click' ) ;
    $("em").unbind( 'click' ) ;
    $("a").unbind( 'click' ) ;
  }

  // Инициировать механизм редактирования объекта
  function startEdit( obj )
  {
    //obj.unbind( 'click' ) ;

    deactivateAll() ;

    // Для работы со ссылками добавляем заглушку на нажатия
    obj.click( function() {return false;} ) ;
    // Завершение работы при потере фокуса
    obj.focusout( function() { endEdit( $(this) ); } ) ;

    // Teкст редактируемого объекта приводим к виду с переводами строк и без тегов
    var text = obj.html() ;

    // У нас запрет на редактирование объектов, содержащих внутри картинки
    if ( text.search( /<img/i ) > -1 )
    {
      involveAll() ;
      return false ;
    }

    text = text.replace( /<br>/gi, '\n' );
    text = text.replace( /<\/?[^>]+(>|$)/g, "" ) ;


    // Перенесем все атрибуты редактируемого объекта
    var fontSize = obj.css( 'font-size' ) ;
    var fontFamily = obj.css( 'font-family' ) ;
    var fontWeight = obj.css( 'font-weight' ) ;
    var fontStyle = obj.css( 'font-style' ) ;
    var lineHeight = obj.css( 'line-height' ) ;


    var len = text.length ;
    var fsize = parseInt( fontSize ) ;
    var col = parseInt( 1.8 * obj.width() / fsize ) ;
    var row = parseInt( obj.height() / 15 ) ;

    if ( len < col ) { col = len + 2 ; row = 1 ; }

    obj.text("") ;
    obj.html('<form class="inplace_form" style="display: inline; margin: 0; padding: 0;"><textarea rows="' + row + '" cols="' + col + '" id="editall">' + text + '</textarea></form>') ;
    $('#editall').css( 'font-size', fontSize ) ;
    $('#editall').css( 'font-family', fontFamily ) ;
    $('#editall').css( 'font-weight', fontWeight ) ;
    $('#editall').css( 'font-style', fontStyle ) ;
    $('#editall').css( 'line-height', lineHeight ) ;
    $('#editall').focus() ;

    return false ;
  }

  // Закончить редактирование
  function endEdit( obj )
  {
    obj.unbind( 'focusout' ) ;
    involveAll() ;
    //obj.click( function(e) { return startEdit( $(this) ) ; } ) ;
    // Привести текст в html вид
    var text = $('#editall').val() ;
    text = text.replace(/\n/g, "<br>");

    obj.html( text ) ;
  }

}) ;
