var 
  confirmCallback, confirmParam, _cancelCallback;

function confirm(caption, message, callback, param) {
    confirmCallback = callback;
    confirmParam = param;
    
    $(document).click(function(e) {
        if (!$('#confirmation').data('shown')) {
            return;
        }
        if (!$(e.target).closest('#confirmation').size()) {
            cancelOperation();
        }
    });
  
    $('#confirmation').
        find('h3').html(caption).end().
        find('p').html(message).end().
        show(200, function() {
            $(this).data('shown', true);
        });
}

function creoConfirm(caption, message, callback, param, cancelCallback, names) {
    confirmCallback = callback;
    confirmParam = param;
    _cancelCallback = cancelCallback;

    if (names) {
        $('#confirmation #basket-add-confirm span').html(names.confirm);
        $('#confirmation #basket-add-confirm span').html(names.cancel);
    } else {
        $('#confirmation #basket-add-confirm span').html('Подтвердить');
        $('#confirmation #basket-add-confirm span').html('Отменить');
    }

    $('#creo-confirmation').
        find('h3').html(caption).end().
        find('div.popup-inner').html(message).end().
        css({ 'opacity':0, 'display':'block' }).
        animate({ 'opacity':1 },  200, function() {
            $(this).data('shown', true);
        });
}

function creoHidePopup(callback) {
    $('#creo-confirmation').animate({ 'opacity':0 }, 200,
        function() {
            $(this)
                .css({ 'display':'none' })
                .data('shown', false)
                ;
            if ('undefined' != typeof callback) {
                callback();
            }
        }
    );
}

    function creoConfirmOperation() {
        creoHidePopup(function() {
            confirmCallback(confirmParam);
        });
    }

    function creoCancelOperation() {
        creoHidePopup(function() {
            if (_cancelCallback) { _cancelCallback(); }
        });
    }

function detachEvents()
{
    $('#confirmation').data('shown', false);
}

function confirmOperation()
{
    detachEvents();
    $('#confirmation').hide(200, function() { confirmCallback(confirmParam); });
}

function cancelOperation()
{
    //if (e && e.target && $(e.target).length && ($(e.target).is('#confirmation') || $(e.target).parents('#confirmation').length)) { return false; }
    detachEvents();
    $('#confirmation').hide(200);
}

function confirmDeleteNews(newsId)
{
    confirm(
        'Подтверждение удаления',
        'Вы уверены, что хотите удалить новость?',
        deleteNews,
        newsId
    );
}

function confirmDeleteRecord(recordId)
{
    confirm(
        'Подтверждение удаления',
        'Вы уверены, что хотите удалить запись?',
        deleteRecord,
        recordId
    );
}

function confirmDeleteUpload(params) {
    confirm(
            'Подтверждение удаления'
        ,   'Вы уверены, что хотите удалить эту работу?'
        ,   deleteUpload
        ,   params
    );
}

function confirmDeletePhoto(photoId, params)
{
    var data = new Object();
    data.photoId = photoId;
    data.params = params;
  
  confirm(
    'Подтверждение удаления',
    'Вы уверены, что хотите удалить фото?',
    deletePhoto,
    data
  );
}

function confirmDeletePage(pageId, pages, back)
{
  var data = new Object();
  data.pageId = pageId;
  data.pages = pages;
  data.back = back;
  
  confirm(
    'Подтверждение удаления',
    'Вы уверены, что хотите удалить узел?',
    deletePage,
    data
  );
}

function confirmConfirmRecord(recordId)
{
  confirm(
    'Подтверждение утверждения',
    'Вы уверены, что хотите утвердить запись?',
    confirmRecord,
    recordId
  );
}

function confirmConfirmUpload(params) {
    confirm(
            'Подтверждение утверждения'
        ,   'Вы уверены, что хотите утвердить эту работу?'
        ,   confirmUpload
        ,   params
    );
}

function confirmDeleteAlbum(albumId)
{
  confirm(
    'Подтверждение удаления',
    'Вы уверены, что хотите удалить альбом?',
    deleteAlbum,
    albumId
  );
}

function confirmDeletePermission(userid, permission)
{
  var data = new Object();
  data.userid = userid;
  data.permission = permission;
  
  confirm(
    'Подтверждение удаления',
    'Вы уверены, что хотите удалить разрешение?',
    deletePermission,
    data
  );
}

function confirmDeleteUser(userId)
{
  confirm(
    'Подтверждение удаления',
    'Вы уверены, что хотите удалить пользователя?',
    deleteUser,
    userId
  );
}

function confirmDeleteRole(userId)
{
  confirm(
    'Подтверждение удаления',
    'Вы уверены, что хотите удалить роль?',
    deleteRole,
    userId
  );
}

function confirmDeleteItem(itemId)
{
  confirm(
    'Подтверждение удаления',
    'Вы уверены, что хотите удалить категорию?',
    deleteItem,
    itemId
  );
}

function confirmDeleteGoods(goodsId)
{
  confirm(
    'Подтверждение удаления',
    'Вы уверены, что хотите удалить товар?',
    deleteGoods,
    goodsId
  );
}

function confirmDeleteCategory(categoryid)
{
  confirm(
    'Подтверждение удаления',
    'Вы уверены, что хотите удалить категорию? Все дочерние документы также будут удалены.',
    deleteCategory,
    categoryid
  );
}

function confirmDeleteDocument(documentid)
{
  confirm(
    'Подтверждение удаления',
    'Вы уверены, что хотите удалить документ?',
    deleteDocument,
    documentid
  );
}

function confirmDeleteAction(actionId) {
    confirm(
            'Подтверждение удаления'
        ,   'Вы уверены, что хотите удалить акцию?'
        ,   deleteAction
        ,   actionId
    );
}

// *** delete ***

function deleteNews(newsId)
{
  window.location.assign('?scenario=news.delete&newsid=' + newsId + '&page=news.arx');
}

function deleteRecord(recordId)
{
  window.location.assign('?page=guestbook&scenario=guestbook.delete&recordid=' + recordId);
}

function deletePage(data)
{
  window.location.assign('?scenario=sitemap.page.delete&pageid=' + data.pageId + '&pages=' + data.pages + '&page=sitemap');
}

function deletePhoto(data)
{
  window.location.assign('?scenario=photogallery.photo.delete&photoid=' + data.photoId + data.params);
}

function deleteAlbum(albumId)
{
  window.location.assign('?scenario=photogallery.albums.delete&deletealbumid=' + albumId);
}

function deletePermission(data)
{
  window.location.assign('?scenario=user.permissions.delete&userid=' + data.userid + '&permission=' + data.permission);
}

function deleteUser(userId)
{
  window.location.assign('?scenario=user.delete&userid=' + userId);
}

function deleteRole(roleId)
{
  window.location.assign('?scenario=role.delete&roleid=' + roleId);
}

function deleteItem(itemId)
{
  window.location.assign('?scenario=catalog.items.delete&itemid=' + itemId + '&page=catalog');
}

function deleteGoods(goodsId)
{
  window.location.assign('?page=catalog&scenario=catalog.goods.delete&goodsid=' + goodsId);
}

function deleteCategory(categoryid)
{
  window.location.assign('?page=documents&scenario=documents.category.delete&categoryid=' + categoryid);
}

function deleteDocument(documentid)
{
  window.location.assign('?page=documents&scenario=documents.delete&documentid=' + documentid);
}

function deleteAction(actionId) {
    window.location.assign('?page=actions.arx&scenario=actions.delete&actionId=' + actionId);
}

function deleteUpload(params) {
    window.location.assign('?page=actions.arx&scenario=actions.upload.delete&actionId=' + params.actionId + '&uploadId=' + params.uploadId);
}

// *** confirm ***

function confirmRecord(recordId) {
    window.location.assign('?page=guestbook&scenario=guestbook.confirm&recordid=' + recordId);
}

function confirmUpload(params)
{
  window.location.assign('?page=actions.arx&scenario=actions.upload.confirm&actionId=' + params.actionId + '&uploadId=' + params.uploadId);
}

// *** forms show/hide ***

function showPermissionsInsertForm()
{
  $('#permissionsInsertForm').show(300);
}  

function hidePermissionsInsertForm()
{
  $('#permissionsInsertForm').hide(300);
}  
