{"version":3,"sources":["artworkHandler.js","combitionHandler.js","colorHandler.js"],"names":["artworkHandler","$panel","masonry","$","find","buttonReveal","closeReveal","panelParent","parent","panel","currentArtwork","reinitializeMasonry","self","this","imagesLoaded","itemSelector","data","columnWidth","percentPosition","transitionDuration","$masonry","length","masonryBehaviour","each","e","parentEl","selectButton","on","hasClass","removeClass","addClass","resetPanel","$obj","onClosePanelReveal","selectedId","parents","selectedSrc","attr","combitionHandler","addSelectedCoverArtworks","tempCurrentArtworkId","addSelectedArtworks","tempCurrentIdx","tempChangeArtworkEffect","tempChangeArtId","init","currArt","elOpen","elPanel","document","cover","$template","$templateDetail","$artworkItems","$saveData","$deleteData","$discardData","$compareItem","$publishExhibition","$unpublishExhibition","$cropBtn","$createExhibition","$cancelEdit","$applyNewEffect","$leavePage","$messageContainer","$changePage","$changeEffect","$detailArt","$coverArt","$html","$main","$header","dataInput","$combitionTextarea","$combitionTitle","$combitionContainer","revealNotif","$element","$publishTitle","$publishLink","$visitButton","$copyText","$buttonPublished","toolbar","$btnExpand","$btnArtwork","$toolbarMain","$toolbarArtwork","$panelTransparent","$toolbar","dataHasChanged","tempUrl","tempCurrentArtworkIDCompare","tempCurrentCoverArtwork","changeEffectPopup","$tempObjCompare","detailPopup","coverPopup","detailResult","detailImage","defaultDetail","x","y","width","height","cropWidthRatio","cropRatio","cropLargeRatio","cropprContainer","heightPanelExpand","minimizePanelExpand","css","margin-bottom","cropImageCanvas","url","dataCrop","callback","canvas","createElement","context","getContext","imageObj","Image","crossOrigin","xPos","yPos","src","drawImage","toDataURL","cropImage","$imgEl","divWidth","useLoad","image","onload","detailRatio","toFixed","tempImgWidth","tempimgPosYeight","tempImgX","tempImgY","left","top","min-width","setTimeout","scrollToTop","window","scrollTo","setTextHeight","$textEl","parseInt","scrollHeight","textCounter","$counter","maxLength","currLength","val","innerHTML","textAreaState","$state","$dataId","$type","$detailId","value","trim","selectedArtworks","i","item","$detail","index","postTitle","postDescription","quarterRatioResize","$optEl","calculation","$el","newHeight","artWidth","imgSrc","initDetail","selfArt","destroy","$closeButton","$doneButton","$detailImg","open","cropW","cropH","cropSize","Math","round","Croppr","minSize","startSize","aspectRatio","onInitialize","instance","mediaNode","cropprEl","containerEl","Foundation","MediaQuery","is","clone","appendTo","preventDefault","console","log","getValue","reset","detailWidth","description","push","hide","$id","$art_id","$compare_id","$change_id","$change_effect","dataAvailable","compare_artwork_id","dData","JSON","parse","stringify","arr","artwork_id","effect","compare_data","detail_data","temp_data","renderItem","relabelResult","imgX","imgY","renderFocalSelect","setCover","artId","isCompare","imgPosX","imgPosY","img","maxSize","onCropMove","moveTo","offsetX","offsetY","cropX","cropY","close","unbind","resetArtworks","tempData","removeArtworks","splice","moveArtwork","inc","moveIndex","moveData","firstData","duplicateArtworks","theData","reinitIdx","$tempIdx","$mode","$rowId","$modeOpt","remove","itemTop","$targetEl","offset","outerHeight","insertBefore","insertAfter","html","ajax","type","myAjax","ajax_url","action","artworks","success","response","$data","htmlDetail","artwork","compareArtworkID","compareArtwork","detailData","$desc","replace","detail","detailItem","replaceWith","append","htmlItem","$artwork","$grid","processCompareArtwork","idArt","idArtCompare","deleteCommunityExhibition","post_id","beforeSend","location","href","saveCommunityExhibition","$publish","$publish_state","publishState","cover_data","colors_data","colors","post_title","post_description","is_publish","publish_state","foundation","publishCommunityExhibhition","$unpublish","state","currentComExID","createNewExhibition","title","alert","artworkId","dataType","done","ID","fail","error","changePagePopup","Reveal","id","origin","combi","descButton","descContent","click","focus","selfText","selectionStart","selectionEnd","indexOf","itemIdx","gridIdx","itemParent","artEffect","text","input","setAttribute","body","appendChild","select","execCommand","removeChild","toggleClass","closest","target","colorHandler","$elPanel","$colorScheme","$colorBg","$itemBgColor","$itemColor","$btnDone","tempColorPrimary","tempColorSecondary","tempBg","resetSelected","colorSelect","$item","children","$bgItem","currClrSchemePrimary","currClrSchemeSecondary","currBgClr"],"mappings":"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","sourcesContent":["artworkHandler = {\n    $panel : {\n        masonry : $('body').find('.masonry-container'),\n        buttonReveal : $('body').find('[data-open-artwork]'),\n        closeReveal : $('body').find('.panel-select-artwork').find('[data-close]'),\n        panelParent : $('body').find('.panel-select-artwork').parent(),\n        panel : $('body').find('.panel-select-artwork'),\n    },\n    currentArtwork : 0,\n\n    reinitializeMasonry : function() {\n        var self = this;\n\n        self.$panel.masonry.imagesLoaded( function() {\n            self.$panel.masonry.masonry({\n                itemSelector: $(this).data('masonry-item'),\n                columnWidth: $(this).data('masonry-sizer'),\n                percentPosition: true,\n                transitionDuration: 0,\n            });\n            self.$panel.masonry.masonry('reloadItems');\n        });\n\n        var $masonry = $('body').find('[data-masonry]');\n        if ($masonry.length > 0) {\n            $masonry.masonry( 'layout' );\n        }\n    },\n\n    masonryBehaviour : function(){\n        var self = this;\n        self.$panel.masonry.each(function(e) {\n            var parentEl = $(this);\n            var selectButton = $(this).parent().find('.selecting-artwork');\n\n            parentEl.find('.artwork-select').on('click', function(e) {\n                if ($(this).hasClass('selected')) {\n                    $(this).removeClass('selected');\n                    parentEl.removeClass('is-selecting');\n                    selectButton.removeClass('is-active');\n                } else {\n                    parentEl.find('.artwork-select').removeClass('selected');\n                    $(this).addClass('selected');\n                    parentEl.addClass('is-selecting');\n                    selectButton.addClass('is-active');\n                }\n            });\n        });\n    },\n\n    resetPanel : function($obj = null) {\n        var self = this;\n        \n        self.$panel.masonry.removeClass('is-selecting');\n        self.$panel.masonry.find('.artwork-select').removeClass('selected');\n        self.$panel.masonry.find('.artwork-select').removeClass('hide');\n        self.$panel.panel.find('.selecting-artwork').removeClass('is-active');\n    },\n\n    onClosePanelReveal : function($obj) {\n        var self = this;\n        var selectedId = 0;\n\n        if (!$($obj).hasClass('close-panel-select')) {\n            selectedId      = $($obj).parents('.main-content').find('.artwork-select.selected').data('art-id');\n            var selectedSrc = $($obj).parents('.main-content').find('.artwork-select.selected img').attr('src');\n            var type        = $($obj).parents('.main-content').data('type');\n\n            if (type == 'cover-artwork') {\n                combitionHandler.addSelectedCoverArtworks(selectedId, selectedSrc);\n\n            } else {\n                if (combitionHandler.tempCurrentArtworkId > 0) {\n                    combitionHandler.addSelectedArtworks(combitionHandler.tempCurrentIdx, selectedSrc, combitionHandler.tempCurrentArtworkId, selectedId, 0, combitionHandler.tempChangeArtworkEffect);\n                } else if (combitionHandler.tempChangeArtId > 0) {\n                    combitionHandler.addSelectedArtworks(combitionHandler.tempCurrentIdx, selectedSrc, combitionHandler.tempChangeArtId, 0, selectedId);\n                } else {\n                    combitionHandler.addSelectedArtworks(null, selectedSrc, selectedId);\n                }\n            }\n        }\n        \n        combitionHandler.tempCurrentArtworkId = 0;\n        combitionHandler.tempCurrentIdx = null;\n        combitionHandler.tempChangeArtId = 0;\n        self.resetPanel();\n    },\n\n    init : function() {\n        var self = this;\n\n        self.resetPanel();\n        self.reinitializeMasonry();\n        self.masonryBehaviour();\n        self.$panel.panelParent.addClass('disable-scroll');\n\n        self.$panel.buttonReveal.on('click', function(e) {\n            self.resetPanel();\n            self.reinitializeMasonry();\n\n            var currArt = combitionHandler.tempChangeArtId;\n            var elOpen = $(this).data('open');\n\n            if (currArt) {\n                var elPanel = $('body').find('#'+elOpen);\n                elPanel.find('.masonry-container').addClass('is-selecting');\n                elPanel.find('[data-art-id=\"'+currArt+'\"]').addClass('selected');\n                elPanel.find('.selecting-artwork').addClass('is-active');\n            }\n        });\n        \n        self.$panel.closeReveal.on('click', function() {\n            self.onClosePanelReveal(this);\n        });\n\n        $(document).on('open.zf.reveal', '#cover-artwork[data-reveal]', function() {\n            var currArt = cover['artwork_id'];\n            if (currArt) {\n                var elPanel = $('body').find('#cover-artwork');\n                elPanel.find('.masonry-container').addClass('is-selecting');\n                elPanel.find('[data-art-id=\"'+currArt+'\"]').addClass('selected');\n                elPanel.find('.selecting-artwork').addClass('is-active');\n            }\n        });\n    }\n}","combitionHandler = { // combition = community exhibition\n    $template           : $('.artwork-item-template'),\n    $templateDetail     : $('.artwork-detail-template'),\n\t$artworkItems       : $('.artwork-items-container'),\n    $saveData           : $('[href=\"#save-data\"]'),\n    $deleteData         : $('[href=\"#delete-exhib\"]'),\n    $discardData        : $('[href=\"#discard-data\"]'),\n    $compareItem        : $('[href=\"#compare-item\"]'),\n    $publishExhibition  : $('[href=\"#publish-exhibition\"]'),\n    $unpublishExhibition: $('[href=\"#unpublish-exhibition\"]'),\n    $cropBtn            : $('[href=\"#crop-button\"]'),\n    $createExhibition   : $('[href=\"#create-exhibition\"]'),\n    $cancelEdit         : $('body').find('.close-edit'),\n    $applyNewEffect     : $('body').find('[href=\"#apply-new-effect\"]'),\n    $leavePage          : $('.page-community-exhibition-creator').find('a'),\n    $messageContainer   : $('.message-container'),\n    $changePage         : $('#change-page'),\n    $changeEffect       : $('#change-effect'),\n    $detailArt          : $('#artwork-detail'),\n    $coverArt           : $('#cover-art'),\n    $html               : $('html'),\n    $main               : $('main'),\n    $header             : $('header'),\n    dataInput : {\n        $combitionTextarea  : $('.combition-textarea'),\n        $combitionTitle     : $('#combition-title'),\n        $combitionContainer : $('.combition-container'),\n    },\n    revealNotif: {\n        $element        : $('#notification-modal'),\n        $publishTitle   : $('.publish-title'),\n        $publishLink    : $('.publish-link'),\n        $visitButton    : $('.visit-button'),\n        $copyText       : $('.copy-text'),\n        $buttonPublished: $('.button-published'),\n    },\n    toolbar: {\n        $btnExpand      : $('.button-expand'),\n        $btnArtwork     : $('.button-toolbar-artwork'),\n        $toolbarMain    : $('.toolbar-main'),\n        $toolbarArtwork : $('.toolbar-artwork'),\n        $panelTransparent: $('.panel-transparent'),\n        $toolbar        : $('.toolbar') \n    },\n    dataHasChanged: false,\n    tempUrl : null,\n    tempCurrentIdx : null,\n    tempCurrentArtworkId : 0,\n    tempCurrentArtworkIDCompare : 0,\n    tempChangeArtId : 0,\n    tempCurrentCoverArtwork: 0,\n    changeEffectPopup : null,\n    $tempObjCompare : null,\n    tempChangeArtworkEffect : null,\n    detailPopup : null,\n    coverPopup : null,\n    detailResult : null,\n    detailImage : null,\n    defaultDetail : {\n        x : 0,\n        y : 0,\n        width : 0,\n        height : 0,\n    },\n    cropWidthRatio : 5,\n    cropRatio : {\n        width : 5,\n        height : 4,\n    },\n    cropLargeRatio : {\n        width : 13,\n        height : 10,\n    },\n    cropprContainer : null,\n    heightPanelExpand : 0,\n\n    minimizePanelExpand: function(){\n        var self = this;\n        self.$header.removeClass('active');\n        self.$html.removeClass('disable-scroll');\n        self.toolbar.$panelTransparent.removeClass('active');\n        self.toolbar.$toolbarMain.removeClass('opened');\n        self.toolbar.$btnExpand.parent().css({\n            'margin-bottom': '-'+self.heightPanelExpand+'px'\n        })\n    },\n\n    cropImageCanvas: function (url, width, height, dataCrop, callback) {\n        var canvas = document.createElement(\"canvas\");\n        var context = canvas.getContext('2d');\n        var imageObj = new Image();\n        imageObj.crossOrigin = \"anonymous\";\n\n        var xPos = dataCrop.x;\n        var yPos = dataCrop.y;\n    \n        canvas.width = width;\n        canvas.height = height;\n\n        imageObj.width = width;\n        imageObj.height = height;\n        imageObj.src = url;\n\n        context.drawImage(imageObj, xPos, yPos, dataCrop.width, dataCrop.height, 0, 0, width, height);\n\n        var canvasURL = canvas.toDataURL();\n\n        callback(canvasURL);\n    },\n\n    cropImage: function ($imgEl, src, dataCrop, divWidth, useLoad = false) {\n        var self = this;\n        var image = new Image();\n        image.src = src;\n\n        if (src && src != '##imgartsrc##') {\n            //disini here\n\n            if (useLoad) {\n                self.$html.addClass('loading');\n                $($imgEl).addClass('hide');\n            }\n\n            image.onload = function() {\n                var detailWidth = divWidth;\n                //disinihere\n                var detailRatio = (detailWidth / dataCrop.width).toFixed(2);\n\n                var tempImgWidth    = (image.width * detailRatio).toFixed(2);\n                var tempimgPosYeight   = (image.height * detailRatio).toFixed(2);\n                var tempImgX        = (dataCrop.x * detailRatio).toFixed(2);\n                var tempImgY        = (dataCrop.y * detailRatio).toFixed(2);\n\n                $($imgEl).css({\n                    'left' : '-'+tempImgX+'px',\n                    'top'  : '-'+tempImgY+'px',\n                    'min-width' : tempImgWidth+'px',\n                    'height'  : tempimgPosYeight+'px'\n                });\n\n                if (useLoad) {\n                    setTimeout(function() {\n                        self.$html.removeClass('loading');\n                        $($imgEl).removeClass('hide');\n                    }, 300);\n                }\n            }\n\n        }\n    },\n    \n    scrollToTop: function(){\n        window.scrollTo(0, 0);\n    },\n\n    setTextHeight: function($textEl) {\n        $($textEl).css('min-height', 'auto' );\n        var height = parseInt($($textEl)[0].scrollHeight);\n        $($textEl).css('min-height', height );\n    },\n\n    textCounter: function($textEl) {\n        var $counter = $($textEl).parent().find('.combition-textarea-counter');   \n        var maxLength = $($textEl).attr('maxLength');\n        var currLength = $($textEl).val().length;\n\n        if ($counter) {\n            $($counter)[0].innerHTML = currLength+' / '+maxLength;\n        }\n    },\n\n    textAreaState: function($textEl, $state = 'click', $dataId = null, $type = '', $detailId = null) {\n        var self = this;\n\n        if ($type == 'description') {\n            self.textCounter($textEl);\n        }\n\n        if ($state == 'focusout') {\n            if ($($textEl).hasClass('editable')) {\n                $($textEl).removeClass('editable');\n\n                $($textEl).parent().find('.combition-textarea-counter').addClass('hide');\n\n                var value = $($textEl).val().trim();\n                \n                if ($dataId != null || $type == 'detail' && $detailId != null) {\n                    if (selectedArtworks.length > 0 && value != null) {\n                        for (let i = 0; i < selectedArtworks.length; i++) {\n                            var item = selectedArtworks[i];\n                            if (i == $dataId ) {\n                                if ($type == 'detail') {\n                                    var $detail = item['detail_data'];\n                                    for (let index = 0; index < $detail.length; index++) {\n                                        if (index == $detailId) {\n                                            $detail[index]['description'] = value;\n                                            break;\n                                        }\n                                    }\n                                } else {\n                                    selectedArtworks[i]['description'] = value;\n                                }\n                                \n                                break;\n                            }\n                        }\n                    }\n                    \n                } else {\n                    \n                    if ($type == 'title') {\n                        postTitle = value;\n                    } else if ($type == 'description') {\n                        postDescription = value;\n                    }\n                }\n\n                self.dataHasChanged = true;\n            }\n        } else {\n            if (!$($textEl).hasClass('editable')) {\n                $($textEl).addClass('editable');\n                $($textEl).parent().find('.combition-textarea-counter').removeClass('hide');\n            }\n        }\n\n        setTimeout(function() {\n            self.setTextHeight($textEl);\n        }, 400);\n    },\n\n    quarterRatioResize : function($optEl = null) {\n        var self = this;\n\n        function calculation($el) {\n            \n            if ($($el).hasClass('has-height')) {\n                var newHeight = $($el).parents('.detail-effect').height();\n\n                $($el).css('height', newHeight);\n            } else {\n                var currWidth = $($el).width();\n                var newHeight = (currWidth / self.cropRatio.width) * self.cropRatio.height;\n\n                $($el).css('height', newHeight);\n            }\n        }\n\n        if ($optEl) {\n            calculation($optEl);\n        } else {\n            $('body').find('.quarter-ratio').each(function() {\n                calculation($(this));\n\n                var dataCrop = {\n                    x : $(this).data('detail-x'),\n                    y : $(this).data('detail-y'),\n                    width : $(this).data('detail-width'),\n                    height : $(this).data('detail-height'),\n                };\n\n                var artWidth = $(this).width();\n                var cropImage = $(this).find('img');\n                var imgSrc = cropImage.attr('src');\n\n                //disinihere\n                self.cropImage(cropImage, imgSrc, dataCrop, artWidth, true);\n            });\n        }\n    },\n\n    initDetail: function() {\n        var self = this;\n\n        self.$detailArt.each(function() {\n\n            self.$html.removeClass('is-loading');\n            self.$html.addClass('is-loading');\n            var selfArt = $(this);\n            self.detailResult = null;\n\n            if (self.cropprContainer != null) {\n                self.cropprContainer.destroy();\n            }\n            \n            var $closeButton = selfArt.find('.close-panel-detail');\n            var $doneButton = selfArt.find('[href=\"#detail-done\"]');\n            var $detailImg = selfArt.find('#detail-image');\n            var imgSrc = self.detailImage;\n\n            self.detailPopup.open();\n            \n            var cellWdith = $detailImg.parent().width();\n\n            var cropW = cellWdith / self.cropWidthRatio;\n            var cropH = (cropW / self.cropRatio.width) * self.cropRatio.height;\n            var cropSize = [Math.round(cropW), Math.round(cropH), 'px'];\n\n            selfArt.find('.img-src').attr('src', imgSrc);\n            selfArt.find('.detail-result-item').removeClass('cropted');\n            $doneButton.addClass('inactive');\n\n            self.cropprContainer = new Croppr('#detail-image', {\n                minSize : cropSize,\n                startSize : cropSize,\n                aspectRatio : (cropH / cropW),\n                onInitialize: function(instance, mediaNode) {\n                    self.$html.removeClass('is-loading');\n                }\n            });\n\n            selfArt.find('.detail-result-item').each(function() {\n                self.quarterRatioResize($(this));\n            });\n\n            var cropprEl = self.cropprContainer.containerEl;\n\n            if (Foundation.MediaQuery.is('medium')) {\n                var $cropButton = selfArt.find('.crop-button-container').clone().removeClass('hide');\n                $cropButton.appendTo($(cropprEl).find('.croppr-region'));\n            }\n\n            $closeButton.on('click', function(e) {\n                e.preventDefault();\n\n                self.detailResult = null;\n            });\n\n            $(document).on('click', '.crop-button-container', function(e) {\n                e.preventDefault();\n                console.log('clicked');\n\n                if (!$(this).hasClass('hide')) {\n                    var dataCrop = self.cropprContainer.getValue();\n\n                    self.cropprContainer.reset();\n\n                    selfArt.find('.detail-result-item:not(.cropted)').each(function() {\n                        $(this).addClass('cropted');\n\n                        var detailWidth = $(this).width();\n                        var cropImage = $(this).find('.detail-image');\n\n                        $(this).data('detail-x', dataCrop.x);\n                        $(this).data('detail-y', dataCrop.y);\n                        $(this).data('detail-width', dataCrop.width);\n                        $(this).data('detail-height', dataCrop.height);\n\n                        self.cropImage(cropImage, imgSrc, dataCrop, detailWidth, true);\n\n                        if (self.detailResult == null) {\n                            self.detailResult = [];\n                        }\n\n                        dataCrop.description = '';\n\n                        self.detailResult.push(dataCrop);\n\n                        if (selfArt.find('.detail-result-item:not(.cropted)').length == 0) {\n                            $(cropprEl).find('.crop-button-container').hide();\n                            $(cropprEl).find('.croppr-region').hide();\n                            $(cropprEl).find('.croppr-overlay').hide();\n                            $(cropprEl).find('.croppr-handleContainer').hide();\n                        } else {\n                            $doneButton.removeClass('inactive');\n                        }\n                        \n                        return false;\n                    });\n                }\n            });\n\n            $doneButton.on('click', function(e) {\n                e.preventDefault();\n\n                if (self.detailResult) {\n\n                    self.addSelectedArtworks(self.tempCurrentIdx, '', self.tempCurrentArtworkId, 0, 0, self.tempChangeArtworkEffect);\n\n                    self.tempCurrentArtworkId = 0;\n                    self.tempCurrentIdx = null;\n                    self.tempChangeArtId = 0;\n                    self.detailResult = null;\n                }\n            });\n\n            setTimeout(function() {\n                self.$html.removeClass('is-loading');\n            }, 800);\n        });\n    },\n\n    addSelectedArtworks: function($id, imgSrc = '', $art_id, $compare_id = 0, $change_id = 0, $change_effect = '') {\n        var self = this;\n        var dataAvailable = false;\n        \n        self.$html.addClass('is-loading');\n        if (selectedArtworks.length > 0 && $id != null) {\n            for (let i = 0; i < selectedArtworks.length; i++) {\n                var item = selectedArtworks[i];\n                if (i == $id ) {\n                    dataAvailable = true;\n\n                    /* if ($change_effect) {\n                        selectedArtworks[i]['temp_data'] = JSON.parse(JSON.stringify(selectedArtworks[i]));\n                    } else {\n                        selectedArtworks[i]['temp_data'] = {};\n                    } */\n\n                    selectedArtworks[i]['artwork_id']   = 0;        \n                    selectedArtworks[i]['description']  = '';\n                    selectedArtworks[i]['effect']       = '';\n                    selectedArtworks[i]['compare_data'] = {};\n                    selectedArtworks[i]['compare_data'].compare_artwork_id = 0;\n                    selectedArtworks[i]['detail_data'] = self.defaultDetail;\n                    selectedArtworks[i]['new_effect'] = false;\n                    selectedArtworks[i]['x'] = '0';\n                    selectedArtworks[i]['y'] = '0';\n\n                    if ($change_id > 0 && $change_id != $art_id) {\n                        selectedArtworks[i]['artwork_id'] = $change_id;\n                        selectedArtworks[i]['compare_data'].compare_artwork_id = $compare_id; \n                        //self.renderFocalSelect(imgSrc, false, $change_id);\n                    } else if ($change_effect) {\n                        selectedArtworks[i]['new_effect'] = true;\n                        selectedArtworks[i]['artwork_id'] = $art_id;\n                        selectedArtworks[i]['effect'] = $change_effect;\n\n                        if ($change_effect == 'detail') {\n                            var dData = JSON.parse(JSON.stringify(self.detailResult));\n                            selectedArtworks[i]['detail_data'] = dData;\n                            //self.$html.removeClass('is-loading');\n                        } else if ($change_effect == 'compare') {\n                            selectedArtworks[i]['compare_data']['compare_artwork_id'] = $compare_id;\n                            selectedArtworks[i]['compare_data']['x'] = '0';\n                            selectedArtworks[i]['compare_data']['y'] = '0';\n                            //self.renderFocalSelect(imgSrc, false, selectedArtworks[i]['artwork_id'], true);\n                        }\n                    }\n                }\n            }\n        }\n        if (!dataAvailable) {\n            arr = {};\n            arr.artwork_id = $art_id;\n            arr.description = '';\n            arr.effect = '';\n            arr.compare_data = {};\n            arr.compare_data.compare_artwork_id = $compare_id; \n            arr.detail_data = self.defaultDetail;\n            arr.temp_data = JSON.parse(JSON.stringify(arr));\n            arr.x = '0';\n            arr.y = '0';\n\n            selectedArtworks.push(arr);\n\n            //self.renderFocalSelect(imgSrc, false, $art_id);\n        }\n\n        if ($change_effect) {\n            combitionHandler.renderItem($change_effect, $id);\n        } else {\n            combitionHandler.renderItem();\n        }\n        self.dataHasChanged = true;\n    },\n\n    relabelResult: function($obj, x, y, imgX, imgY) {\n        return false;\n\n        var self = this;\n\n        var labelX = ((x - imgX) / imgX).toFixed(3);\n        var labelY = ((y - imgY) / imgY).toFixed(3) * -1;\n\n        if (imgX == 0) labelX = 0.000;\n        if (imgY == 0) labelY = 0.000;\n\n        var resultLabel = (labelX)+', '+(labelY);\n        $obj.find('.result').text(resultLabel);\n    },\n\n    renderFocalSelect: function(imgSrc, setCover = false, artId = 0, isCompare = false) {\n        var self = this;\n\n        self.$html.removeClass('is-loading');\n        self.$html.addClass('is-loading');\n        self.$coverArt.each(function() {\n            var selfArt = $(this);\n            self.detailResult = null;\n            \n\n            if (self.cropprContainer != null) {\n                self.cropprContainer.destroy();\n            }\n        \n            var imgPosX = 0;\n            var imgPosY = 0;\n\n            var img = new Image();\n            img.onload = function() {\n                imgPosX = this.width / 2;\n                imgPosY = this.height / 2;\n            }\n            img.src = imgSrc;\n            \n            //var $focalResult = selfArt.find('.focal-result');\n\n            selfArt.find('.img-src').attr('src', imgSrc);\n\n            self.coverPopup.open();\n\n            var cropW = 16;\n            var cropH = 16;\n            var cropSize = [Math.round(cropW), Math.round(cropH), 'px'];\n\n            self.cropprContainer = new Croppr('#cover-image', {\n                minSize : cropSize,\n                maxSize : cropSize,\n                startSize : cropSize,\n                aspectRatio : 1,\n                onCropMove: function(data) {\n                    //self.relabelResult($focalResult, data.x + 8, data.y + 8, imgPosX, imgPosY);\n                },\n                onInitialize: function(instance, mediaNode) {\n                    self.$html.removeClass('is-loading');\n                }\n            });\n\n            var cropprEl = self.cropprContainer.containerEl;\n\n            /* $focalResult.each(function() {\n                $(this).removeClass('hide');\n                var dataCrop = self.cropprContainer.getValue();\n\n                //self.relabelResult($(this), dataCrop.x + 8, dataCrop.y + 8, 0, 0);\n            }); */\n\n            $(cropprEl).find('.croppr-overlay').on('click', function(e) {\n                self.cropprContainer.moveTo(e.offsetX - 8, e.offsetY - 8);\n                //self.relabelResult($focalResult, e.offsetX - 8, e.offsetY - 8, imgPosX, imgPosY);\n            });\n\n            selfArt.find('[href=\"#crop-button\"]').on('click', function(e) {\n                e.preventDefault();\n\n                var dataCrop = self.cropprContainer.getValue();\n                var cropX = (((dataCrop.x + 8) - imgPosX) / imgPosX).toFixed(3);\n                var cropY = (((dataCrop.y + 8) - imgPosY) / imgPosY).toFixed(3) * -1;\n\n                if (setCover) {\n                    cover['x'] = cropX;\n                    cover['y'] = cropY;\n                } else if(artId) {\n                    for (let i = 0; i < selectedArtworks.length; i++) {\n                        if (selectedArtworks[i]['artwork_id'] == artId) {\n                            if (isCompare) {\n                                selectedArtworks[i]['compare_data']['x'] = cropX;\n                                selectedArtworks[i]['compare_data']['y'] = cropY;\n                            } else {\n                                selectedArtworks[i]['x'] = cropX;\n                                selectedArtworks[i]['y'] = cropY;\n                            }\n                            break;\n                        }\n                    }\n                }\n\n                self.coverPopup.close();\n                selfArt.find('.img-src').attr('src', '');\n                $(this).unbind('click');\n\n                self.$html.addClass('is-loading');\n                setTimeout(function() {\n                    self.$html.removeClass('is-loading');\n                }, 500);\n            });\n        });\n    },\n\n    addSelectedCoverArtworks: function($id, imgSrc){\n        //coversini\n        var self = this;\n        cover['artwork_id'] = $id;\n        cover['x'] = '0';\n        cover['y'] = '0';\n        self.tempCurrentCoverArtwork = $id;\n        self.dataHasChanged = true;\n\n        self.renderFocalSelect(imgSrc, true);\n    },\n\n    resetArtworks: function($id) {\n        var self = this;\n        if (selectedArtworks.length > 0 && $id != null) {\n            for (let i = 0; i < selectedArtworks.length; i++) {\n                var item = selectedArtworks[i];\n                if (i == $id ) {\n                    \n                    var tempData = selectedArtworks[i]['temp_data'];\n                    selectedArtworks[i] = JSON.parse(JSON.stringify(tempData));\n                    selectedArtworks[i]['temp_data'] = JSON.parse(JSON.stringify(tempData));\n\n                    break;\n                }\n            }\n            combitionHandler.renderItem('clear', $id);\n            self.dataHasChanged = true;\n        }\n    },\n\n    removeArtworks: function($id) {\n        var self = this;\n        if (selectedArtworks.length > 0 && $id != null) {\n            \n            for (let i = 0; i < selectedArtworks.length; i++) {\n                var item = selectedArtworks[i];\n                if (i == $id ) {\n                    selectedArtworks.splice(i, 1); \n                    break;\n                }\n            }\n\n            \n            combitionHandler.renderItem('delete', $id);\n            self.dataHasChanged = true;\n        }\n    },\n    \n    moveArtwork: function(index, inc = false) {\n        var self = this;\n\n        var moveIndex = index;\n\n        if (inc) {\n            moveIndex++;\n        } else {\n            moveIndex--;\n        }\n\n        var moveData  = JSON.parse(JSON.stringify(selectedArtworks[moveIndex]));\n        var firstData = JSON.parse(JSON.stringify(selectedArtworks[index]));\n\n        selectedArtworks[index] = moveData;\n        selectedArtworks[moveIndex] = firstData;\n\n        if (inc) {\n            combitionHandler.renderItem('move-down', index);\n        } else {\n            combitionHandler.renderItem('move-up', index);\n        }\n\n        self.dataHasChanged = true;\n    },\n\n    duplicateArtworks: function($id) {\n        var theData = null;\n        var self = this;\n        if ($id != null) {\n            for (let i = 0; i < selectedArtworks.length; i++) {\n                var item = selectedArtworks[i];\n                if (i == $id ) {\n                    theData = JSON.parse(JSON.stringify(item));\n                    break;\n                }\n            }\n    \n            if (theData) {\n                selectedArtworks.splice($id, 0, theData);\n                combitionHandler.renderItem('duplicate', $id);\n                self.dataHasChanged = true;\n            }\n        }\n    },\n\n    reinitIdx : function() {\n        var self = this;\n        $tempIdx = 0;\n        self.$artworkItems.find('.artwork-item').each(function() {\n            $(this).data('idx', $tempIdx);\n            $(this).attr('data-idx', $tempIdx);\n            $(this).find('[data-idx]').data('idx', $tempIdx);\n            $(this).find('[data-idx]').attr('data-idx', $tempIdx);\n\n            $tempIdx++;\n        });\n    },\n\n\trenderItem: function($mode = '', $rowId = null, $modeOpt = {}) {\n\t\tvar self = this;\n        if (selectedArtworks != null) {\n            \n            if ($mode == 'delete') {\n                self.$artworkItems.find('.artwork-item[data-idx='+$rowId+']').remove();\n\n                self.reinitIdx();\n            } else if ($mode == 'move-up') {\n                var $targetEl = self.$artworkItems.find('.artwork-item[data-idx='+($rowId-1)+']');\n                var itemTop = $targetEl.offset().top - $('header').outerHeight();\n\n                self.$artworkItems.find('.artwork-item[data-idx='+$rowId+']').insertBefore($targetEl);\n\n                self.reinitIdx();\n\n                window.scrollTo(0, itemTop);\n            } else if ($mode == 'move-down') {\n                var $targetEl = self.$artworkItems.find('.artwork-item[data-idx='+($rowId+1)+']');\n                var itemTop = $targetEl.offset().top - ($('header').outerHeight() * 1.5);\n\n                self.$artworkItems.find('.artwork-item[data-idx='+$rowId+']').insertAfter($targetEl);\n\n                self.reinitIdx();\n\n                window.scrollTo(0, itemTop);               \n            } else if ($mode == 'duplicate') {\n                self.$artworkItems.find('.artwork-item[data-idx='+$rowId+']').clone().insertAfter(self.$artworkItems.find('.artwork-item[data-idx='+$rowId+']'));\n\n                self.reinitIdx();\n            } else {\n                self.$html.addClass('is-loading');\n\n                if ($mode == '') {\n                    self.$artworkItems.html('');\n                    self.$messageContainer.html('');\n                }\n\n                $.ajax({\n                    type: 'post',\n                    url: myAjax.ajax_url,\n                    data: {\n                        action: 'get_artwork_data',\n                        artworks : selectedArtworks\n                    },\n                    success: function(response) {\n                        if (response['status'] == true) {\n                            var $data = response['data'];\n    \n                            for (let i = 0; i < selectedArtworks.length; i++) {\n                                var item = selectedArtworks[i];\n                                var html = self.$template.html();\n                                var htmlDetail = [];\n                                var artwork = $data[item['artwork_id']];\n                                var compareArtworkID = (item['compare_data']) ? item['compare_data']['compare_artwork_id'] : 0 ;  \n                                var compareArtwork = $data[compareArtworkID];\n                                var detailData = item['detail_data'];\n    \n                                if (artwork) {\n                                    $desc = item['description'] ? item['description'] : '';\n                                    \n                                    html = html.replace(/\\##artworkidx##/g, i);\n                                    html = html.replace(/\\##nameofart##/g, artwork['title']);\n                                    html = html.replace(/\\##authorofart##/g, artwork['author']);\n                                    html = html.replace(/\\##imgartsrc##/g, artwork['image']);\n                                    html = html.replace(/\\##id-artwork##/g, item['artwork_id']);\n                                    html = html.replace(/\\##artdesc##/g, $desc);                                    \n                                    html = html.replace(/\\##artdesccounter##/g, $desc.length+' / 500');\n                                    html = html.replace(/\\##idartworkcompare##/g, compareArtworkID);\n                                    html = html.replace(/\\##artworkeffect##/g, item['effect']);\n                                    html = html.replace(/\\##artworkimgsrc##/g, artwork['image']);\n\n                                    if (!item['new_effect']) {\n                                        html = html.replace(/\\##clear-status##/g, 'inactive');\n                                    }\n\n                                    if (item['effect'] == 'compare' && compareArtwork != null) {\n                                        html = html.replace(/\\##nameofartcompare##/g, compareArtwork['title']);\n                                        html = html.replace(/\\##authorofartcompare##/g, compareArtwork['author']);\n                                        html = html.replace(/\\##imgartcomparesrc##/g, compareArtwork['image']);\n                                        html = html.replace(/\\##art-container##/g, 'art-container small-6 medium-6');\n                                        html = html.replace(/\\##art-container-compare##/g, 'art-container-compare small-6 medium-6');\n                                        html = html.replace(/\\##artdesctitle##/g, 'Why are you comparing these artworks?');\n                                    } else {\n                                        if (item['effect'] == 'detail' && detailData != null) {\n                                            for (let index = 0; index < detailData.length; index++) {\n                                                var detail = self.$templateDetail.html();\n                                                var detailItem = detailData[index];\n                                                \n                                                detail = detail.replace(/\\##detailidx##/g, index);\n                                                detail = detail.replace(/\\##imgartsrc##/g, artwork['image']);\n                                                detail = detail.replace(/\\##artdesc##/g, detailItem['description']);\n                                                detail = detail.replace(/\\##detailx##/g, detailItem['x']);\n                                                detail = detail.replace(/\\##detaily##/g, detailItem['y']);\n                                                detail = detail.replace(/\\##detailwidth##/g, detailItem['width']);\n                                                detail = detail.replace(/\\##detailheight##/g, detailItem['height']);\n                                                detail = detail.replace(/\\##artdesccounter##/g, detailItem['description'].length+' / 500');\n        \n                                                htmlDetail.push(detail);\n                                            }\n                                        }\n                                        \n                                        html = html.replace(/\\##art-container##/g, 'art-container');\n                                        html = html.replace(/\\##art-container-compare##/g, 'art-container-compare hide');\n                                        html = html.replace(/\\##artdesctitle##/g, 'What’s going on in this artwork?');\n                                    }\n    \n                                    if ($mode) {\n                                        if (i == $rowId && html) {\n                                            self.$artworkItems.find('.artwork-item[data-idx=\"'+i+'\"]').replaceWith(html);\n                                        }\n                                        \n                                    } else {\n                                        self.$artworkItems.append(html);\n                                    }\n    \n                                    for (let index = 0; index < htmlDetail.length; index++) {\n                                        var htmlItem = htmlDetail[index];\n                                        \n                                        self.$artworkItems.find('.artwork-item[data-idx=\"'+i+'\"]').find('.artwork-detail').append(htmlItem);\n                                    }\n    \n                                    artworkHandler.reinitializeMasonry();\n\n                                    if ($mode && i == $rowId) {\n                                        break;\n                                    }\n                                }\n                            }\n    \n                            self.$artworkItems.find('.artwork-item').each(function() {\n                                var $artwork = $(this);\n                    \n                                self.setTextHeight($artwork.find('.combition-textarea'));\n                    \n                                $artwork.find('.grid-artwork-detail').each(function() {\n                                    var $grid = $(this);\n                                    var gridIdx = $grid.data('detail-idx');\n                    \n                                    $grid.find('.art-img').each(function() {\n                                        var dataCrop = {\n                                            x : $(this).data('detail-x'),\n                                            y : $(this).data('detail-y'),\n                                            width : $(this).data('detail-width'),\n                                            height : $(this).data('detail-height'),\n                                        }\n                    \n                                        var artWidth = $(this).width();\n                                        var cropImage = $(this).find('.detail-image');\n                                        var imgSrc = cropImage.attr('src');\n                    \n                                        self.quarterRatioResize($(this));\n                    \n                                        self.cropImage(cropImage, imgSrc, dataCrop, artWidth);\n                                    });\n                                });\n                            });\n                            self.$html.removeClass('is-loading');\n                        }\n                    }\n                });\n            }\n        }\n        self.dataInput.$combitionTextarea.each(function() {\n            self.setTextHeight($(this));\n        });\n\t},\n\n    processCompareArtwork: function( idArt, idArtCompare ){\n        $('html').addClass('loading');\n        artworkHandler.resetPanel();\n        artworkHandler.reinitializeMasonry();\n\n        var currArt = idArtCompare;\n        var elPanel = $('body').find('#compare-artwork');\n\n        elPanel.find('[data-art-id=\"'+idArt+'\"]').addClass('hide');\n\n        if (currArt) {\n            elPanel.find('.masonry-container').addClass('is-selecting');\n            elPanel.find('[data-art-id=\"'+currArt+'\"]').addClass('selected');\n            elPanel.find('.selecting-artwork').addClass('is-active');\n        }\n        $('html').removeClass('loading');\n    },\n\n    deleteCommunityExhibition: function($id, url){\n\t\tvar self = this;\n        \n        if (selectedArtworks != null) {\n            $.ajax({\n                type: 'post',\n                url: myAjax.ajax_url,\n                data: {\n                    action: 'delete_community_exhibitions',\n                    post_id: $id,\n                },\n                beforeSend: function(){\n                    self.$html.addClass('loading');\n                },\n                success: function(response) {\n                    self.$messageContainer.html('');\n                    if (response['status']) {\n                        self.$messageContainer.append('<h4>Data deleted successfully!</h4>');\n                        self.dataHasChanged = false;\n                    } else {\n                        self.$messageContainer.append('<h4>Data deleted failed!</h4>');\n                    }\n                    self.$html.removeClass('loading');\n                    self.scrollToTop();\n                    window.location.href = url;\n                    //window.location.search = '';\n                }\n            });\n        }\n    },\n\n    saveCommunityExhibition: function($id, $publish=false, $publish_state=false){\n\t\tvar self = this;\n        var publishState = ($publish_state) ? 'published' : 'draft';\n\n        if (selectedArtworks != null) {\n            $.ajax({\n                type: 'post',\n                url: myAjax.ajax_url,\n                data: {\n                    action: 'save_community_exhibitions',\n                    artworks: selectedArtworks,\n                    cover_data: cover,\n                    colors_data: colors,\n                    post_id: $id,\n                    post_title: postTitle,\n                    post_description: postDescription,\n                    is_publish: $publish,\n                    publish_state: publishState\n                },\n                beforeSend: function(){\n                    self.$html.addClass('loading');\n                },\n                success: function(response) {\n                    if ($publish) {\n\n                        if ($publish_state) {\n                            self.$main.removeClass('draft');        \n                            self.$main.addClass('published');\n    \n                            self.revealNotif.$publishTitle.html(response['title']); \n                            self.revealNotif.$publishLink.html(response['link']);\n                            self.revealNotif.$publishLink.attr('href', response['link']);\n                            self.revealNotif.$visitButton.attr('href', response['link']);\n                            self.revealNotif.$element.foundation('open');\n    \n                        } else {\n                            self.$main.removeClass('published');        \n                            self.$main.addClass('draft');\n                        }\n                    \n                        self.dataHasChanged = false;\n                        self.$html.removeClass('loading');\n                        self.scrollToTop();\n    \n                    } else {\n                        self.$messageContainer.html('');\n                        if (response['status']) {\n                            self.$messageContainer.append('<h4>Data saved successfully!</h4>');\n                            self.dataHasChanged = false;\n                        } else {\n                            self.$messageContainer.append('<h4>Data saved failed!</h4>');\n                        }\n                        self.$html.removeClass('loading');\n                        self.scrollToTop();\n                        if (self.tempUrl) {\n                            location.href = self.tempUrl;\n                        }\n                    }\n                    self.heightPanelExpand = self.toolbar.$btnExpand.parent().outerHeight() - 50;\n                    self.toolbar.$btnExpand.parent().css({\n                        'margin-bottom': '-'+self.heightPanelExpand+'px'\n                    })\n                }\n            });\n        }\n    },\n\n    publishCommunityExhibhition: function($unpublish = false){\n        var self = this;\n        var state = ($unpublish == false) ? 'published' : 'draft';\n        $.ajax({\n            type: 'post',\n            url: myAjax.ajax_url,\n            data: {\n                action: 'publish_community_exhibition',\n                post_id: currentComExID,\n                state: state\n            },\n            beforeSend: function(){\n                self.$html.addClass('loading');\n            },\n            success: function(response) {\n                self.$messageContainer.html('');\n                if (response['status']) {\n\n                    if ($unpublish == false) {\n                        self.$main.removeClass('draft');        \n                        self.$main.addClass('published');\n\n                        self.revealNotif.$publishTitle.html(response['title']); \n                        self.revealNotif.$publishLink.html(response['link']);\n                        self.revealNotif.$publishLink.attr('href', response['link']);\n                        self.revealNotif.$visitButton.attr('href', response['link']);\n                        self.revealNotif.$element.foundation('open');\n\n                    } else {\n                        self.$main.removeClass('published');        \n                        self.$main.addClass('draft');\n\n                    }\n                }\n                \n                self.dataHasChanged = false;\n                self.$html.removeClass('loading');\n                self.scrollToTop();\n\n                // self.dataHasChanged = false;\n                // if (self.tempUrl) {\n                //     location.href = self.tempUrl;\n                // }\n            }\n        });\n        \n    },\n\n    createNewExhibition: function(){\n        // create new exhibition\n        $('.create-exhibition form').on('submit', function() {\n            var $panel = $('.create-exhibition');\n            var title = $('.create-exhibition form input[name=\"exhibition-title\"]').val()\n            title = title.trim()\n            if (typeof title === 'string' && title.length === 0) {\n                alert('Enter exhibition title')\n            } else {\n                $panel.addClass('loading');\n                var data = {\n                    action: 'cornell_museum_create_user_community_exhibition',\n                    title: title,\n                    artworkId: 0,\n                }\n                $.ajax({\n                    type: 'POST',\n                    url: '/wp-admin/admin-ajax.php',\n                    data: data,\n                    dataType: 'json'\n                }).done(function(response) {\n                    window.location = '/community-exhibition-creator/editor/?community-exhibition-id=' + response.ID;\n                    $panel.removeClass('loading');\n                }).fail(function(error) {\n                    console.log(error);\n                    alert('Error saving community exhibition');\n                    $panel.removeClass('loading');\n                })\n            }\n            return false;\n        })\n\n        \n        $('[href=\"#create-exhibition\"]').on('click', function(e){\n            e.preventDefault();\n            $('html').addClass('loading');\n\n            $.ajax({\n                type: 'POST',\n                url: '/wp-admin/admin-ajax.php',\n                data: {\n                    action: 'cornell_museum_get_current_user_id'\n                },\n                dataType: 'json'\n            }).done(function(response) {\n                if (response['id'] > 0) {\n                    $('#create-exhibition-modal').foundation('open');\n                } else {\n                    $('#login-register-modal').foundation('open');\n                }\n                $('html').removeClass('loading');\n            }).fail(function(error) {\n                $('html').removeClass('loading');\n            })\n            \n        })\n    },\n\n    init : function() {\n        var self = this;\n        var changePagePopup     = new Foundation.Reveal(self.$changePage);\n        self.changeEffectPopup  = new Foundation.Reveal(self.$changeEffect);\n        self.detailPopup        = new Foundation.Reveal(self.$detailArt);\n        self.coverPopup         = new Foundation.Reveal(self.$coverArt);\n        \n        self.dataHasChanged = false;\n\n        if (selectedArtworks) {\n            for (let i = 0; i < selectedArtworks.length; i++) {\n                //init temp_data\n                if (selectedArtworks[i]['effect']) {\n                    selectedArtworks[i]['temp_data'] = {};\n                    selectedArtworks[i]['temp_data'] = JSON.parse(JSON.stringify(selectedArtworks[i]));\n                    /* selectedArtworks[i]['temp_data']['effect'] = selectedArtworks[i]['effect'];\n                    if (selectedArtworks[i]['effect'] == 'compare') {\n                        var tempArr = {};\n                        tempArr['art'] = JSON.parse(JSON.stringify(selectedArtworks[i]['compare_data']));\n                        selectedArtworks[i]['temp_data']['effect_param'] = tempArr\n                    } else if (selectedArtworks[i]['effect' == 'detail']) {\n                        selectedArtworks[i]['temp_data']['effect_param'] = JSON.parse(JSON.stringify(selectedArtworks[i]['detail_data']));\n                    } */\n                }\n                selectedArtworks[i]['new_effect'] = false;\n            }\n            self.renderItem();\n        }\n        self.setTextHeight(self.dataInput.$combitionTitle);\n\n        self.$saveData.on('click', function(e){\n            e.preventDefault();\n            \n            var id = $(this).data('post-id');\n            self.saveCommunityExhibition(id);\n        });\n\n        self.$deleteData.on('click', function(e){\n            e.preventDefault();\n            \n            var id = $(this).data('post-id');\n            var url = $(this).data('url-back');\n            url = window.location.origin+'/'+url;\n            self.deleteCommunityExhibition(id, url);\n        });\n\n        self.dataInput.$combitionContainer.each(function(e) {\n            var combi = $(this);\n            var descButton = combi.find('[href=\"#add-exhibition-desc\"]');\n            var descContent = combi.find('.combition-textarea');\n\n            descButton.on('click', function(e) {\n                e.preventDefault();\n\n                $(this).addClass('hide');\n                descContent.removeClass('hide');\n                descContent.click();\n                descContent.focus();\n            });\n\n            descContent.on('focusout', function() {\n                if (!$(this).val()) {\n                    $(this).addClass('hide');\n                    descButton.removeClass('hide');\n                }\n            });\n        });\n\n        self.dataInput.$combitionTextarea.on('click mouseover focusout input', function(e) {\n            if (e.type == 'input') {\n                self.textCounter($(this));\n                self.setTextHeight(this);\n            } else {\n                if (e.type == 'mouseover') {\n                    var selfText = this;\n                    $(this).click();\n                    $(this).focus();\n                    setTimeout(function(){ selfText.selectionStart = selfText.selectionEnd = 10000; }, 0);\n                }\n                self.textAreaState($(this), e.type, null, 'description');\n            }\n        });\n\n        self.dataInput.$combitionTitle.on('click focusout', function(e) {\n            self.textAreaState($(this), e.type, null, 'title');\n        });\n\n        self.$leavePage.on('click', function(e){\n            var url = $(this).attr('href');\n            if (url) {\n                if (url.indexOf('#') === -1) {\n                    self.tempUrl = url;\n                    if (self.dataHasChanged) {\n                        e.preventDefault();\n                        changePagePopup.open();\n                    }\n                }\n            }\n        });\n\n        self.$discardData.on('click', function(e){\n            e.preventDefault();\n            if (self.tempUrl) {\n                location.href = self.tempUrl;\n            }\n        })\n\n        self.$cancelEdit.on('click', function(e){\n            e.preventDefault();\n\n            self.tempCurrentIdx = null;\n            self.tempCurrentArtworkId = 0;\n            self.tempCurrentArtworkIDCompare = 0;\n            self.tempChangeArtworkEffect = null;\n            self.changeEffectPopup.close();\n        });\n\n        self.$applyNewEffect.on('click', function(e){\n            e.preventDefault();\n            \n            if (self.tempChangeArtworkEffect == 'compare') { \n                self.$tempObjCompare.click();\n                self.processCompareArtwork(self.tempCurrentArtworkId, self.tempCurrentArtworkIDCompare);\n                self.$tempObjCompare = null;\n            } else if (self.tempChangeArtworkEffect == 'detail') {\n                self.initDetail();\n                \n                self.detailImage = null;\n            }\n\n            self.changeEffectPopup.close();\n        });\n\n        $('body').on('click', '.art-img', function() {\n            var parent = $(this).parents('.artwork-item');\n            self.tempCurrentIdx = parent.data('idx');\n            self.tempChangeArtId = parent.data('id-artwork');\n\n            $('body').find('[data-open=\"select-artwork\"]').click();\n        });\n\n        $('body').on('click', '.art-img-compare', function() {\n            var $thisParent = $(this).parents('.artwork-item');\n            $thisParent.find('.toolbar-artwork').find('[href=\"#compare-item\"]').click();\n        });\n\n        $('body').on('click mouseover focusout input', '.combition-textarea', function(e) {\n            var parent = $(this).parents('.artwork-item');\n            var itemIdx = parent.data('idx');\n\n            if (e.type == 'input') {\n                self.textCounter($(this));\n                self.setTextHeight($(this));\n            } else {\n                if (e.type == 'mouseover') {\n                    var selfText = this;\n                    $(this).click();\n                    $(this).focus();\n                    setTimeout(function(){ selfText.selectionStart = selfText.selectionEnd = 10000; }, 0);\n                }\n\n                if ($(this).hasClass('detail-textarea')) {\n                    var parentGrid = $(this).parents('.grid-artwork-detail');\n                    var gridIdx = parentGrid.data('detail-idx');\n\n                    self.textAreaState($(this), e.type, itemIdx, 'detail', gridIdx);\n                } else {\n                    self.textAreaState($(this), e.type, itemIdx);\n                }\n            }\n        });\n\n        $('body').on('click', '[href=\"#detail-item\"]', function(e){\n            e.preventDefault();\n\n            var parent = $(this).parents('.toolbar-artwork');\n            var itemParent = $(this).parents('.artwork-item');\n            var artEffect = parent.data('detail-effect');\n\n            self.tempCurrentIdx = parent.data('idx');\n            self.tempCurrentArtworkId = parent.data('id-artwork');\n            self.tempChangeArtworkEffect = 'detail';\n            self.detailImage = itemParent.data('image-src');\n\n            if (artEffect) {\n                self.$changeEffect.find('.effect-style')[0].innerHTML = artEffect;\n                self.changeEffectPopup.open();\n            } else {\n                self.initDetail();\n                self.detailImage = null;\n            }\n        });\n\n        $('body').on('click', '[href=\"#copy-item\"]', function(e){\n            e.preventDefault();\n\n            var parent = $(this).parents('.toolbar-artwork');\n            self.duplicateArtworks(parent.data('idx'));\n        });\n\n        $('body').on('click', '[href=\"#remove-item\"]', function(e){\n            e.preventDefault();\n\n            var parent = $(this).parents('.toolbar-artwork');\n            self.removeArtworks(parent.data('idx'));\n        });\n        \n        $('body').on('click', '[href=\"#clear-item\"]', function(e){\n            e.preventDefault();\n\n            var parent = $(this).parents('.toolbar-artwork');\n            self.resetArtworks(parent.data('idx'));\n        });\n\n        $('body').on('click', '[href=\"#item-move-up\"]', function(e) {\n            e.preventDefault();\n\n            var parent = $(this).parents('.toolbar-artwork');\n            combitionHandler.moveArtwork(parent.data('idx'));\n        });\n\n        $('body').on('click', '[href=\"#item-move-down\"]', function(e) {\n            e.preventDefault();\n\n            var parent = $(this).parents('.toolbar-artwork');\n            combitionHandler.moveArtwork(parent.data('idx'), true);\n        });\n\n        $('body').on('click', '[href=\"#compare-item\"]', function(e) {\n            e.preventDefault();\n\n            var parent = $(this).parents('.toolbar-artwork');\n            \n            var idArtCompare = parent.data('id-artwork-compare');\n            var artEffect = parent.data('detail-effect');\n\n            self.tempCurrentIdx = parent.data('idx');\n            self.tempCurrentArtworkId = parent.data('id-artwork');\n            self.tempChangeArtworkEffect = 'compare';\n\n            if (idArtCompare > 0 || artEffect != 'compare' && artEffect) {\n                self.$changeEffect.find('.effect-style')[0].innerHTML = artEffect;\n                self.changeEffectPopup.open();\n                self.tempCurrentArtworkIDCompare = idArtCompare;\n                self.$tempObjCompare = parent.find('[data-open=\"compare-artwork\"]'); \n            } else {\n                self.processCompareArtwork(self.tempCurrentArtworkId, 0);\n                parent.find('[data-open=\"compare-artwork\"]').click();\n            }\n        });\n\n        $(window).on('resize', function() {\n            self.quarterRatioResize();\n\n            if (self.cropprContainer != null) {\n                self.cropprContainer.reset();\n            }\n        });\n\n        self.$publishExhibition.on('click', function(e){\n            e.preventDefault();\n            //self.publishCommunityExhibhition();\n            self.saveCommunityExhibition(currentComExID, true, true);\n        })\n\n        self.$unpublishExhibition.on('click', function(e){\n            e.preventDefault();\n            //self.publishCommunityExhibhition(true);\n            self.saveCommunityExhibition(currentComExID, true, false);\n        })\n\n        self.revealNotif.$copyText.on('click', function(){\n            var text =  self.revealNotif.$publishLink.attr('href');\n            var input = document.createElement('input');\n            input.setAttribute('value', text);\n            document.body.appendChild(input);\n            input.select();\n            document.execCommand('copy');\n            document.body.removeChild(input);\n        })\n\n        if (!Foundation.MediaQuery.is(\"large\")) {\n            self.heightPanelExpand = self.toolbar.$btnExpand.parent().outerHeight() - 50;\n            self.toolbar.$btnExpand.parent().css({\n                'margin-bottom': '-'+self.heightPanelExpand+'px'\n            })\n        }\n\n        self.toolbar.$btnExpand.on('click', function(){\n            $(this).parent().toggleClass('opened');\n\n            if ($(this).parent().hasClass('opened')) {\n                self.toolbar.$btnExpand.parent().css({\n                    'margin-bottom': '0px'\n                })\n                self.toolbar.$panelTransparent.addClass('active');\n                self.$header.addClass('active');\n                self.$html.addClass('disable-scroll');\n            } else {\n                self.minimizePanelExpand();\n            }\n        })\n\n        self.toolbar.$toolbar.on(\"click\", \"a\", function(){\n            self.minimizePanelExpand();\n        });\n\n        self.$artworkItems.on( \"click\", \".button-toolbar-artwork > .material-icon\", function(e) {\n            e.preventDefault();\n            var $toolbar = $(this).closest('.artwork-item').find(\".toolbar-container\");\n            $toolbar.toggleClass('opened');\n            self.toolbar.$panelTransparent.toggleClass('active');\n            self.$header.toggleClass('active');\n            self.$html.toggleClass('disable-scroll');\n        });\n\n        $(\".page-template-page-community-exhibition-editor\").on( \"click\", function(e) {\n            var $obj = $(e.target);\n            if ((!$obj.hasClass('button-toolbar-artwork')) && (!$obj.hasClass('btn-toolbar-icon')) && (!$obj.hasClass('material-icon')))  {\n                $(\".toolbar-container\").removeClass('opened');\n                \n                if ((!$obj.hasClass('button-expand')) && (!$obj.hasClass('icon')))  {\n                    self.$html.removeClass('disable-scroll');\n                    self.toolbar.$panelTransparent.removeClass('active');\n                    self.$header.removeClass('active');\n                }\n            } \n        });\n\n        self.toolbar.$panelTransparent.on('click', function(){\n            self.minimizePanelExpand();\n        })\n\n    }\n}           ","colorHandler = {\n    $elPanel     : $('body').find('#select-color'),\n    $colorScheme : $('#select-color').find('.color-scheme'),    \n    $colorBg     : $('#select-color').find('.color-background'),\n    $itemBgColor : $('#select-color').find('.item-bg-color'),\n    $itemColor   : $('#select-color').find('.item-color'),\n    $btnDone     : $('#select-color').find('.btn-done'),\n    tempColorPrimary   : null,\n    tempColorSecondary : null,\n    tempBg : null,\n    $html               : $('html'),\n\n    resetSelected: function() {\n        this.$colorScheme.removeClass('is-selecting');\n        this.$colorScheme.removeClass('is-selecting');\n        this.$itemBgColor.removeClass('selected');\n        this.$itemColor.removeClass('selected');\n        this.$btnDone.removeClass('is-active');\n        \n        this.tempColorPrimary = null;\n        this.tempColorSecondary = null;\n        this.tempBg = null;\n    },\n\n    colorSelect: function(){\n        var self = this;\n        var $item = this.$colorScheme.children(); \n        this.$colorScheme.children().each(function(){\n            $(this).on('click', function(){\n                $item.removeClass('selected');\n                $(this).toggleClass('selected');\n                self.tempColorPrimary = $(this).data('color-hex-primary');\n                self.tempColorSecondary = $(this).data('color-hex-secondary');\n        \n                if ((self.tempColorPrimary) && (self.tempBg)) {\n                    self.$btnDone.addClass('is-active');\n                }\n            })\n        });\n\n        var $bgItem = this.$colorBg.children(); \n        this.$colorBg.children().each(function(){\n            $(this).on('click', function(){\n                $bgItem.removeClass('selected');\n                $(this).toggleClass('selected');\n                self.tempBg = $(this).data('color-hex');\n\n                if ((self.tempColorPrimary) && (self.tempBg)) {\n                    self.$btnDone.addClass('is-active');\n                }\n            })\n        });\n    },\n    \n    init: function () {\n        var self = this;\n        this.colorSelect();\n        this.resetSelected();\n        if (colors) {\n            this.tempColorPrimary = colors['color_scheme']['color_primary'];\n            this.tempColorSecondary = colors['color_scheme']['color_secondary'];\n            this.tempBg = colors['background_color'] ; \n        } else {\n            colors = [];\n            colors['color_scheme'] = [];\n            colors['color_scheme']['color_primary'] = ''; \n            colors['color_scheme']['color_secondary'] = '';\n            colors['background_color'] = ''; \n        }\n        \n        $(document).on('closed.zf.reveal', '#select-color[data-reveal]', function() {\n            self.$html.addClass('is-loading');\n            self.$colorScheme.children().each(function(){\n                if ($(this).hasClass('selected')) {\n                    colors['color_scheme']['color_primary'] = $(this).data('color-hex-primary');\n                    colors['color_scheme']['color_secondary'] = $(this).data('color-hex-secondary');\n                }\n            });\n\n            self.$colorBg.children().each(function(){\n                if ($(this).hasClass('selected')) {\n                    colors['background_color'] = $(this).data('color-hex');\n                }\n            });\n            combitionHandler.dataHasChanged = true;\n\n            setTimeout(function() {\n                self.$html.removeClass('is-loading');\n            }, 200);\n        });\n\n        $(document).on('open.zf.reveal', '#select-color[data-reveal]', function() {\n            self.$itemBgColor.removeClass('selected');\n            self.$itemColor.removeClass('selected');\n            \n            var currClrSchemePrimary   = (self.tempColorPrimary != null) ? self.tempColorPrimary : colors['color_scheme']['color_primary'] ;\n            var currClrSchemeSecondary = (self.tempColorSecondary != null) ? self.tempColorSecondary : colors['color_scheme']['color_secondary'] ;\n            var currBgClr = (self.tempBg != null) ? self.tempBg : colors['background_color'] ;    \n                \n            if (currClrSchemePrimary && currClrSchemeSecondary) {\n                self.$colorScheme.addClass('is-selecting');\n                self.$elPanel.find('[data-color-hex-primary=\"'+currClrSchemePrimary+'\"][data-color-hex-secondary=\"'+currClrSchemeSecondary+'\"]').addClass('selected');\n            }\n\n            if (currBgClr) {\n                self.$colorBg.addClass('is-selecting');\n                self.$elPanel.find('[data-color-hex=\"'+currBgClr+'\"]').addClass('selected');\n            }\n\n            if ((currClrSchemePrimary) && (currBgClr)) {\n                self.$btnDone.addClass('is-active');\n            }\n        });\n    }\n}"],"file":"extra-scripts.min.js"}