﻿function PXS_ModalDialogButtonPopup(pageUrl, personalizationScope, webPartID, exitEditModeOnDialogSubmit)
{
    this.pageUrl = pageUrl;
    this.personalizationScope = personalizationScope;
    this.webPartID = webPartID;
    this.exitEditModeOnDialogSubmit = exitEditModeOnDialogSubmit; 
    
    this.show = function(url, width, height, id)
    {
        var retVal = window.showModalDialog(
            url + '?PageUrl=' + this.pageUrl + '&Scope=' + this.personalizationScope + '&WPID=' + this.webPartID + '&GUID=' + id, 
            'PXS_ModalDialog', 
            'dialogWidth:' + width + 'px;dialogHeight:' + height + 'px;resizable:no;status:no;help:no;scroll:no;');
        
        if (retVal != null)
        {
            var webPart = this.findWebPart(this.webPartID);
            
            if (webPart != null)
            {
                var properties = eval('(' + retVal + ')');
                
                for (i = 0; i < properties.length; i++)
                {
                    webPart.Properties.Item(properties[i].Name).Value = unescape(properties[i].Value);
                }

                webPart.Save(false, this.saveCallback);
            }
        }
    }
    
    this.saveCallback = function (saveSucceeded, soapExceptionText, soapStatus)
    {
        if (saveSucceeded)
        {
            if (!exitEditModeOnDialogSubmit)
            {
                RestoreToOriginalFormAction();
		        document.forms[MSOWebPartPageFormName].submit();
            }
            else
            {
                MSOLayout_ChangeLayoutMode(null, true);
            }
            
		    return;
        }
        else
        {
            alert(soapExceptionText);
        }
    }
    
    this.findWebPart = function (storageKey)
    {
        for (var i = 0; i < WPSC.WebPartPage.Parts.Count; i++)
        {
            var webPart = WPSC.WebPartPage.Parts.Item(i);
            
            if (webPart.StorageKey == storageKey)
            {
                return webPart;
            }
        }
    }
}