if(!IMVU) IMVU={};
if(!IMVU.badgeTooltip) {
IMVU.badgeTooltip = {
    overlay : new YAHOO.widget.Overlay('badgeTooltip', {
        visible: false,
        constraintoviewport : true
    }),
    descs : {},
    ttid : 0,

    newId : function() {
        this.ttid += 1;
        return 'btt-'+this.ttid;
    },

    setDesc : function(badgeId, desc) {
        this.descs[badgeId] = desc;
    },

    hide : function() {
        this.overlay.cfg.setProperty("visible", false);
    },

    //this is really an event handler see import/avatar_widget.php
    show : function(yuiEvent, badgeId) {
        var e = YAHOO.util.Event.getEvent();
        var pos = YAHOO.util.Event.getXY(e);

        var desc = IMVU.badgeTooltip.descs[badgeId] || "(There is no description for this badge)";
        var flag = "<div class='btt-flag'><a class='flag' href='javascript:IMVU.badgeTooltip.flagBadge(\""+badgeId+"\")'><img src='/common/img/abuse_14x.png' /><span>Flag for CS review</span></a><a class='close' href='javascript:IMVU.badgeTooltip.hide()'>X</a><div style='clear:both'></div></div>";
        var desc = "<div class='btt-desc'>"+desc+"</div>"
        IMVU.badgeTooltip.overlay.setBody(flag+desc);
        IMVU.badgeTooltip.overlay.cfg.setProperty("zIndex", IMVU.badgeTooltip.getNextHighestZindex());
        IMVU.badgeTooltip.overlay.render(document.body);
        var el = document.getElementById('badgeTooltip');
        if(el) {
            pos[0] -= el.offsetWidth/2;
            pos[1] -= 5 + el.offsetHeight + 25;
        }
        IMVU.badgeTooltip.overlay.cfg.setProperty("xy", pos);
        IMVU.badgeTooltip.overlay.show();
    },

    //http://greengeckodesign.com/blog/2007/07/get-highest-z-index-in-javascript.html
    getNextHighestZindex : function(obj){
       var highestIndex = 0;
       var currentIndex = 0;
       if(!obj) { obj = document; }
       var elArray = obj.getElementsByTagName('*');
       for(var i=0; i < elArray.length; i++){
          if(false) {
          } else if(window.getComputedStyle){
             currentIndex = parseFloat(document.defaultView.getComputedStyle(elArray[i],null).getPropertyValue('z-index'));
          } else if(elArray[i].currentStyle){
             currentIndex = parseFloat(elArray[i].currentStyle['zIndex']);
          }
          if(!isNaN(currentIndex) && currentIndex > highestIndex){ highestIndex = currentIndex; }
       }
       return(highestIndex+1);
    },

    flagBadge : function(badgeId) {
        IMVU.badgeTooltip.hide();
        IMVU.loading.showPopup('Working...');
        var c = function(o) {
            IMVU.loading.hidePopup();
            IMVU.messageCompleteShow('Thank you', 'You have flagged this badge for further review.  An IMVU staff person will evaluate it shortly to ensure it is in compliance with our TOS.');
        }
        var cb = {success:c, failure:c};
        YAHOO.util.Connect.asyncRequest('POST', '/api/service/flag-badge.php', cb, 'badgeid='+badgeId);
    }
}

YAHOO.util.Event.onDOMReady(function() {
    IMVU.badgeTooltip.overlay.render(document.body);
});
}
