public bool GetStartClosed()
    {
        GadgetViewRequirements reqs = GetGadgetViewRequirements();

        // if the page specific reqs are present, honor those.  Otherwise defaut to true for regular gadgets, false for sandbox gadgets
        return(reqs != null?reqs.GetStartClosed() : !gadgetSpec.FromSandbox());
    }
    public string GetChromeId()
    {
        GadgetViewRequirements reqs = GetGadgetViewRequirements();

        if (reqs != null)
        {
            return(reqs.GetChromeId());
        }
        // default behavior that will get invoked when there is no reqs.  Useful for sandbox gadgets
        else if (gadgetSpec.GetGadgetURL().Contains("Tool"))
        {
            return("gadgets-tools");
        }
        else if (helper.GetPageName().Equals("ProfileEdit.aspx"))
        {
            return("gadgets-edit");
        }
        else if (helper.GetPageName().Equals("ProfileDetails.aspx"))
        {
            return("gadgets-view");
        }
        else if (helper.GetPageName().Equals("GadgetDetails.aspx"))
        {
            return("gadgets-detail");
        }
        else if (helper.GetPageName().Equals("Search.aspx"))
        {
            return("gadgets-search");
        }
        else
        {
            return(null);
        }
    }
    public String GetView()
    {
        GadgetViewRequirements reqs = GetGadgetViewRequirements();

        if (reqs != null)
        {
            return(reqs.GetView());
        }
        // default behavior that will get invoked when there is no reqs.  Useful for sandbox gadgets
        else if (helper.GetPageName().Equals("ProfileEdit.aspx"))
        {
            return("home");
        }
        else if (helper.GetPageName().Equals("ProfileDetails.aspx"))
        {
            return("profile");
        }
        else if (helper.GetPageName().Equals("GadgetDetails.aspx"))
        {
            return("canvas");
        }
        else if (gadgetSpec.GetGadgetURL().Contains("Tool"))
        {
            return("small");
        }
        else
        {
            return(null);
        }
    }
    public int CompareTo(PreparedGadget other)
    {
        GadgetViewRequirements gvr1 = this.GetGadgetViewRequirements();
        GadgetViewRequirements gvr2 = other.GetGadgetViewRequirements();

        return(("" + this.GetView() + (gvr1 != null ? gvr1.GetDisplayOrder() : Int32.MaxValue)).CompareTo("" + other.GetView() + (gvr2 != null ? gvr2.GetDisplayOrder() : Int32.MaxValue)));
    }
    public bool Show(int viewerId, int ownerId, String page)
    {
        bool show = true;

        // if there are no view requirements, go ahead and show it.  We are likely testing out a new gadget
        // if there are some, turn it off unless this page is
        if (viewRequirements.Count > 0)
        {
            show = false;
        }

        if (viewRequirements.ContainsKey(page))
        {
            show = true;
            GadgetViewRequirements req = GetGadgetViewRequirements(page);
            if ('U' == req.GetViewerReq() && viewerId <= 0)
            {
                show = false;
            }
            else if ('R' == req.GetViewerReq())
            {
                show &= IsRegisteredTo(viewerId);
            }
            if ('R' == req.GetOwnerReq())
            {
                show &= IsRegisteredTo(ownerId);
            }
            else if ('S' == req.GetOwnerReq())
            {
                show &= (viewerId == ownerId);
            }
        }
        return(show);
    }
    public int GetClosedWidth()
    {
        GadgetViewRequirements reqs = GetGadgetViewRequirements();

        return(reqs != null?reqs.GetClosedWidth() : 0);
    }
    // who sees it?  Return the viewerReq for the ProfileDetails page
    public char GetVisibleScope()
    {
        GadgetViewRequirements req = GetGadgetViewRequirements("ProfileDetails.aspx");

        return(req != null?req.GetViewerReq() : ' ');
    }