/*
 * JS library containing modal dialog adaptation to Click2Sell
 * Depends
 *      jquery.c2s.common.js
 *      jquery.c2s.ajax.js
 */

var modalIndicatorClassName = "aj-modal";
var modalDialogContainerID = "aj-modal-dialog-container";

var overlayIndicatorClassName = "aj-overlay";
var overlayContainerID = "aj-overlay-dialog-container";


/*
 Any link containing class = "modal" is considered as opening a modal dialog
 */
$(document).ready(
        function()
        {
            // initialize modal dialog container
            initModalDialog();
            initOverlay();
        }
        );


/**
 * Initialization of modal dialog
 */
function initModalDialog()
{
    $(document.body).append("<div id=\"" + modalDialogContainerID + "\"></div>");
    $("#" + modalDialogContainerID).dialog({ autoOpen: false, modal : true, width : 450, position: 'center'});
    $("#" + modalDialogContainerID).dialog({
        close: function(event, ui)
        {
            $(this).empty();
        },
        open: function(event, ui)
        {
            $(this).showProgress();
        }
    });

    $("a." + modalIndicatorClassName).click(function(e)
    {
        e.preventDefault();

        if(this.href != null && this.href.indexOf('javascript') < 0)
        {
            loadATargetInModal(this.href, this.title);
        }
    });
}

function initOverlay()
{
    $(document.body).append("<div id=\"" + overlayContainerID + "\"></div>");
    $("#" + overlayContainerID).dialog({
        autoOpen: false,
        modal : false,
        width : 300,
        close: function(event, ui)
        {
            $(this).empty();
        },
        open: function(event, ui)
        {
            $(this).showProgress();
        }
    });

    $("a." + overlayIndicatorClassName).mouseover(function(e)
    {
        var coords = findBestPositionForOverlay(this);
        if(this.href == null || this.href == '' || this.href == 'javascript:void(0)')
        {
            var hintContent = $(this.firstChild).html();
            showOverlay(this.name, hintContent, [coords.left, coords.top]);
        }
        else
        {
            loadATargetInOverlay(this.href, this.name, [coords.left, coords.top]);
        }

    });

    $("a." + overlayIndicatorClassName).mouseout(function(e)
    {
        var container = $("#" + overlayContainerID);

        if(container.dialog("isOpen"))
        {
            container.dialog("close");
        }
    });

    $("a." + overlayIndicatorClassName).click(function(e)
    {
        e.preventDefault();

    });
}

function showOverlay(aTitle, htmlContent, position)
{
    if(htmlContent == null)
    {
        return;
    }

    var container = $("#" + overlayContainerID);

    if(container.dialog("isOpen"))
    {
        container.dialog("close");
    }

    if(!container.dialog("isOpen"))
    {
        container.dialog({ title : aTitle });
        container.dialog("open");
        container.empty();
        container.append(htmlContent);
        container.dialog({ position: position});

    }
}

function loadATargetInOverlay(url, aTitle, position)
{
    var container = $("#" + overlayContainerID);

    if(container.dialog("isOpen"))
    {
        container.dialog("close");
    }

    if(!container.dialog("isOpen"))
    {
        container.dialog({ title : aTitle });
        container.dialog({ position: position});
        container.dialog("open");
        ajaxLoadUrlInline(url, container, true);
    }
}

function loadATargetInModal(url, aTitle, successCallback)
{
    var container = $("#" + modalDialogContainerID);
    if(!container.dialog("isOpen"))
    {
        container.dialog({ title : aTitle });
        container.dialog("open");
        if(successCallback==null)
        {
            ajaxLoadUrlInline(url, container);
        }
        else
        {
            ajaxCallUrl(url, container, successCallback, null);
        }

    }
}


function findBestPositionForOverlay(link)
{
    var linkOffset = $(link).offset();
    var linkWidth = $(link).width();
    var scrollOffset = $(document).scrollTop();

    return { left: Math.round(linkOffset.left + linkWidth + 15), top: Math.round(linkOffset.top - 50 - scrollOffset)};
}

function closeModalDialog()
{
    var container = $("#" + modalDialogContainerID);

    if(container.dialog("isOpen"))
    {
        container.dialog("close");
    }
}

function submitModalForm(form, successCallback)
{
    ajaxSumbitFormInline(form, "#" + modalDialogContainerID, successCallback);
}

function submitModalFormForAsyncAction(form)
{
    ajaxSumbitFormForAsyncActionInline(form, "#" + modalDialogContainerID);
}




