/***********************************************
* Fixed ToolTip script- © Dynamic Drive (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

var disappeardelay=250;  //tooltip disappear speed onMouseout (in miliseconds)
var appeardelay=250;  //tooltip appear speed onMouseover (in miliseconds)
var vertical_offset="0px"; //horizontal offset of tooltip from anchor link
var horizontal_offset="0px"; //horizontal offset of tooltip from anchor link
var hidealloweddelay=10000;
var delaytip = 0;

var saved_etype = '';
var divname_hasFocus = '';

var hide_allowed = 1;  // to keep tooltips open while focusing on emote stuff
var landing_tweak = 0;  // prevents "friend=" param when set to 1

var tooltipcache = null;
///No further editting needed

function set_hasFocus(divname) {
    divname_hasFocus = divname;
}

function clear_hasFocus(divname) {
    if (divname_hasFocus == divname) {
        divname_hasFocus = '';
    }
}

function ttshowhide(obj, e, tipwidth) {
    var etype;
    if (e) {
        etype = e.type; 
    } else {
        etype = saved_etype;
    }
    
    if (etype=="click") {
        if (obj.visible()) {
            cleanuptip(obj);
            return 0;
        } else {
            obj.show();
            return 1;
        }
    } else if (etype=="mouseover") {
        if (!obj.visible()) {
            obj.show();
            return 1;
        }
    }
    return 0;
}

function complete_showshoutbox(html,dropmenuobj,localobj,localtipwidth,localver) {

    var tempwidth = parseInt(localtipwidth);
    if (tempwidth > 0) {
        dropmenuobj.width = tempwidth;
    }

    dropmenuobj.update(html);

    positiontooltip(localobj,dropmenuobj,localtipwidth,localver);
}

function ajaxcomplete(transport,dropmenuobj,localobj, localtipwidth, localver)
{
    //alert('ajaxcomplete: shoutfocus=='+shoutfocus);

    dropmenuobj.hide();

    if (transport.status == 200) {
        var data = transport.responseJSON;
        if (data) {
            if (data['error']){
            }

            complete_showshoutbox(data.html,dropmenuobj,localobj,localtipwidth,localver);

            if (typeof data.option != 'undefined' && typeof data.option.can_shout != 'undefined' && data.option.can_shout == 0) {
                var tmpdiv = $('tooltip_shout_form')
                if (tmpdiv) tmpdiv.hide();  
            }

            var tmpdiv = $('lite_header_wrapper');
            if (tmpdiv) {
                tmpdiv = $('shout_form');
                if (tmpdiv) tmpdiv.remove();
                tmpdiv = $('tooltip_lite_shout');
                if (tmpdiv) tmpdiv.show();
            } else {
                tmpdiv = $('tooltip_lite_shout');
                if (tmpdiv) tmpdiv.remove();
            }

            dropmenuobj.show();

            if(transport.request.parameters['shoutfocus'] && (transport.request.parameters['shoutfocus'] != 0)) {
                tmpObj = $('shoutbox_msg');
                if (tmpObj) {
                    tmpObj.focus();
                }
            }

            var key = Object.toQueryString(transport.request.parameters);
            tooltipcache.set(key, dropmenuobj.innerHTML, 15);
        }
    }
}

function tooltiploader(dropmenuobj) {
    dropmenuobj.update("<div class='tooltip_loading'></div>");
    dropmenuobj.style.width="220px";
    divname_hasFocus = '';
}

function ajaxpictooltip(uid, pid, obj, e, tipwidth)
{
    obj = Element.extend(obj);
   
    if (!tooltipcache) {
        tooltipcache = new myStorage ();
    }

    if (window.event && e) {
        e.cancelBubble=true;
    } else if (e && e.stopPropagation) {
        e.stopPropagation();
    }

    clear_delay_hide_allowed();
    clearhidetip();
    hide_allowed = 1;

    dropmenuobj=$("fixedtipdiv");

        /** get data if exists */
        var params = { u: uid, i: pid };

        var item;
        var key = Object.toQueryString(params);
        if ((item = tooltipcache.get (key)) !== false) {
            complete_showshoutbox(item,dropmenuobj,obj,tipwidth,1);
            ttshowhide(dropmenuobj, e, tipwidth);
            return;
        }

        tooltiploader(dropmenuobj);

        var localobj = obj;
        var localver = 1;
        var localtipwidth = tipwidth;
        new Ajax.Request('/a_pic_tooltip.php', {
            method: 'get',
            parameters: params,
            onSuccess: function(transport) {
                ajaxcomplete(transport,dropmenuobj,localobj,localtipwidth,localver);
            }    
        });

        positiontooltip(obj,dropmenuobj,tipwidth,1);

        ttshowhide(dropmenuobj, e, tipwidth);
}

function ajaxtooltip_shoutfocus(id, obj, e, tipwidth) {
    saved_etype = e.type;
    if (e.type == 'click') {
        realajaxtooltip(id,obj,e,tipwidth,1,'',1);
    } else {
        delaytip=setTimeout(function() { realajaxtooltip(id,obj,null,tipwidth,1,'',1); },appeardelay);
    }
}

function ajaxtooltip3(id, obj, e, tipwidth) {
    ajaxtooltip_scroll(id, obj, e, tipwidth,1);
}

function ajaxtooltip_scroll(id, obj, e, tipwidth,ver) {
    saved_etype = e.type;
    if (e.type == 'click') {
        realajaxtooltip(id,obj,e,tipwidth,0,'',ver);
    } else {
        delaytip=setTimeout(function() { realajaxtooltip(id,obj,null,tipwidth,0,'',ver); },appeardelay);
    }
}

function ajaxtooltip(id, obj, e, tipwidth)
{
    saved_etype = e.type;
    if (e.type == 'click') {
        realajaxtooltip(id,obj,e,tipwidth,0,'',0);
    } else {
        delaytip=setTimeout(function() { realajaxtooltip(id,obj,null,tipwidth,0,'',0); },appeardelay);
    }
}

function cleardelaytip()
{
    if (typeof delaytip!="undefined")
        clearTimeout(delaytip)
}

function realajaxtooltip(id, obj, e, tipwidth, shoutfocus, target,ver)
{
    obj = Element.extend(obj);

    if (!tooltipcache) {
        tooltipcache = new myStorage ();
    }

    if (window.event && e) {
        e.cancelBubble=true;
    } else if (e && e.stopPropagation) {
        e.stopPropagation();
    }

    clearhidetip()
    clear_delay_hide_allowed()
    hide_allowed = 1;

    dropmenuobj=$("fixedtipdiv");

    if (landing_tweak == 1) {
        v = 3;
    } else {
        v = 0;
    }

    /** get data if exists */
    var params = { u: id, shoutfocus: shoutfocus, target: target, v: v };

    var item;
    var key = Object.toQueryString(params);
    if ((item = tooltipcache.get (key)) !== false) {
        complete_showshoutbox(item,dropmenuobj,obj,tipwidth,ver);
        ttshowhide(dropmenuobj, e, tipwidth);
        if (shoutfocus) {
            tmpObj = $('shoutbox_msg');
            if (tmpObj) {
                tmpObj.focus();
            }
        }
        return;
    }

    tooltiploader(dropmenuobj);

    var localobj = obj;
    var localver = ver;
    var localtipwidth = tipwidth;
    new Ajax.Request('/a_tooltip.php', {
        method: 'get',
        parameters: params,
        onSuccess: function(transport) { 
            ajaxcomplete(transport,dropmenuobj,localobj,localtipwidth,localver);
        }
    });

    positiontooltip(obj,dropmenuobj,tipwidth,ver);

    ttshowhide(dropmenuobj, e, tipwidth);
}

function positiontooltip(obj,dropmenuobj,tipwidth,ver) {

    var scroll = document.viewport.getScrollOffsets();
    var pos, targetPos;
    var viewport = { width: z_getWidth(), height: z_getHeight() };

    if (ver == 0) {
        targetPos = obj.cumulativeOffset();
    } else {
        targetPos = obj.viewportOffset();
    }
    var targetDim = obj.getDimensions();
    switch(ver) {
        case 1:
            pos = { left: targetPos[0]+(targetDim.width/2)+scroll[0], top: targetPos[1]+targetDim.height+scroll[1] };
            break;
        case 2:
            if (Prototype.Browser.IE && (scroll[1] == 0)) {
                targetPos[1] -= 6;
            }
            pos = { left: targetPos[0]+(targetDim.width/2)+scroll[0], top: targetPos[1]+targetDim.height+scroll[1] };
            break;
        case 0:
        default:
            pos = { left: targetPos[0]+(targetDim.width/2), top: targetPos[1]+targetDim.height };
            break;
    }
    
    var tooltipDim = dropmenuobj.getDimensions();   
    tooltipDim.width = Math.min(tooltipDim.width,parseInt(tipwidth));
 
    var pair = {left: 'width' }; //, top: 'height'};

    for(var z in pair) {
        if ((pos[z] + tooltipDim[pair[z]] - scroll[z]) > viewport[pair[z]]) {
            pos[z] = pos[z]-tooltipDim[pair[z]]-targetDim[pair[z]];
        }
    }

    var setPos = { left: pos.left + 'px', top: pos.top + 'px' };
    dropmenuobj.setStyle(setPos);
}

function ajaxvertooltip(id, thepic, thever, obj, e, tipwidth) {
    saved_etype = e.type;
    if (e.type == 'click') {
        realajaxvertooltip(id, thepic, thever, obj, e, tipwidth,0);
    } else {
        delaytip=setTimeout(function() { realajaxvertooltip(id, thepic, thever, obj, null, tipwidth,0); },appeardelay);
    }
}

function ajaxvertooltip_scroll(id, thepic, thever, obj, e, tipwidth) {
    saved_etype = e.type;
    if (e.type == 'click') {
        realajaxvertooltip(id, thepic, thever, obj, e, tipwidth,1);
    } else {
        delaytip=setTimeout(function() { realajaxvertooltip(id, thepic, thever, obj, null, tipwidth,1); },appeardelay);
    }
}

function realajaxvertooltip(id, thepic, thever, obj, e, tipwidth,ver)
{
    obj = Element.extend(obj);

    if (!tooltipcache) {
        tooltipcache = new myStorage ();
    }

    if (window.event && e) {
        e.cancelBubble=true; 
    } else if (e && e.stopPropagation) {
        e.stopPropagation();
    }

    clear_delay_hide_allowed();
    clearhidetip();
    hide_allowed = 1;
    
    dropmenuobj=$("fixedtipdiv");

        /** get data if exists */
        var params = { u: id, p: thepic, v: thever };

        var item;
        var key = Object.toQueryString(params);
        if ((item = tooltipcache.get (key)) !== false) {
            complete_showshoutbox(item,dropmenuobj,obj,tipwidth,ver);
            ttshowhide(dropmenuobj, e, tipwidth);
            return;
        }

        tooltiploader(dropmenuobj);

        var localobj = obj;
        var localver = ver;
        var localtipwidth = tipwidth;
        new Ajax.Request('/a_tooltip.php', {
            method: 'get',
            parameters: params,
            onSuccess: function(transport) { 
                ajaxcomplete(transport,dropmenuobj,localobj,localtipwidth,localver);
            }
        });
        
        positiontooltip(obj,dropmenuobj,tipwidth,ver);
    
        ttshowhide(dropmenuobj, e, tipwidth);
}

function fixedtooltip(menucontents, obj, e, tipwidth, shoutfocus){
    saved_etype = e.type;
    if (e.type == 'click') {
        realfixedtooltip(menucontents,obj,e,tipwidth,shoutfocus); 
    } else {
        delaytip=setTimeout(function() { realfixedtooltip(menucontents,obj,null,tipwidth,shoutfocus); },appeardelay);
    }
}

function realfixedtooltip(menucontents, obj, e, tipwidth, shoutfocus){
	shoutfocus = typeof(shoutfocus) != 'undefined' ? shoutfocus : 1;
    obj = Element.extend(obj);

    if (window.event && e) {
        e.cancelBubble=true;
    } else if (e && e.stopPropagation) {
        e.stopPropagation();
    }

    clearhidetip()
    dropmenuobj=$("fixedtipdiv");
    dropmenuobj.update(menucontents);

    positiontooltip(obj,dropmenuobj,tipwidth,0);

    if (ttshowhide(dropmenuobj, e, tipwidth) && shoutfocus) {
        tmpObj = $('shoutbox_msg');
        if (tmpObj) {
            tmpObj.focus();
        }
    }
}

function hidetip(e,reason){
    cleardelaytip()
    delayhidetip(reason);
}

function cleanuptip(dropmenuobj) {
    dropmenuobj.hide();
    dropmenuobj.update('');
    divname_hasFocus = ''; 
}

function realhidetip()
{
    if (!hide_allowed) {
        return;
    }

    dropmenuobj=$("fixedtipdiv");
    if (dropmenuobj){
        cleanuptip(dropmenuobj);
    }
}

function delayhidetip(reason){
    if (reason && reason != 0) {
        hide_allowed = 1;
        realhidetip();
        return;
    }

    //check if has message or msg is focus
    if (divname_hasFocus == 'shoutbox_msg') {
        //ignore out
        return;
    }

    tmpTxt = $('shoutbox_msg');
    if (tmpTxt && !tmpTxt.value.empty()) {
        return;
    }

    delayhide=setTimeout("realhidetip()",disappeardelay)
}

function stophidetip() {
    hide_allowed = 0;
    if (typeof delayhide!="undefined") {
        clearTimeout(delayhide);
    }
}

function forcehidetip(event) {
    hide_allowed = 1;
    hidetip(event);
}

function clearhidetip(){
    if (typeof delayhide!="undefined") {
        clearTimeout(delayhide);
    }
}

function ajaxloungetooltip(id, lounge_id, obj, e, tipwidth, target)
{
    saved_etype = e.type;
    if (e.type == 'click') {
        realajaxloungetooltip(id, lounge_id, obj, e, tipwidth, target,1);
    } else {
        delaytip=setTimeout(function() { realajaxloungetooltip(id, lounge_id, obj, null, tipwidth, target,1); },appeardelay);
    }
}

function ajaxloungetooltip_scroll(id, lounge_id, obj, e, tipwidth, target)
{
    saved_etype = e.type;
    if (e.type == 'click') {
        realajaxloungetooltip(id, lounge_id, obj, e, tipwidth, target,1);
    } else {
        delaytip=setTimeout(function() { realajaxloungetooltip(id, lounge_id, obj, null, tipwidth, target,1); },appeardelay);
    }
}

function realajaxloungetooltip(id, lounge_id, obj, e, tipwidth, target, ver)
{
    if (!hide_allowed) {
        return;
    }

    obj = Element.extend(obj);

    if (!tooltipcache) {
        tooltipcache = new myStorage ();
    }

    if (window.event && e) {
        e.cancelBubble=true;
    } else if (e && e.stopPropagation) {
        e.stopPropagation();
    }

    clearhidetip()
    clear_delay_hide_allowed()
    hide_allowed = 1;

    dropmenuobj=$("fixedtipdiv");

        if (landing_tweak == 1) {
            v = 3;
        } else {
            v = 0;
        }

        /** get data if exists */
        var params = { u: id, lid: lounge_id, target: target, v: v };

        var item;
        var key = Object.toQueryString(params);
        if ((item = tooltipcache.get (key)) !== false) {
            complete_showshoutbox(item,dropmenuobj,obj,tipwidth,ver);
            ttshowhide(dropmenuobj, e, tipwidth);
            return;
        }

        tooltiploader(dropmenuobj);

        var localobj = obj;
        var localver = ver;
        var localtipwidth = tipwidth;
        new Ajax.Request('/a_tooltip.php', {
            method: 'get',
            parameters: params,
            onSuccess: function(transport) { 
                ajaxcomplete(transport,dropmenuobj,localobj,localtipwidth,localver);
            }
        });

        positiontooltip(obj,dropmenuobj,tipwidth,ver);

        ttshowhide(dropmenuobj, e, tipwidth);
}

function ajaxmafiatooltip(id, turf_id, obj, e, tipwidth, target)
{
    saved_etype = e.type;
    if (e.type == 'click') {
        realajaxmafiatooltip(id, turf_id, obj, e, tipwidth, target,1);
    } else {
        delaytip=setTimeout(function() { realajaxmafiatooltip(id, turf_id, obj, null, tipwidth, target,1); },appeardelay);
    }
}

function ajaxmafiatooltip_scroll(id, turf_id, obj, e, tipwidth, target)
{
    saved_etype = e.type;
    if (e.type == 'click') {
        realajaxmafiatooltip(id, turf_id, obj, e, tipwidth, target,1);
    } else {
        delaytip=setTimeout(function() { realajaxmafiatooltip(id, turf_id, obj, null, tipwidth, target,1); },appeardelay);
    }
}

function realajaxmafiatooltip(id, turf_id, obj, e, tipwidth, target, ver)
{
    if (!hide_allowed) {
        return;
    }

    obj = Element.extend(obj);

    if (!tooltipcache) {
        tooltipcache = new myStorage ();
    }

    if (window.event && e) {
        e.cancelBubble=true;
    } else if (e && e.stopPropagation) {
        e.stopPropagation();
    }

    clearhidetip()
    clear_delay_hide_allowed()
    hide_allowed = 1;

    dropmenuobj=$("fixedtipdiv");

        if (landing_tweak == 1) {
            v = 3;
        } else {
            v = 0;
        }

        /** get data if exists */
        var params = { u: id, t: turf_id, target: target, v: v };

        var item;
        var key = Object.toQueryString(params);
        if ((item = tooltipcache.get (key)) !== false) {
            complete_showshoutbox(item,dropmenuobj,obj,tipwidth,ver);
            ttshowhide(dropmenuobj, e, tipwidth);
            return;
        }

        tooltiploader(dropmenuobj);

        var localobj = obj;
        var localver = ver;
        var localtipwidth = tipwidth;
        new Ajax.Request('/a_tooltip.php', {
            method: 'get',
            parameters: params,
            onSuccess: function(transport) { 
                ajaxcomplete(transport,dropmenuobj,localobj,localtipwidth,localver);
            }
        });

        positiontooltip(obj,dropmenuobj,tipwidth,ver);

        ttshowhide(dropmenuobj, e, tipwidth);
}

function delay_hide_allowed()
{
    delayhideallowed=setTimeout(set_hide_allowed,hidealloweddelay)
}

function clear_delay_hide_allowed()
{
    if (typeof delayhideallowed!="undefined")
        clearTimeout(delayhideallowed);
}

function set_hide_allowed()
{
    clear_delay_hide_allowed();
    hide_allowed = 1;
}


