﻿
function M3_ResizePanelResize(sender, eventArgs) {
    var el = sender.get_element();
    var index, bodyID, handleID;
    var target, value;
    var w, h, u;
    
    handleID = el.id + '_Handle';
    bodyID = el.id + '_Body';
    
    u = AjaxControlToolkit.CommonToolkitScripts.parseUnit(el.style.width);
    if (u && u.type == 'px') {
        w = u.size;
    } else {
        w = el.offsetWidth;
    }

    u = AjaxControlToolkit.CommonToolkitScripts.parseUnit(el.style.height);
    if (u && u.type == 'px') {
        h = u.size;
    } else {
        h = el.offsetHeight;
    }
    
    target = $get(bodyID);
    if (target) {
        value = w - 12;
        if (value < 0) value = 0;
        target.style.width = value + 'px';
        value = h - 28;
        if (value < 0) value = 0;
        target.style.height = value + 'px';
    }
    
    target = $get(handleID);
    if (target) {
        value = w - 0;
        if (value < 0) value = 0;
        target.style.width = value + 'px';
    }
}

function M3_ResizePanelInitialized(sender, eventArgs) {
    var el = sender.get_element();
   
    // get initial position
    if (el.getAttribute) {
        if (!el.floatInitialX) el.floatInitialX = el.getAttribute("floatInitialX");
        if (!el.floatInitialY) el.floatInitialY = el.getAttribute("floatInitialY");
    }
    
    if (!el.floatInitialX || el.floatInitialX == '' || el.floatInitialX == 0) {
        el.floatInitialX = null;
    } else {
        if (typeof(el.floatInitialX) != "string") el.floatInitialX = el.floatInitialX + "px";
    }
    
    if (!el.floatInitialY || el.floatInitialY == '' || el.floatInitialY == 0) {
        el.floatInitialY = null;
    } else {
        if (typeof(el.floatInitialY) != "string") el.floatInitialY = el.floatInitialY + "px";
    }
    if (!el.floatInitialX || !el.floatInitialY) {
        // minimum change
        var loc;
        if (el.style.display == 'none') {
            el.style.display = 'block';
            loc = AjaxControlToolkit.CommonToolkitScripts.getLocation(el);
            el.style.display = 'none';
        } else {
            loc = AjaxControlToolkit.CommonToolkitScripts.getLocation(el);
        }
        if (!el.floatInitialX) el.floatInitialX = loc.x + "px";
        if (!el.floatInitialY) el.floatInitialY = loc.y + "px";
    }
    el.style.left = el.floatInitialX;
    el.style.top = el.floatInitialY;
    
    var elPin = $get(el.id + '_Pin');
    if (elPin) {
        el.style.position = 'fixed';
        if (el.getAttribute) {
            if (el.getAttribute("isPinned") == '1') {
                el.style.position = 'absolute';
            }
        }
        M3_ResizePanelFixFloat(elPin);
    }
}
function M3_ResizePanelFixFloat(el) {
    var id, index, prefix, elAll, src;
    id = el.id;
    index = id.lastIndexOf('_');
    if (index < 0) return;
    prefix = id.substring(0, index);
    
    elAll = $get(prefix);
    
    src = el.src;
    if (src) {
        index = src.lastIndexOf('/');
        if (index < 0) src = null;
        else src = src.substring(0, index+1);
    }
    var loc = AjaxControlToolkit.CommonToolkitScripts.getLocation(elAll);
    if (elAll.style.position == 'fixed' || elAll.fixedBehavior) {
        if (src) el.src = src + 'panel_float.gif';
        el.alt = 'Floating';

        M3_M3ResizePanelDisposeBehaviors(elAll);

        if (M3AjaxUtil.fixedPosToAbsolute(elAll, loc)) {
            AjaxControlToolkit.CommonToolkitScripts.setLocation(elAll, loc);
        }
        
        elAll.style.position = 'absolute';
    } else {
        if (src) el.src = src + 'panel_fix.gif';
        el.alt = 'Fixed';
        
        if (typeof(M3Ajax.M3AlwaysVisibleControlBehavior) == 'function' && 
            (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version < 7)) {
            if (!M3AjaxUtil.absolutePosToFixed(elAll, loc)) {
                // Browser Specific??
                loc.x -= 6;
                loc.y -= 2;
                if (loc.x < 0) loc.x = 0;
                if (loc.y < 0) loc.y = 0;
            }
            
            M3_M3ResizePanelDisposeBehaviors(elAll);
            
            elAll.fixedBehavior = $create(
                M3Ajax.M3AlwaysVisibleControlBehavior, 
                {
                    "HorizontalSide" : AjaxControlToolkit.HorizontalSide.Left,
                    "VerticalSide" : AjaxControlToolkit.VerticalSide.Top,
                    "HorizontalOffset" : loc.x,
                    "VerticalOffset" : loc.y
                }, 
                null, null, elAll);
            elAll.fixedBehavior.add_disposing(Function.createCallback(M3_M3ResizePanelFixedBehavior_Dispose, elAll));
            
            var drag = $find(elAll.id + '_Drag');
            if (drag) {
                elAll.dragHandler = Function.createCallback(M3_M3ResizePanelFixedBehavior_Move, elAll);
                drag.add_move(elAll.dragHandler);
            }
        } else {
            if (M3AjaxUtil.absolutePosToFixed(elAll, loc)) {
                AjaxControlToolkit.CommonToolkitScripts.setLocation(elAll, loc);
            }
            elAll.style.position = 'fixed';
        }
    }
}

function M3_M3ResizePanelDisposeBehaviors(el) {
    if (!el) return;
    if (el.fixedBehavior) {
        el.fixedBehavior.dispose();
        el.fixedBehavior = null;
    }
    
    if (el.dragHandler) {
        var drag = $find(el.id + '_Drag');
        if (drag) {
            drag.remove_move(el.dragHandler);
        }
        el.dragHandler = null;
    }
}

function M3_M3ResizePanelFixedBehavior_Move(src, e, el) {
    if (el.fixedBehavior) {
        var loc = AjaxControlToolkit.CommonToolkitScripts.getLocation(el);
        var offset = M3AjaxUtil.getScrollOffset(el, true);
        loc.x -= offset.x;
        loc.y -= offset.y;
        if (loc.x < 0) loc.x = 0;
        if (loc.y < 0) loc.y = 0;
        el.fixedBehavior.set_HorizontalOffset(loc.x);
        el.fixedBehavior.set_VerticalOffset(loc.y);
    }
}

function M3_M3ResizePanelFixedBehavior_Dispose(src, e, el) {
    el.fixedBehavior = null;
}


function M3_FindTogglePanelInitialized(sender, eventArgs) {
    var el = sender.get_element();
    M3_FindTogglePanelSwitch($get(el.id + '_ToggleBody'));
    var elLabel = $get(el.id + '_Label');
    if (elLabel) {
        // need to clear label size to fit resizing _Both panel.
        elLabel.style.width = '';
        elLabel.style.height = '';
    }
    M3_ResizePanelInitialized(sender, eventArgs);
}

function M3_FindTogglePanelSwitch(el) {
    var id, index, prefix;
    var elInput, elBody, elBoth, elAll, resizeExt;
    id = el.id;
    index = id.lastIndexOf('_');
    if (index < 0) return;
    prefix = id.substring(0, index);
    
    elInput = $get(prefix + '_Body');
    elLabel = $get(prefix + '_Label');
    elBoth = $get(prefix + '_Both');
    elAll = $get(prefix);
    resizeExt = $find(prefix + "_Resize");
    if (elInput && elLabel && elAll) {
        if (el.islabel == 'true') {
            // store previous size
            el.labelWidth = elAll.offsetWidth;
            el.labelHeight = elAll.offsetHeight;
            
            elInput.style.display = '';
            elLabel.style.display = 'none';
            el.islabel = 'false';
            if (el.labeltext) {
                el.innerHTML = el.labeltext;
            }
            
            // adjust size
            if (!el.inputWidth) {
                el.inputWidth = elInput.offsetWidth + 14;
                el.inputHeight = elInput.offsetHeight + 28;
            }
            resizeExt.set_Size({width:el.inputWidth, height:el.inputHeight});
        } else {
            // store previous size
            el.inputWidth = elAll.offsetWidth;
            el.inputHeight = elAll.offsetHeight;
            
            elInput.style.display = 'none';
            elLabel.style.display = '';
            el.islabel = 'true';
            if (el.inputtext) {
                el.innerHTML = el.inputtext;
            }
            
            // adjust size
            if (!el.labelWidth) {
                el.labelWidth = elLabel.offsetWidth + 14;
                el.labelHeight = elLabel.offsetHeight + 28;
            }
            resizeExt.set_Size({width:el.labelWidth, height:el.labelHeight});
        }
    }
}

function M3_SetPageMessage(popupBodyID) {
    var el = $get(popupBodyID);
    // div(body)/div/span
    if (!el || !el.childNodes || el.childNodes.length < 1) return;
    el = el.childNodes[0];
    if (!el || !el.childNodes || el.childNodes.length < 1) return;
    var srcNode = el.childNodes[0];
    
    var msgNode = $get('h_NoticeMsg');
    if (!msgNode) return; // unknown design
    var icoNode = msgNode.previousSibling;
    if (!icoNode || icoNode.className != 'h_noticeicon') return; // unknown design
    
    msgNode.innerHTML = srcNode.innerHTML;
    var s = srcNode.className;
    if (s && s.length > 0) {
        icoNode.id = 'h_Notice' + s.charAt(0).toUpperCase() + s.substring(1);
    }
}

function M3_PopupMessageTimerClose(popupID) {
    var el = $get(popupID + "_M_Body");
    if (!el) return;
    var childEl = document.createElement("input");
    childEl.type = "button";
    childEl.value = "OK";
    childEl.name = "popupMessageClose";
    if (navigator.appName.charAt(0) == "M") 
    {
        childEl.setAttribute("onclick", new Function("M3_PopupMessageClose('" + popupID + "');"));
    }
    else
    {
        childEl.setAttribute("onclick", "M3_PopupMessageClose('" + popupID + "')");
    }
    if (el.childNodes)
    {
        el.childNodes[0].appendChild(childEl);
    }
    var now = (new Date()).toLocaleString(); 
    childEl = document.createElement("input");
    childEl.type = "hidden";
    childEl.id = popupID + "_T";
    childEl.value = now;
    el.appendChild(childEl);
    setTimeout("M3_PopupMessageTimerCloseImpl('" + popupID + "', '" + now + "')", 10000);
}

function M3_PopupMessageTimerCloseImpl(popupID, timerKey) {
    var el = $get(popupID + "_T");
    if (!el || el.value != timerKey) return; 
    M3_PopupMessageClose(popupID);
}

function M3_PopupMessageClose(popupID) {
    var el = $get(popupID + "_M");
    if (!el) return;
    el.style.border = '0px';
    el.style.display = 'none';
    if (!el.childNodes[0]) return;
    el.childNodes[0].style.display = 'none';
    if (!el.childNodes[1]) return;
    el.childNodes[1].style.display = 'none';
}

function M3_ClearPageMessage() {
    var msgNode = $get('h_NoticeMsg');
    if (!msgNode) return; // unknown design
    var icoNode = msgNode.previousSibling;
    if (!icoNode || icoNode.className != 'h_noticeicon') return; // unknown design
    
    msgNode.innerHTML = '';
    icoNode.id = 'h_NoticeNone';
}
function M3_SetOfficeInfo(id) {
    var el = $get(id);
    if (!el) return;
    var s;
    try
    {
        s = test_test();
        s = s + "(Officeアドインをインストールするには、インターネットに接続する必要があります。)<br/>";
    }
    catch (e)
    {
        s = "(Officeアドインをインストールするには、インターネットに接続する必要があります。)";
    }
    el.innerHTML = s;
}

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();

