function vote_request(url, deal_id, value, reload, popup) {
    set_check_cookie();
    AjaxEngine.makeReplaceCall(
        'rating',
        {
            'url'        : url,
            'parameters' : {
                'cmd'     : 'vote',
                'popup'   : popup,
                'deal_id' : deal_id,
                'value'   : value
            },
            'timeout'    : 20000,
            'onLoading'  : function() { loader_show(); },
            'onComplete' : function() { loader_hide();  if (reload) { window.location.reload(true); } },
            'onError'    : function() { loader_hide(); alert('An error has occured. Please try again.'); },
            'onTimeout'  : function() { loader_hide(); alert('The request has timed out. Please try again.'); }
        }
    );
}


function loader_show() {
    var loader = document.getElementById('ajax');
    loader.style.display = 'block';
}


function loader_hide() {
    document.getElementById('ajax').style.display = 'none';
}


function vote_hover(event, element) {
    if (event.type == 'mouseover') {
        element.style.backgroundPosition = '0px -20px';
    }
    else if (event.type == 'mouseout') {
        if (element.className.indexOf('selected') == -1) {
            element.style.backgroundPosition = '0px 0px';
        }
    }
}


function vote_lightbox(deal_id) {
    var div_lightbox = document.getElementById('slug');
    if ((div_lightbox == null) || (typeof(div_lightbox) == 'undefined')) {
        return;
    }

    var li_container = document.getElementById('vote_' + deal_id).parentNode;
    var div_summary  = li_container.getElementsByTagName('div')[5];
    var pos_summary  = find_pos(div_summary);
    div_lightbox.style.display = 'block';
}


function find_pos(element) {
    var offset_left = 0;
    var offset_top  = 0;
    if (element.offsetParent) {
        offset_left = element.offsetLeft;
        offset_top  = element.offsetTop;
        while (element = element.offsetParent) {
            offset_left += element.offsetLeft;
            offset_top  += element.offsetTop;
        }
    }
    return [offset_left, offset_top];
}
