/**
 * Ajax functions for product gallery editing interface
 *
 * @author <vit.novak@heureka.cz>
 */

var GalleryAdmin = {
    ajaxRequest: null,

    moveForward: function(imageId, productId)
    {
        if (null != this.ajaxRequest) {
            this.ajaxRequest.transport.abort();
        }

        this.ajaxRequest = myAjax = new Ajax.Request(
            '/direct/ajax/gallery-admin/change-images-order/',
            {
                method: 'post',
                parameters: 'imageId=' + imageId
                          + '&productId=' + productId
                          + '&direction=' + 'forward',
                onComplete: function (r) {
                    GalleryAdmin.modifyGalleryHandleResponse(r, productId);
                }
            }
        );
    },

    moveBackward: function(imageId, productId)
    {
        if (null != this.ajaxRequest) {
            this.ajaxRequest.transport.abort();
        }

        this.ajaxRequest = myAjax = new Ajax.Request(
            '/direct/ajax/gallery-admin/change-images-order/',
            {
                method: 'post',
                parameters: 'imageId=' + imageId
                          + '&productId=' + productId
                          + '&direction=' + 'backward',
                onComplete: function (r) {
                    GalleryAdmin.modifyGalleryHandleResponse(r, productId);
                }
            }
        );
    },

    removeImage: function(imageId, productId)
    {
        if (null != this.ajaxRequest) {
            this.ajaxRequest.transport.abort();
        }

        this.ajaxRequest = myAjax = new Ajax.Request(
            '/direct/ajax/gallery-admin/remove-image/',
            {
                method: 'post',
                parameters: 'imageId=' + imageId
                            + '&productId=' + productId,
                onComplete: function (r) {
                    GalleryAdmin.modifyGalleryHandleResponse(r, productId);
                }
            }
        );
    },

    undoRemove: function(imageId, productId)
    {
        if (null != this.ajaxRequest) {
            this.ajaxRequest.transport.abort();
        }

        this.ajaxRequest = myAjax = new Ajax.Request(
            '/direct/ajax/gallery-admin/undo-remove/',
            {
                method: 'post',
                parameters: 'imageId=' + imageId
                            + '&productId=' + productId,
                onComplete: function (r) {
                    GalleryAdmin.modifyGalleryHandleResponse(r, productId);
                }
            }
        );
    },

    approve: function(imageId, productId)
    {
        if (null != this.ajaxRequest) {
            this.ajaxRequest.transport.abort();
        }

        this.ajaxRequest = myAjax = new Ajax.Request(
            '/direct/ajax/gallery-admin/approve/',
            {
                method: 'post',
                parameters: 'imageId=' + imageId
                            + '&productId=' + productId,
                onComplete: function (r) {
                    GalleryAdmin.modifyGalleryHandleResponse(r, productId);
                }
            }
        );
    },

    deny: function(imageId, productId)
    {
        if (null != this.ajaxRequest) {
            this.ajaxRequest.transport.abort();
        }

        this.ajaxRequest = myAjax = new Ajax.Request(
            '/direct/ajax/gallery-admin/deny/',
            {
                method: 'post',
                parameters: 'imageId=' + imageId
                            + '&productId=' + productId,
                onComplete: function (r) {
                    GalleryAdmin.modifyGalleryHandleResponse(r, productId);
                }
            }
        );
    },

    switchFeedImages: function(productId)
    {
        if (null != this.ajaxRequest) {
            this.ajaxRequest.transport.abort();
        }

        this.ajaxRequest = myAjax = new Ajax.Request(
            '/direct/ajax/gallery-admin/switch-feed-images/',
            {
                method: 'post',
                parameters: 'productId=' + productId,
                onComplete: function (r) {
                    GalleryAdmin.modifyGalleryHandleResponse(r, productId);
                }
            }
        );
    },

    insertFeedImage: function(hashUrl, productId)
    {
        if (null != this.ajaxRequest) {
            this.ajaxRequest.transport.abort();
        }

        this.ajaxRequest = myAjax = new Ajax.Request(
            '/direct/ajax/gallery-admin/insert-feed-image/',
            {
                method: 'post',
                parameters: 'productId=' + productId
                            + '&hashUrl=' + hashUrl,
                onComplete: function (r) {
                    GalleryAdmin.insertFeedImageHandleResponse(r, productId);
                }
            }
        );
    },

    refreshGallery: function(productId)
    {
        if (null != this.ajaxRequest) {
            this.ajaxRequest.transport.abort();
        }

        this.ajaxRequest = myAjax = new Ajax.Request(
            '/direct/ajax/gallery-admin/refresh-gallery/',
            {
                method: 'post',
                parameters: 'productId=' + productId,
                onComplete: function (r) {
                    GalleryAdmin.refreshGalleryHandleResponse(r);
                }
            }
        );
    },

    insertVideo: function(productId, youtubeUrl)
    {
        if (null != this.ajaxRequest) {
            this.ajaxRequest.transport.abort();
        }

        this.ajaxRequest = myAjax = new Ajax.Request(
            '/direct/ajax/gallery-admin/insert-video/',
            {
                method: 'post',
                parameters: 'productId=' + productId
                            + '&videoUrl=' + youtubeUrl,
                onComplete: function (r) {
                    GalleryAdmin.insertVideoHandleResponse(r, productId);
                }
            }
        );
    },

    insertUserVideo: function(productId, youtubeUrl)
    {
        if (null != this.ajaxRequest) {
            this.ajaxRequest.transport.abort();
        }

        this.ajaxRequest = myAjax = new Ajax.Request(
            '/direct/ajax/gallery-admin/insert-video/',
            {
                method: 'post',
                parameters: 'productId=' + productId
                            + '&videoUrl=' + youtubeUrl
                            + '&extendedResponse=1',
                onComplete: function (r) {
                    GalleryAdmin.insertUserVideoHandleResponse(r, productId);
                }
            }
        );
    },

    moveVideoForward: function(videoId, productId)
    {
        if (null != this.ajaxRequest) {
            this.ajaxRequest.transport.abort();
        }

        this.ajaxRequest = myAjax = new Ajax.Request(
            '/direct/ajax/gallery-admin/change-video-order/',
            {
                method: 'post',
                parameters: 'videoId=' + videoId
                            + '&productId=' + productId
                            + '&direction=' + 'forward',
                onComplete: function (r) {
                    GalleryAdmin.modifyGalleryHandleResponse(r, productId);
                }
            }
        );
    },

    moveVideoBackward: function(videoId, productId)
    {
        if (null != this.ajaxRequest) {
            this.ajaxRequest.transport.abort();
        }

        this.ajaxRequest = myAjax = new Ajax.Request(
            '/direct/ajax/gallery-admin/change-video-order/',
            {
                method: 'post',
                parameters: 'videoId=' + videoId
                            + '&productId=' + productId
                            + '&direction=' + 'backward',
                onComplete: function (r) {
                    GalleryAdmin.modifyGalleryHandleResponse(r, productId);
                }
            }
        );
    },

    removeVideo: function(videoId, productId)
    {
        if (null != this.ajaxRequest) {
            this.ajaxRequest.transport.abort();
        }

        this.ajaxRequest = myAjax = new Ajax.Request(
            '/direct/ajax/gallery-admin/remove-video/',
            {
                method: 'post',
                parameters: 'videoId=' + videoId
                            + '&productId=' + productId,
                onComplete: function (r) {
                    GalleryAdmin.modifyGalleryHandleResponse(r, productId);
                }
            }
        );
    },

    undoRemoveVideo: function(videoId, productId)
    {
        if (null != this.ajaxRequest) {
            this.ajaxRequest.transport.abort();
        }

        this.ajaxRequest = myAjax = new Ajax.Request(
            '/direct/ajax/gallery-admin/undo-remove-video/',
            {
                method: 'post',
                parameters: 'videoId=' + videoId
                            + '&productId=' + productId,
                onComplete: function (r) {
                    GalleryAdmin.modifyGalleryHandleResponse(r, productId);
                }
            }
        );
    },

    modifyGalleryHandleResponse: function(r, productId)
    {
        if (r.status != 0) {
            var status = r.getResponseHeader('X-Status');
            if ("ERROR" == status || r.status != 200) {
                alert("CHYBA (" + r.status + ") " + r.responseText);
            } else {
                GalleryAdmin.refreshGallery(productId);
            }
        }
    },

    insertVideoHandleResponse: function(r, productId)
    {
        if (r.status != 0) {
            var status = r.getResponseHeader('X-Status');
            if ("ERROR" == status || r.status != 200) {
                alert("CHYBA (" + r.status + ") " + r.responseText);
            } else {
                document.getElementById('progress-video').innerHTML = r.responseText;
                GalleryAdmin.refreshGallery(productId);
            }
        }
    },

    insertUserVideoHandleResponse: function(r, productId)
    {
        if (r.status != 0) {
            var status = r.getResponseHeader('X-Status');
            if ("ERROR" == status || r.status != 200) {
                alert("CHYBA (" + r.status + ") " + r.responseText);
            } else {
                document.getElementById('userUploadPopUp-videoResponse').innerHTML = r.responseText;
                document.getElementById('userUploadPopUp-videoResponse').style.display = 'block';
            }
        }
    },

    insertFeedImageHandleResponse: function(r, productId)
    {
        if (r.status != 0) {
            var status = r.getResponseHeader('X-Status');
            if ("ERROR" == status || r.status != 200) {
                alert("CHYBA (" + r.status + ") " + r.responseText);
            } else {
                document.getElementById('progress').innerHTML = r.responseText;
                GalleryAdmin.refreshGallery(productId);
            }
        }
    },

    refreshGalleryHandleResponse: function(r)
    {
        if (r.status != 0) {
            var status = r.getResponseHeader('X-Status');
            if ("ERROR" == status || r.status != 200) {
                alert("CHYBA (" + r.status + ") " + r.responseText);
            } else {
                document.getElementById('div_images').innerHTML = r.responseText;
            }
        }
    }
}
