/*
 * $Revision$
 * $Date$
 *
 * Copyright (C) 1999-2010 Jive Software. All rights reserved.
 *
 * This software is the proprietary information of Jive Software. Use is subject to license terms.
 */
if (!jive) {
    var jive = {};
}

jive.appstore = {
    showFind: function(findBrowser, findContainer) {
        $j(window).unbind('resize');

        var $container = $j('#jive-widgets-list-container');
        $container.find('.jive-widget-instructions').hide(); // hide widget instructions text
        // toggle selected widget
        $container.find('.jive-widcat-widget').removeClass('selected');
        $j(findBrowser).parents(".jive-widcat-widget").addClass('selected');

        // toggle widget preview
        $container.find('.jive-widget-new-container').hide();
        $j(findContainer).show();
    },
    closeModalTop: function() {
        $j('.jive-modal-close-top').click();
    }
};
(function() {

    $j(document).ready(function() {
        appendScraperToBody();
    });
    $j("#find-store-launch").live("click", function() {
        // showInPopup("custom-gallery");
        showLightbox("custom-gallery");
        return false;
    });

    $j("#j-ub-browse-appwidgetcontent").live("click", function() {
        // showInPopup("custom-gallery");
        showLightbox("custom-gallery");
        return false;
    });
    
    $j("#make-widget-launch").live("click", function () {
        // showInPopup("make-widget");
        showLightbox("make-widget");
        return false;
    });

    $j("span.delete-widget").live("click", function() {
        if (confirm("Deleting this widget will remove it from your Places, Projects and Group pages. Are you sure you want to continue?")) {
            $j('#delete-app-form-id').val($j(this).attr('data-widget-id'));
            $j('#delete-app-form-containerID').val($j(this).attr('data-container'));
            $j('#delete-app-form-containerType').val($j(this).attr('data-container-type'));
            $j('#delete-app-form-widgetTypeID').val($j(this).attr('data-widget-type'));
            $j('#delete-app-form-custom').val($j(this).attr('data-custom'));
            $j('#delete-app-form').submit();
        }
    });

    $j("span.modify-widget").live("click", function() {
        var id = $j(this).attr('data-widget-id');
        // showInPopup("modify-widget", id);
        showLightbox("modify-widget", id);
    });
    
    // attached Make widget to click event in to new jive studio widget in user bar
    $j("#j-ub-new-appwidgetcontent").live("click", function() {
        showLightbox("make-widget");
        return false;
    });

    function showLightbox(view, id) {

        $j('#jive-app-store-container').remove();

        var width = 990;
        var height = 600;
        var $appStoreContainer = $j("<div id='jive-app-store-container' />").hide().addClass("jive-modal").css("width",
                width + "px").css("height", (height + 10) + "px").appendTo($j(document.body));

        var $appStoreHeader = $j("<div id='jive-app-store-header' />").appendTo($appStoreContainer);
        $j("<a id='jive-app-store-top-logo'>Jive</a>").appendTo($appStoreHeader);

        var dialogTitle = makeDialogTitle(view);
        $j("<a href='#' class='jive-modal-close-top'>Close</a>").appendTo($appStoreHeader);
        var $modalTitle = $j("<h2 class='jive-modal-title'>" + dialogTitle + "</h2>");
        $modalTitle.appendTo($appStoreHeader);

        var url = makeRedirectUrl(view,id);
        var $iframe = $j("<iframe></iframe>").css("width", width + "px").css("height", (height - 25)
                + "px").attr("src", _jive_base_url + url);
        $iframe.appendTo($appStoreContainer);

        $appStoreContainer.lightbox_me({
            closeSelector: ".jive-modal-close-top"
        });
        return false;
    }

    function makeDialogTitle(view) {

        if (view == "make-widget" || view == "modify-widget") {
            return "Widget Studio";
        }
        else if (view == "custom-gallery") {
            return "Widget Gallery";
        }

        return "&nbsp;";

    }

    function makeRedirectUrl(view,id) {
        //TODO this default is in place while redirect from the content view is broken.
        var widgetTypeID = 2;
        if (this.widgets) {
            widgetTypeID = this.widgets.args.widgetTypeID;
        }
        var url = "/studio-redirect.jspa?view=" + view +"&widgetTypeID=" + widgetTypeID;

        // WidgetType.PERSONALIZEHOMEPAGE value is 2.
        //  Personalize homepage customization is seperate action and container ID is not deciding factor.
        //  Currently, -1 is set for containerID for personal homepage edit.
        if (widgetTypeID == 2) {
            url +="&containerID=" + -1 +"&containerType=" +this.containerType;
        }
        else {
            url +="&containerID=" + this.containerID +"&containerType=" +this.containerType;
        }
        if (id) {
            url += "&id=" + id;
        }

        if (view == "make-widget") {
            url += "&makeConfig=" + discoverTheme();
        }

        return url;
    }

    function discoverTheme() {

        var lnkclr,
                defaultLnkClr = 'rgb(0,0,255)',
                defaultClr = 'rgb(0,0,0)',
                defaultBgClr = 'rgb(255,255,255)',
                defaultFont = 'Arial',
                fontNum = -1;
        var bgclr = $j("#j-scraper-widget").css("background-color") || defaultBgClr;
        var txtclr = $j("#j-scraper-text").css("color") || defaultClr;
        var brdrclr = $j("#j-scraper-widget").css("border-bottom-color") || defaultClr;
        var txtfont = $j("#j-scraper-text").css("font-family") || defaultFont;
        try {
            lnkclr = $j("#j-scraper-link:link").css("color") || defaultLnkClr;
        }
        catch (err) {
            lnkclr = $j("#j-scraper-link").css("color") || defaultLnkClr;
        }

        if (txtfont.indexOf("Lucida Grande") != -1 || txtfont.indexOf("Verdana") != -1) {
            fontNum = 0;
        }
        else if (txtfont.indexOf("Helvetica") != -1 || txtfont.indexOf("Arial") != -1) {
            fontNum = 1;
        }
        else if (txtfont.indexOf("Georgia") != -1 || txtfont.indexOf("Utopia") != -1) {
            fontNum = 2;
        }
        else if (txtfont.indexOf("Times") != -1) {
            fontNum = 3;
        }
        else if (txtfont.indexOf("Courier") != -1) {
            fontNum = 4;
        }

        var theme = "color1=" + convertToHex(bgclr)
                  + "&color2=" + convertToHex(brdrclr)
                  + "&textColor=" + convertToHex(txtclr)
                  + "&linkColor=" + convertToHex(lnkclr)
                  + "&fontFamily=" + fontNum;

        return escape(theme);

    }

    function convertToHex(s) {

        var i1 = s.indexOf("("),
                i2 = s.indexOf(")"),
                a = s.indexOf("a");

        if (s.substr(0, 3) == "rgb" && i1++ != -1 && i2 != -1) {
            var sc = s.substr(i1, i2 - i1),
                    ss = sc.split(',');
            if (a == 3 && ss.length == 4) {
                var i, sv;
                for (i = 0,sv = 0; i < 4; i++)
                    sv += parseInt(ss[i]);
                if (sv == 0)
                    return "";  // transparent
            }
            return "#" + RGBtoHex(parseInt(ss[0]), parseInt(ss[1]), parseInt(ss[2]));
        }

        return s;

    }

    function RGBtoHex(R,G,B) {
        return toHex(R)+toHex(G)+toHex(B);
    }

    function toHex(N) {
         if (N==null) return "00";
         N=parseInt(N); if (N==0 || isNaN(N)) return "00";
         N=Math.max(0,N); N=Math.min(N,255); N=Math.round(N);
         return "0123456789ABCDEF".charAt((N-N%16)/16)
              + "0123456789ABCDEF".charAt(N%16);
    }

    // recent activity widget size LARGE
    $j("span.jive-activity-title a").live("click", function() {
        return recentActivityHandler(this);
    });

    // recent activity widget size SMALL
    $j("ul.jive-activity-list a").live("click", function() {
        return recentActivityHandler(this);
    });

    function recentActivityHandler(aTag) {
        var href = $j(aTag).attr('href');
        var idx = href.indexOf('app-widget');
        if (idx > -1) {
            showLightbox("get-widget-by-id", href.substring(idx+'app-widget'.length+1));
            return false;
        }
        return true;
    }

    $j(".jive-widget-container .get-widget .jive-widget-header").livequery(function() {
        var $header = $j(this);
        var $span = $j("<span class='studio-widget-add'></span>");
        var widgetId = $j(this).attr("id").substring("jive-widgetframe-header_".length);
        $j("<a title='Add this Widget' href='#'>get</a>").attr("data-widget-frame-id", widgetId).click(function() {
            showLightbox("get-widget-by-frame", $j(this).attr("data-widget-frame-id"));
            return false;
        }).appendTo($span);

        $span.appendTo($header);
    });

    function appendScraperToBody() {
        $j('<div id="j-scraper-widget" class="jive-box jive-widget-gadget studio-widget get-widget studio-widget-no-dnd">'
                + '<div id="j-scraper-header" class="jive-box-header">'
                    + '<h4 id="j-scraper-headline">.</h4>'
                + '</div>'
                + '<div id="j-scraper-body" class="jive-box-body">'
                    + '<p id="j-scraper-text">'
                        + '<a href="/index.html?t=' + Math.random() + '" id="j-scraper-link">.</a>'
                    + '</p>'
                + '</div>'
            + '</div>').appendTo('body');
    }

})();





