/************** String.Format Utility in JS ********************/
function _StringFormatInline() {
    var txt = this;
    for (var i = 0; i < arguments.length; i++) {
        var exp = new RegExp('\\{' + (i) + '\\}', 'gm');
        txt = txt.replace(exp, arguments[i]);
    }
    return txt;
}

function _StringFormatStatic() {
    for (var i = 1; i < arguments.length; i++) {
        var exp = new RegExp('\\{' + (i - 1) + '\\}', 'gm');
        arguments[0] = arguments[0].replace(exp, arguments[i]);
    }
    return arguments[0];
}

if (!String.prototype.format) {
    String.prototype.format = _StringFormatInline;
}

if (!String.format) {
    String.format = _StringFormatStatic;
}
/************** String.Format Utility in JS ********************/    

function SBClick(provider, linkUrl, bookmarkUrl, bookmarkTitle) {
    linkUrl = String.format(linkUrl, encodeURIComponent(bookmarkUrl), encodeURIComponent(bookmarkTitle));
    window.open(linkUrl, 'ww_share', '');
    return;
}

function ShowSharePopup(event) {
    var spanSharePopup = document.getElementById('sharePopup');
    var objShareBookmarker = document.getElementById('tblShareBookmarker');
    var x, y, residualDistance, leftScrollX, topScrollY, popupWidth;

    leftScrollX = document.documentElement.scrollLeft == 0 ? document.body.scrollLeft : document.documentElement.scrollLeft;
    topScrollY = document.documentElement.scrollTop == 0 ? document.body.scrollTop : document.documentElement.scrollTop;
    popupWidth = spanSharePopup.clientWidth == 0 ? 220 : spanSharePopup.clientWidth;

    x = getXPosition(objShareBookmarker);
    y = getYPosition(objShareBookmarker) + objShareBookmarker.clientHeight - 5;

    residualDistance = (leftScrollX + document.documentElement.offsetWidth) - x;
    if (residualDistance < popupWidth + 25) {
        x = x - popupWidth + objShareBookmarker.clientWidth;
    }
    spanSharePopup.style.position = "absolute";
    spanSharePopup.style.display = 'inline';
    if (!event) var event = window.event;
    spanSharePopup.style.top = y + 'px';
    spanSharePopup.style.left = x + 'px';
    spanSharePopup.zindex = y + topScrollY;
    return false;
}

function HideSharePopup() {
    document.getElementById('sharePopup').style.display = 'none';
}

function getXPosition(obj) {
    var leftValue = 0;
    while (obj) {
        leftValue += obj.offsetLeft;
        obj = obj.offsetParent;
    }
    return leftValue;
}

function getYPosition(obj) {
    var topValue = 0;
    while (obj) {
        topValue += obj.offsetTop;
        obj = obj.offsetParent;
    }
    return topValue;
}
