function onMinMaxEvent(portletId) {

    var portlet = getPortletById(portletId);
    var isPortletHidden = jQuery('.portlet-content-container', portlet).is(':hidden');

    if(isPortletHidden){
        minimizePortlet(portlet, isPortletHidden);
        onGroupMemeber(function(groupIndex, memberId) {
            if(portletId.indexOf(memberId) != 0 ) {
                var subscriberPortlet = getPortletById(memberId);
                if (subscriberPortlet != null) {
                    var isSubscriberPortletHidden = jQuery('.portlet-content-container', subscriberPortlet).is(':hidden');
                    if(!isSubscriberPortletHidden) {
                        minimizePortlet(subscriberPortlet, isSubscriberPortletHidden);
                    }
                }
            }
        });
        if (window.gwt_portlet_support) {
	        window.gwt_portlet_support.resize_portlets();
        }
    }
}
/*
function resizeEvt(){
    if (document.all){
        window.fireEvent("onresize");
        document.documentElement.fireEvent("onresize");
        var evt = document.createEventObject();
  document.body.fireEvent('onresize', evt);
    }else{
        var evt = document.createEvent("Events");
        evt.initEvent("resize", true, true);
        window.dispatchEvent(evt);
    }
}
*/

function getPortletById(portletId) {
    var portlets = null;
    if((portletId.indexOf("39") == 0) || (portletId.indexOf("56") == 0)) {
        portlets = jQuery("div[id^=p_p_id_" + portletId + "]", jQuery("div#column-2.crn-column"));
    } else {
        portlets = jQuery("div[id^=p_p_id_" + portletId + "]");
    }
    if(portlets != null && portlets.length > 0) {
        return portlets[0];
    }
    return null;
}

function minimizePortlet(portlet, isHidden) {
    onMinimizedEventBefore(portlet);
    Liferay.Portlet.minimize(portlet, null, null);
    onMinimizedEventAfter(portlet, !isHidden);
}

function onMinimizedEventBefore(portlet) {
}

function onMinimizedEventAfter(portlet, isHidden) {
    if(portlet.portletId.indexOf("WK_RE_TrackerNews") == 0) {
        var myTrackers = getPortletById("WK_RE_MyTrackers");
        if(myTrackers != null) {
            var isMyTrackersHidden = jQuery('.portlet-content-container', myTrackers).is(':hidden');
            if((isHidden && !isMyTrackersHidden) || (!isHidden && isMyTrackersHidden)) {
                minimizePortlet(myTrackers, isMyTrackersHidden);
            }
        }
    }

    jQuery("#minMaxButton", portlet).attr(getImageAttrs(isHidden));
}

function addShowButton(portlet, isPortletHidden) {

    if(jQuery("#minMaxButton", portlet).length > 0) {
        return;
    }

    var attrs = getImageAttrs(isPortletHidden);

    jQuery(".portlet-icons", portlet).append(
        "<span class='nobr " + portlet.portletId+ "_showButton'" + "onclick=\"onMinMaxEvent('" + portlet.portletId + "'); return false;\">" +
            "<img style='" + attrs.style + "' id='minMaxButton' class='icon' src='" + attrs.src + "' alt='" + attrs.alt + "' title='" + attrs.title +"'/>" +
        "</span>"
    );
}

function getImageAttrs(isHidden) {
    return {
        src : "/crn-theme/images/custom/" + (isHidden ? "show.png" : "show_dis.png"),
        style: isHidden ? "cursor:pointer" : "",
        alt: isHidden ? "Show" : "",
        title: isHidden ? "Show content" : ""
    };
}

var isExist = [];
var wasInitialized = false;
/*Variable subscriberGroups is defined in Liferay's "Control Panel" --> "Community" --> "Manage Pages" --> "Page Properties"*/
var subscriberGroups = [];

/*Duplicated code. Needs to be used due to PWI code has broken/overrided Liferay's event 'allPortletsReady'*/
Liferay.bind(
    "allPortletsReady",
    function(event) {

	if(subscriberGroups == 'undefined' || subscriberGroups == null || subscriberGroups.length == 0) {
        return;
    }

    if(wasInitialized) {
        return;
    }

    var areAllMinimized = true;
    onGroupMemeber(function(groupIndex, memberId) {
        var portlet = getPortletById(memberId);
        if (portlet != null) {
            var isPortletHidden = jQuery('.portlet-content-container', portlet).is(':hidden');
            var trackerNews = getPortletById("WK_RE_TrackerNews");
            if (portlet == trackerNews) {
                var myTrackers = getPortletById("WK_RE_MyTrackers");
                if(myTrackers != null) {
                    var isMyTrackersHidden = jQuery('.portlet-content-container', myTrackers).is(':hidden');
                    if (isPortletHidden && !isMyTrackersHidden) {
                        Liferay.Portlet.minimize(myTrackers, null, null);
                    }
                }
                if (!isPortletHidden && isMyTrackersHidden) {
                    Liferay.Portlet.minimize(portlet, null, null);
                    isPortletHidden = !isPortletHidden;
                }
            }
            areAllMinimized &= isPortletHidden;
            if (!isPortletHidden) {
                if (isExist[groupIndex]) {
                    minimizePortlet(portlet, isPortletHidden);
                    isPortletHidden = !isPortletHidden;
                } else {
                    isExist[groupIndex] = true;
                }
            }
            addShowButton(portlet, isPortletHidden);
        }
    });
    if (areAllMinimized) {
        if (subscriberGroups[0] != null) {
            if (subscriberGroups[0][0] != null) {
                var portlet = getPortletById(subscriberGroups[0][0]);
                if (portlet != null) {
                    jQuery("."+portlet.portletId+"_showButton").click();
                }
            }
        }
    }

    wasInitialized = true;
});

function onGroupMemeber(fn) {
    for (var i = 0; i < subscriberGroups.length; i++) {
        var group = subscriberGroups[i];
        for (var j = 0; j < group.length; j++) {
            fn(i, group[j]);
        }
    }
}

Liferay.Portlet.ready(
    function(portletId, portlet) {
        /*if(portletId.indexOf("WK_RE_MyTrackers") >= 0) {
    		var aObjElem = jQuery("div.pwi-mytrackers-no-trackers a", jQuery("div[id^=p_p_id_" + portletId + "]"));
    		if(aObjElem != null && aObjElem != 'undefined' && aObjElem.length > 0) {
    			aObjElem.attr("href") = "http://crnscion.wk-bluewater.com/scion/secure/index.jsp";
    			aObjElem.attr("onclick") = "";
    		}
    	}*/
        if(wasInitialized) {
            onGroupMemeber(function(groupIndex, memberId) {
                if(portletId.indexOf(memberId) == 0) {
                    var isPortletHidden = jQuery('.portlet-content-container', portlet).is(':hidden');
                    addShowButton(getPortletById(portletId), isPortletHidden);
                }
            });
        }
    }
);



/*Duplicated code. Needs to be used due to PWI code has broken/overrided Liferay's event 'allPortletsReady'*/
jQuery(document).ready(function(){
	if(subscriberGroups == 'undefined' || subscriberGroups == null || subscriberGroups.length == 0) {
        return;
    }

    if(wasInitialized) {
        return;
    }

    var areAllMinimized = true;
    onGroupMemeber(function(groupIndex, memberId) {
        var portlet = getPortletById(memberId);
        if (portlet != null) {
            var isPortletHidden = jQuery('.portlet-content-container', portlet).is(':hidden');
            var trackerNews = getPortletById("WK_RE_TrackerNews");
            if (portlet == trackerNews) {
                var myTrackers = getPortletById("WK_RE_MyTrackers");
                if(myTrackers != null) {
                    var isMyTrackersHidden = jQuery('.portlet-content-container', myTrackers).is(':hidden');
                    if (isPortletHidden && !isMyTrackersHidden) {
                        Liferay.Portlet.minimize(myTrackers, null, null);
                    }
                    if (!isPortletHidden && isMyTrackersHidden) {
                        Liferay.Portlet.minimize(portlet, null, null);
                        isPortletHidden = !isPortletHidden;
                    }
                }
            }
            areAllMinimized &= isPortletHidden;
            if (!isPortletHidden) {
                if (isExist[groupIndex]) {
                    minimizePortlet(portlet, isPortletHidden);
                    isPortletHidden = !isPortletHidden;
                } else {
                    isExist[groupIndex] = true;
                }
            }
            addShowButton(portlet, isPortletHidden);
        }
    });
    if (areAllMinimized) {
        if (subscriberGroups[0] != null) {
            if (subscriberGroups[0][0] != null) {
                var portlet = getPortletById(subscriberGroups[0][0]);
                if (portlet != null) {
                    jQuery("."+portlet.portletId+"_showButton").click();
                }
            }
        }
    }

    wasInitialized = true;
});
