function mouseReallyOut_mod(oThis, e) {
    if (e.relatedTarget) {
        var rslt = true;
        if (e.relatedTarget == oThis) return false;

        var etmp = e.relatedTarget.parentNode;

        while (etmp != null) {
            if (etmp == oThis) {
                return false;
            }
            etmp = etmp.parentNode;
        }
        return rslt;
    }

    if (!e.toElement) return true; //???

    return (e.toElement != oThis && e.toElement.parentNode != oThis);
}

var ShowTooltipRowTimer = 0;

var divTooltipRowId = "divTooltipForBucketPosition";
var divTooltipRowSel = 'div#' + divTooltipRowId;
var $divTooltipRow = $(divTooltipRowSel);
var $gridRes = $('table[id$="SearchResultGrid"]');
var $rows = $('tr.gvRow', $gridRes);
var $trHeigh = 500;
var $trWidth = 300;
var diamonddata = "";

function tooltiprow_mouseover(event) {

    if (!mouseReallyOut_mod(this, event)) return;
    clearTimeout(ShowTooltipRowTimer);
    var left = $(window).width() - $trWidth;
    $(this).css({ 'width': $trWidth });
}

function tooltiprow_mouseout(event) {
    if (!mouseReallyOut_mod(this, event)) return;
    $divTooltipRow.hide();
}

function getdiamondcontent(d, cont) {
    var html = [], i = 0;
    html[i++] = '<tr><td>Title</td><td>' + d.title + '</td></tr>';
    html[i++] = '<tr><td>Price</td><td>' + d.price + '</td></tr>';
    html[i++] = '<tr><td>Carat</td><td>' + d.carat + '</td></tr>';
    html[i++] = '<tr><td>Color</td><td>' + d.color + '</td></tr>';
    html[i++] = '<tr><td>Clarity</td><td>' + d.clarity + '</td></tr>';
    html[i++] = '<tr><td>Cut</td><td>' + d.cut + '</td></tr>';
    html[i++] = '<tr><td>Category</td><td>' + d.category + '</td></tr>';
    html[i++] = '<tr><td>Certificate</td><td><a target="_blank" rel="nofollow" href="/loose-diamonds/certificate.aspx?file_name=1&idno=' + d.id + '">View ' + d.cert + ' certificate</a></td></tr>';
    if (d.rating != "0_0") {
        html[i++] = '<tr><td>Rating</td><td><img src="/images/wf2/common/rating_' + d.rating + '.gif"/></td></tr>';
    }
    html[i++] = '<tr><td>Item Code</td><td>' + d.code + '</td></tr>';
    cont.append(html.join(''));
}

function getjewelrycontent(j, cont) {
    cont.append('<tr><td>Title</td><td>' + j.title + '</td></tr>');
    if (j.metals != null) {
        cont.append('<tr><td>Metal(s)</td><td>' + j.metals + '</td></tr>');
    }
    cont.append('<tr><td>Price</td><td>' + j.price + '</td></tr>');
    if (j.type == "Ring") {
        cont.append('<tr><td>Ring Size</td><td>' + j.size + '</td></tr>');
    }
    cont.append('<tr><td>Item Code</td><td>' + j.code + '</td></tr>');
}

function getcontent(data) {
    var tooltipcontent = $('<table class="two" cellspacing="0"></table>');

    if (typeof (data.type) === 'undefined') {
        getdiamondcontent(data, tooltipcontent);
    }
    else {
        getjewelrycontent(data, tooltipcontent);
    }

    $('tr td:odd', tooltipcontent).addClass('column_value');


    var $btmlinks = $('<table class="btmlinks"></table>').append('<tr></tr>');
    $('tr', $btmlinks).append('<td></td><td></td><td></td>');
    $('tr td:eq(0)', $btmlinks).append(
        '<a class="details" >View Details</a>' +
        '<a class="buywithout" >Buy without ' + ((typeof (data.type) === 'undefined') ? 'setting' : 'diamond') + '</a>' +
        '<a class="removetwo">Remove</a>');

    var tooltipcontent1 = $('<div style="overflow:hidden; width: auto; border:3px solid #A4630F"></div>')
        .append('<div style="background-color:#A4630F;font-size: 15px; color: white;text-align:center;">Details View</div>')
        .append(tooltipcontent)
        .append($btmlinks);

    return tooltipcontent1;
}

function gridrow_mouseover_mod(event) {

    $curtr = $(this);
    var rowOffset = $curtr.offset();

    $trHeigh = $divTooltipRow.height();

    var hdn = $curtr.find(".hiddendata");
    if (hdn != null) {
        diamonddata = jQuery.parseJSON(hdn.val());
    }

    clearTimeout(ShowTooltipRowTimer);
    var stop = $(document).scrollTop();
    var sbottom = stop + $(window).height();
    var top = rowOffset.top - ($trHeigh / 2);
    top = (top < stop) ? stop : top;
    var bottom = top + $trHeigh;

    top = (bottom > sbottom) ? (sbottom - $trHeigh + 20) : top;

    var right = rowOffset.left - 30;
    var width = ($trWidth > right) ? right : $trWidth;
    var left = right - width;

    var sb = $('#sidebar');
    var sboffset = sb.offset();

    right = sboffset.left + sb.width();
    left = sboffset.left;
    width = right - left;
    width = sb.width();

    width = $trWidth;

    $divTooltipRow.css({
        'top': top,
        'left': right + 34,
        'width': width,
        'display': 'block'
    });

    toparr = rowOffset.top - top;
    $('span', $divTooltipRow).css({ 'top': toparr });

    var tooltipcontent1 = getcontent(diamonddata);

    $(divTooltipRowSel + ' div').html(tooltipcontent1);
    $(divTooltipRowSel + ' span').css({ 'left': 0 });
    $(divTooltipRowSel + ' table:eq(0) tr td:even').css({ 'padding-right': '10px' });

    $('a.details', $divTooltipRow).bind("click", function () {
        document.location = $('td.img a', $curtr).attr('href');
    });

    $('a.removetwo', $divTooltipRow).bind("click", function () {
        gTrack("DeleteFromCart|sidebar-popup");
        document.location = $('td.text a', $curtr).attr('href');
    });

    var $btmlinks = $('table.btmlinks', $divTooltipRow);

    if ($('td.text div a.buy', $curtr).length == 0) {
        var $tmp_buywo = $('tr td:eq(0) a.buywithout', $btmlinks);
        $tmp_buywo.remove();
    }

    $('td.text div a', $curtr).each(function (i, vle) {
        var tmp_href = $(this).attr('href');
        var tmp_text = $(this).text();

        if ($(vle).hasClass('buy')) {
            $('tr td:eq(0) a:eq(1)', $btmlinks).attr('href', tmp_href);
        }
        else {
            $('tr td:eq(1)', $btmlinks).append('<a href="' + tmp_href + '">' + tmp_text + '</a>');
        }
    });

    $('a', $btmlinks).addClass('button compare').css({ 'cursor': 'pointer' });
    $('td', $btmlinks).css({ 'padding': '0 5px' });
    $('td a', $btmlinks).css({ 'font-size': '11px', 'margin': '5px 0' });
    $('td:eq(0) a', $btmlinks).css({ 'width': '170px' });
    $('td:eq(1) a', $btmlinks).css({ 'width': '150px' });
    $('td:eq(0) a', $btmlinks).css({ 'width': '140px' });
    $('td:eq(1) a', $btmlinks).css({ 'width': '120px' });
    $('td', $btmlinks).css({ 'vertical-align': 'top' });
}

function gridrow_mouseout(event) {
    ShowTooltipRowTimer = setTimeout("$divTooltipRow.hide()", 500);
}

function applyTooltipForBucketItems() {

    if (($divTooltipRow == null) || ($divTooltipRow.length == 0)) {

        var tmp = $('<span></span>')
                    .css({
                        'height': '0',
                        'left': '350px',
                        'margin': '0 0 0 -35px',
                        'position': 'absolute',
                        'top': '140px',
                        'width': '0'
                    });

        tmp.wrap('<div></div>').parent()
            .attr('id', divTooltipRowId)
            .prependTo('body')
            .css({
                'background-color': '#3E3518',
                'z-index': '2000',
                'width': $trWidth,
                'color': 'gray',
                'position': 'absolute',
                'display': 'none'
            })
	        .append('<div></div>');

        $divTooltipRow = $(divTooltipRowSel);

        $(divTooltipRowSel + ' table').css({ 'padding': '0 10px 10px' });
    }

    $(".sOthRow").hover(gridrow_mouseover_mod, gridrow_mouseout);
    $divTooltipRow.hover(tooltiprow_mouseover, tooltiprow_mouseout);
}

