AUI().ready(function () {
    var POP_UP_CONTENT_ID = 'popup-content';
    var dialogCloseButton = "<button onclick='closeDialog();'>Close</button>";

    showPopUp = function(renderUrl, title, dialogHeight) {
        AUI().use('node', 'opportal-dialog', function(A){
            A.opportalDialog.show(renderUrl, title, 'auto');
            try {
                YUI.one(".myportalwrapper ul.worpmenu").addClass('colapsed');
            } catch (exception) {

            }
        });
    }

    asyncSubmitDetailActionsForm = function(portletNamespace, actionName, actionURL) {
        var emailValid = false;
        AUI().use('node', function(A){
            var emailInput = A.one(".form_user_email input[type='text']");
            if (!emailInput) {
                emailInput = A.one(".form_user_email .control-group input[type='text']");
            }
            if (!emailInput) {
                emailInput = A.one(".form_user_email .control-group.error input[type='text']");
            }

            if(emailInput != null && emailInput != "null") {
                var email = emailInput.get('value');
                if(email == '') {
                    emailValid = false;
                    A.one(".form_user_email .control-group").addClass('error');
                    emailInput.focus();
                } else {
                    var emailRegexStr = /^[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?$/;
                    emailValid = emailRegexStr.test(email);
                }
            } else {
                emailValid = true;
            }

        });

        AUI().use('aui-io-plugin', 'io-form', 'aui-io-request', 'opportal-dialog', function (A) {
            if(emailValid) {
                A.io.request(actionURL, {
                    method: 'POST',
                    data: {actionName: actionName},
                    form: {
                        id: portletNamespace + 'sa_fm'
                    },
                    on: {
                        success: function () {
                            var responseData = this.get('responseData');
                            if (A.opportalDialog.getDialog() != undefined) {
                                A.opportalDialog.getDialog().set('bodyContent', "<br/><p>" + responseData + "</p><p>" + dialogCloseButton + "</p>");
                            }
                        }
                    }
                });
            }
        });
    }

    closeDialog = function() {
        AUI().use('node', 'opportal-dialog', function(A){
            if (A.opportalDialog.getDialog() != undefined) {
                A.opportalDialog.getDialog().hide();
            }
        });
    }

    checkFrequencyType = function(element) {
        if(element.value == "WEEKLY") {
            document.getElementById("dayOfWeek_Selector").style.display = "block";
        } else {
            document.getElementById("dayOfWeek_Selector").style.display = "none";
        }
    }

});
/**
 * Created by florinaie on 2/17/2016.
 */
AUI().ready(function(){

    if(typeof documentDetailActionsView_loadJavascript != 'undefined'){
        Liferay.provide(
            window,
            documentDetailActionsView_portletNamespace + 'showActionPopUp',
            function (selectedPopUpUrl, title, dialogHeight) {
                showPopUp(selectedPopUpUrl, title, dialogHeight);
            },
            []
        );

        AUI().use('node','io-base','aui-modal', function (A) {
            var metadataRDF = A.one("#" + documentDetailActionsView_portletNamespace + "metadataRdf");
            if(metadataRDF != null) {
                metadataRDF.on('click', function (e) {
                    e.preventDefault();
                    var anchor = A.one(e.currentTarget);
                    downloadURL(anchor.get("href"));
                });
            }
        });
    }
});
/**
 * Created by florinaie on 2/17/2016.
 */
AUI().ready(function(){

    if(typeof shareAnnotationsView_loadJavascript === 'undefined')
        return;
    else{
        AUI().use('aui-io-request', 'node', function (aui) {
            Liferay.provide(window, 'submitShareForm', function () {
                var emailAddressField = aui.one('#' + shareAnnotationsView_portletNamespace + shareAnnotationsView_emailAddressParam);
                if (!emailAddressField || !validateMultipleEmailField(emailAddressField.get('value'))) {
                    return;
                }

                aui.io.request(shareAnnotationsView_urlToShareAnnotationsGlobal, {
                    method: 'POST',
                    form: { id: shareAnnotationsView_portletNamespace + 'shareForm' },
                    dataType: 'html',
                    on: {
                        success: function () {
                            aui.one("#popup-content").html(this.get('responseData'));
                        }
                    }
                });
            });

            Liferay.provide(window, 'validateMultipleEmailField', function (val, fieldNode, ruleValue) {
                if (val == undefined || val.length == 0) {
                    return true;
                }

                var valid = false;
                var emailRegexStr = /^[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?$/;

                if (val.indexOf(',') == -1) {
                    valid = emailRegexStr.test(val);

                } else {
                    var parts = val.split(',');
                    for (var i = 0; i < parts.length; i++) {
                        var email = parts[i];
                        if (emailRegexStr.test(email) == false) {
                            valid = false;
                            break;
                        }
                    }
                    valid = true;
                }

                return valid;
            });

            // work around for validation not working at the first try
            validateMultipleEmailField('');
        });
    }
});

AUI().ready(function () {

            toggleNode = function (object) {
                AUI().use('node', function (Y) {
                    var selectedObject = Y.one(object);

                    if (selectedObject.hasClass('icon-plus')) {
                        selectedObject.removeClass('icon-plus');
                        selectedObject.addClass('icon-minus');
                        var parentNode = selectedObject.ancestor();
                        var childDiv = parentNode.one(".eu-voc-tree-container");
                        if (childDiv) {
                            childDiv.removeClass('hide');
                        }
                    }
                    else {
                        if (selectedObject.hasClass('icon-minus')) {
                            selectedObject.removeClass('icon-minus');
                            selectedObject.addClass('icon-plus');
                            var parentNode = selectedObject.ancestor();
                            var childDiv = parentNode.one(".eu-voc-tree-container");
                            if (childDiv) {
                                childDiv.addClass('hide');
                            }
                        }
                    }

                });
            }

            toggleEuVocTreeNode = function (object) {
                AUI().use('node', function (Y) {
                    var selectedObject = Y.one(object);

                    if (selectedObject.hasClass('icon-plus')) {
                        selectedObject.removeClass('icon-plus');
                        selectedObject.addClass('icon-minus');
                        var parentNode = selectedObject.ancestor().ancestor();
                        var childDiv = parentNode.one(".eu-voc-tree-container");
                        if (childDiv) {
                            childDiv.removeClass('hide');
                        }
                        var treeContainer = getTreeContainer(selectedObject);
                        displayShowHideRelation(treeContainer);
                    }
                    else {
                        if (selectedObject.hasClass('icon-minus')) {
                            selectedObject.removeClass('icon-minus');
                            selectedObject.addClass('icon-plus');
                            var parentNode = selectedObject.ancestor().ancestor();
                            var childDiv = parentNode.one(".eu-voc-tree-container");
                            if (childDiv) {
                                childDiv.addClass('hide');
                            }
                            if (!existsExpandedNode(parentNode.ancestor())) {
                                var treeContainer = getTreeContainer(selectedObject);
                                hideShowHideRelation(treeContainer);
                            }
                        }
                    }
                });
            }

            existsExpandedNode = function (object) {
                if (object.one(".icon-minus")) {
                    return true;
                }
                else {
                    return false;
                }
            }

            getTreeContainer = function (object) {
                var divContainer = object.ancestor();
                if (divContainer.hasClass('tab-pane')) {
                    return divContainer;
                }
                else {
                    return getTreeContainer(divContainer);
                }
            }

            expandAll = function (object) {
                AUI().use('node', function (Y) {
                    var treeContainer = Y.one(object).ancestor();
                    var divList = treeContainer.all(".eu-voc-tree-container");
                    divList.each(function (treeNode, k) {
                        treeNode.removeClass("hide");
                        var iconElement = treeNode.ancestor().one('.eu-voc-tree-node-icon');
                        if (iconElement) {
                            iconElement.removeClass('icon-plus');
                            iconElement.addClass('icon-minus');
                            var parentNode = iconElement.ancestor();
                            var childDiv = parentNode.one(".eu-voc-tree-container");
                            if (childDiv) {
                                childDiv.removeClass('hide');
                            }
                        }

                    });
                    //hide expand
                    var divExpand = treeContainer.all(".eu-voc-tree-expand-all");
                    divExpand.each(function (p, k) {
                        p.hide();
                    });
                    //show colapse
                    var divColapse = treeContainer.all(".eu-voc-tree-colapse-all");
                    divColapse.each(function (p, k) {
                        p.show();
                    });

                });
            }

            expandAllLabels = function (object) {
                AUI().use('node', function (Y) {
                    var treeContainer = Y.one(object).ancestor();
                    var divList = treeContainer.all(".eu-voc-tree-container");
                    divList.each(function (treeNode, k) {
                        treeNode.removeClass("hide");
                        var iconElement = treeNode.ancestor().ancestor().one('.eu-voc-tree-node-icon');
                        if (iconElement) {
                            iconElement.removeClass('icon-plus');
                            iconElement.addClass('icon-minus');
                            var parentNode = iconElement.ancestor();
                            var childDiv = parentNode.one(".eu-voc-tree-container");
                            if (childDiv) {
                                childDiv.removeClass('hide');
                            }
                        }

                    });
                    //hide expand
                    var divExpand = treeContainer.all(".eu-voc-tree-expand-all");
                    divExpand.each(function (p, k) {
                        p.hide();
                    });
                    //show colapse
                    var divColapse = treeContainer.all(".eu-voc-tree-colapse-all");
                    divColapse.each(function (p, k) {
                        p.show();
                    });

                    // show relation
                    var tabContainer = treeContainer;
                    var i = 0;
                    for (i = 0; i < 3; i++) {
                        treeContainer = treeContainer.ancestor();
                    }
                    var divColapse = treeContainer.all(".eu-voc-tree-show-hide-relation");
                    divColapse.each(function (p, k) {
                        p.show();
                    });
                });
            }

            expandAllEuvocLabels = function (object) {
                AUI().use('node', function (Y) {
                    var treeContainer = Y.one(object).ancestor().ancestor();
                    var divList = treeContainer.all(".eu-voc-tree-container");
                    divList.each(function (treeNode, k) {
                        treeNode.removeClass("hide");
                        var iconElement = treeNode.ancestor().one('.eu-voc-tree-node-icon');
                        if (iconElement) {
                            iconElement.removeClass('icon-plus');
                            iconElement.addClass('icon-minus');
                            var parentNode = iconElement.ancestor();
                            var childDiv = parentNode.one(".eu-voc-tree-container");
                            if (childDiv) {
                                childDiv.removeClass('hide');
                            }
                        }

                    });
                    //hide expand
                    var divExpand = treeContainer.all(".eu-voc-tree-expand-all");
                    divExpand.each(function (p, k) {
                        p.hide();
                    });
                    //show colapse
                    var divColapse = treeContainer.all(".eu-voc-tree-colapse-all");
                    divColapse.each(function (p, k) {
                        p.show();
                    });

                    // show relation
                    var tabContainer = treeContainer;
                    var i = 0;
                    for (i = 0; i < 4; i++) {
                        treeContainer = treeContainer.ancestor();
                    }
                    displayShowHideRelation(treeContainer);
                });
            }

            displayShowHideRelation = function (treeContainer) {
                var divColapse = treeContainer.all(".eu-voc-tree-show-hide-relation");
                divColapse.each(function (p, k) {
                    p.show();
                });
            }

            hideShowHideRelation = function (treeContainer) {
                var divColapse = treeContainer.all(".eu-voc-tree-show-hide-relation");
                divColapse.each(function (p, k) {
                    p.hide();
                });
            }

            colapseAll = function (object) {
                AUI().use('node', function (Y) {
                    var treeContainer = Y.one(object).ancestor();
                    var divList = treeContainer.all(".eu-voc-tree-container");
                    divList.each(function (treeNode, k) {
                        var iconElement = treeNode.ancestor().one('.eu-voc-tree-node-icon');
                        if (iconElement) {
                            iconElement.addClass('icon-plus');
                            iconElement.removeClass('icon-minus');
                            var parentNode = iconElement.ancestor();
                            var childDiv = treeNode;
                            if (childDiv && k > 0) {
                                childDiv.addClass('hide');
                            }
                        }

                    });
                    //show expand
                    var divExpand = treeContainer.all(".eu-voc-tree-expand-all");
                    divExpand.each(function (p, k) {
                        p.show();
                    });
                    //hide colapse
                    var divColapse = treeContainer.all(".eu-voc-tree-colapse-all");
                    divColapse.each(function (p, k) {
                        p.hide();
                    });
                });
            }

            colapseAllLabels = function (object) {
                AUI().use('node', function (Y) {
                    var treeContainer = Y.one(object).ancestor();
                    var divList = treeContainer.all(".eu-voc-tree-container");
                    divList.each(function (treeNode, k) {
                        var iconElement = treeNode.ancestor().ancestor().one('.eu-voc-tree-node-icon');
                        if (iconElement) {
                            iconElement.addClass('icon-plus');
                            iconElement.removeClass('icon-minus');
                            var childDiv = treeNode;
                            if (childDiv) {
                                childDiv.addClass('hide');
                            }
                        }

                    });
                    //show expand
                    var divExpand = treeContainer.all(".eu-voc-tree-expand-all");
                    divExpand.each(function (p, k) {
                        p.show();
                    });
                    //hide colapse
                    var divColapse = treeContainer.all(".eu-voc-tree-colapse-all");
                    divColapse.each(function (p, k) {
                        p.hide();
                    });

                    // hide relation
                    var tabContainer = treeContainer;
                    var i = 0;
                    for (i = 0; i < 3; i++) {
                        treeContainer = treeContainer.ancestor();
                    }
                    var divColapse = treeContainer.all(".eu-voc-tree-show-hide-relation");
                    divColapse.each(function (p, k) {
                        p.hide();
                    });
                });
            }
            colapseAllEuvocLabels = function (object) {
                AUI().use('node', function (Y) {
                    var treeContainer = Y.one(object).ancestor();
                    var divList = treeContainer.all(".eu-voc-tree-container");
                    divList.each(function (treeNode, k) {
                        var iconElement = treeNode.ancestor().one('.eu-voc-tree-node-icon');
                        if (iconElement) {
                            iconElement.addClass('icon-plus');
                            iconElement.removeClass('icon-minus');
                            var childDiv = treeNode;
                            if (childDiv) {
                                childDiv.addClass('hide');
                            }
                        }

                    });
                    //show expand
                    var divExpand = treeContainer.all(".eu-voc-tree-expand-all");
                    divExpand.each(function (p, k) {
                        p.show();
                    });
                    //hide colapse
                    var divColapse = treeContainer.all(".eu-voc-tree-colapse-all");
                    divColapse.each(function (p, k) {
                        p.hide();
                    });

                    // hide relation
                    var tabContainer = treeContainer;
                    var i = 0;
                    for (i = 0; i < 4; i++) {
                        treeContainer = treeContainer.ancestor();
                    }
                    hideShowHideRelation(treeContainer);
                });
            }

            // upperDepth, default is 1
            hideRelation = function (object, relationName, upperDepth) {
                AUI().use('node', function (Y) {
                    var hideButton = Y.one(object);
                    var treeContainer = Y.one(object).ancestor();
                    var i = 1;
                    for (i = 1; i < upperDepth; i++) {
                        treeContainer = treeContainer.ancestor();
                    }
                    var divList = treeContainer.all(".relation-" + relationName);
                    divList.each(function (relationElement, k) {
                        relationElement.hide();
                    });

                    //show expand
                    var divExpand = treeContainer.all(".eu-voc-tree-show-relation");
                    divExpand.each(function (p, k) {
                        p.show();
                    });
                    //hide colapse
                    var divColapse = treeContainer.all(".eu-voc-tree-hide-relation");
                    divColapse.each(function (p, k) {
                        p.hide();
                    });

                });
            }

            // upperDepth, default is 1
            showRelation = function (object, relationName, upperDepth) {
                AUI().use('node', function (Y) {
                    var hideButton = Y.one(object);
                    var treeContainer = Y.one(object).ancestor();
                    var i = 1;
                    for (i = 1; i < upperDepth; i++) {
                        treeContainer = treeContainer.ancestor();
                    }
                    var divList = treeContainer.all(".relation-" + relationName);
                    divList.each(function (relationElement, k) {
                        relationElement.show();
                    });

                    //show expand
                    var divExpand = treeContainer.all(".eu-voc-tree-hide-relation");
                    divExpand.each(function (p, k) {
                        p.show();
                    });
                    //hide colapse
                    var divColapse = treeContainer.all(".eu-voc-tree-show-relation");
                    divColapse.each(function (p, k) {
                        p.hide();
                    });
                });
            }

            toogleElements = function (object, showElement, hideElement, upLevel) {
                AUI().use('node', function (Y) {

                    var container = Y.one(object).ancestor();
                    var i = 1;
                    for (i = 1; i < upLevel; i++) {
                        container = container.ancestor();
                    }

                    var showFlatListElement = container.all(hideElement);
                    showFlatListElement.each(function (p, k) {
                        p.hide();
                    });

                    var showTreeElement = container.all(showElement);
                    showTreeElement.each(function (p, k) {
                        p.show();
                    });
                });
            }

            showFlatList = function (object) {
                toogleElements(object, ".eu-voc-tree-show-tree", ".eu-voc-tree-show-flat-list", 2);
                toogleElements(object, ".eu-vocabularies-display-label-flat", ".eu-vocabularies-display-label", 4);
                // show all the column
                toogleElements(object, ".eu-vocabularies-display-label-flat", ".concept-display-column", 4);
            }

            showTree = function (object) {
                toogleElements(object, ".eu-voc-tree-show-flat-list", ".eu-voc-tree-show-tree", 2);
                toogleElements(object, ".eu-vocabularies-display-label", ".eu-vocabularies-display-label-flat", 4);
                // hide all the column
                toogleElements(object, ".concept-display-column", ".eu-vocabularies-display-label-flat", 4);
            }

            gotoPage = function (object, page, pages) {
                AUI().use('node', function (Y) {
                    var link = Y.one(object);
                    var container = link.ancestor().ancestor();
                    var i = 1;
                    for (i = 1; i <= pages; i++) {
                        var el = container.all(".page_" + i);
                        el.each(function (p, k) {
                            p.hide();
                        });

                        var el = link.ancestor().all("#link_" + i);
                        el.each(function (p, k) {
                            if (i == page) {
                                el.html("[" + i + "]");
                            }
                            else {
                                el.html(i);
                            }
                        });
                    }

                    var el = container.all(".page_" + page);
                    el.each(function (p, k) {
                        p.show();
                    });
                });
            };

            enableFirstTabWhenLoadComplete = function () {
                AUI().use('node', function (A) {
                    if (A.all('.concept-display-tab-page.show').size() > 0) {
                        return;
                    }
                    var tabPages = A.all('.concept-display-tab-page-btn');
                    if (tabPages && tabPages.size() > 0) {
                        let firstTab = tabPages.first();
                        if (firstTab && !firstTab.hasClass('loading') && !firstTab.hasClass('active')) {
                            firstTab.removeClass('disabled');

                            let tabLink = firstTab.one('.nav-link');
                            if (tabLink) {
                                tabLink.addClass('active');
                            }

                            var tabPageId = firstTab.getAttribute('tabPageId');
                            let tabContentNode = A.one('#' + conceptDisplayPortletNamespace + tabPageId + 'TabContent');
                            if (tabContentNode) {
                                if (tabContentNode.hasClass('disabled')) {
                                    tabContentNode.removeClass('disabled');
                                }
                                tabContentNode.addClass('active');
                                tabContentNode.addClass('show');
                            }
                        }
                    }
                });
            };

            loadAsyncTabPages = function () {
                AUI().use('node', 'aui-io-request', function (A) {
                    var tabPages = A.all('.concept-display-tab-page-btn');
                    tabPages.each(function (tab) {
                        var tabPageId = tab.getAttribute('tabPageId');
                        var tabPageUrl = tabPageRenderUrl + '&' + conceptDisplayPortletNamespace + 'tabPageId=' + tabPageId;
                        var contentObject = A.one('#' + conceptDisplayPortletNamespace + tabPageId + 'TabContent');
                        if (contentObject && contentObject.html() && contentObject.html().trim().length > 0) {
                            return;
                        }
                        A.io.request(tabPageUrl, {
                            autoLoad: true,
                            cache: false,
                            method: 'GET',
                            data: {},
                            on: {
                                success: function () {
                                    tab.removeClass('loading');
                                    var returnData = this.get('responseData');
                                    if (returnData) {
                                        if (contentObject) {
                                            contentObject.append(returnData);
                                            let allScriptsAppended = contentObject.all('script');
                                            allScriptsAppended.each(function (currentScript) {
                                                var newScript = document.createElement("script");
                                                newScript.appendChild(document.createTextNode(currentScript.get('innerText')));
                                                let parentNode = currentScript.get('parentNode');
                                                currentScript.remove();
                                                parentNode.getDOMNode().appendChild(newScript);
                                            });
                                            if (isPopup === true) {
                                                rewriteLinks(contentObject);
                                            }
                                        }
                                        if (tab.hasClass('disabled')) {
                                            tab.removeClass('disabled');
                                        }
                                        let tabLink = tab.one('.nav-link');
                                        if (tabLink && tabLink.hasClass('disabled')) {
                                            tabLink.removeClass('disabled');
                                        }
                                    }
                                    enableFirstTabWhenLoadComplete();
                                    return true;
                                },
                                failure: function () {
                                    tab.removeClass('loading');
                                    return true;
                                }
                            }
                        });

                    });
                });


            };
            if (isPopup === true) {
                rewriteLinks = function (container) {
                    AUI().use('node', function (Y) {
                        container.all("a").on('click', function (e) {
                            e.preventDefault();
                            var a = Y.one(e.currentTarget);
                            var href = a.get('href');
                            if (href && href.length > 0) {
                                if (href.indexOf('/-/resource?') != -1) {
                                    if (href.indexOf('&p_p_state=pop_up') == -1)
                                        window.location = href + "&p_p_state=pop_up";
                                    else {
                                        window.location = href;
                                    }
                                } else {
                                    parent.location = href;
                                }
                            }
                        });
                    });
                };
                AUI().use('node', function (Y) {
                    rewriteLinks(Y.one(".eu-vocabularies-concept"));
                });
            }
            loadAsyncTabPages();
        }
)

var currentNode;
var elementClass;
if(currentNode != undefined && elementClass != undefined) {
    YUI().use('autocomplete-base', 'autocomplete-filters', function (Y) {
        var PieFilter = Y.Base.create('pieFilter', Y.Base, [Y.AutoCompleteBase], {
                initializer: function () {
                    this._bindUIACBase();
                    this._syncUIACBase();
                }
            }),

            filter = new PieFilter({
                inputNode: Y.one('.' + currentNode).one('#ac-input'),
                minQueryLength: 0,
                queryDelay: 0,

                source: (function () {
                    var results = [];

                    Y.all('.' + currentNode +' .' + elementClass).each(function (node) {
                        results.push({
                            node: node,
                            tags: node.get('innerText')
                        });
                    });

                    return results;
                }()),
                resultTextLocator: 'tags',
                resultFilters: 'phraseMatch'
            });

        filter.on('results', function (e) {
            Y.all('.' + currentNode +' .' + elementClass).addClass('hidden');
            var elementParents = document.querySelectorAll(".eu-vocabularies-euvoc-concept-tree > .eu-vocabularies-display-label .eu-voc-tree-container");
            if(( elementParents != null)){
                elementParents.forEach(function(elementParent) {
                    elementParent.parentElement.classList.add('hidden');
                });
            };

            Y.Array.each(e.results, function (result) {
                result.raw.node.removeClass('hidden');
                result.raw.node.get('parentNode').removeClass('hidden');
                result.raw.node.get('parentNode').get('parentNode').removeClass('hidden');
                result.raw.node.get('parentNode').get('parentNode').get('parentNode').removeClass('hidden');
            });
        });
    });
}

