//  NK      14.05.2001 	Close global engine popup when opening a new one!
//  NK      14.05.2001 	Within a same site, append each window name with the session id
//					   	to resolve session conflict between different sites  !
//  NK      22.05.2001 	If a popup is already opened ( check if its name is equal with the one to open),
//						give it the focus instead of close and reopen it.
//  NK      30.01.2002 	yO ! another subtil bug found.
//						Added closeEngineWin(), this function should be set on the "onUnload" and "onClose()" event
//						of any page from which engine popup can be launched.
//						This ensure that when the page is closed or unloaded,any engine popup that is left open is closed !!!!
//						Whitout that, more than one engine can be left open and this means -> possible engine session conflict !!!!
//


// global popup
myEngineWin = null;

// OpenJahiaWindow
function OpenJahiaWindow(url, name, width, height){
    var params;
    if (screen.availHeight <= 600) {
        params = "width=" + width + ",height=" + height + ",resizable=yes,scrollbars=yes,status=no";
    } else {
        params = "width=" + width + ",height=" + height + ",resizable=yes,scrollbars=no,status=no";
    }
    var theMatrix = Math.round(Math.random() * 10000);

    var newURL = url + "&matrix=" + theMatrix;

    // Hollis : check if the popup is alread opened, if so, give it the focus
    if (myEngineWin != null) {
        try {
            if (myEngineWin.closed) { // need to test it first...
                myEngineWin = null;
                myEngineWin = window.open(newURL, name, params);
            } else {
                if (myEngineWin.name != name) {
                    myEngineWin.close();
                    myEngineWin = null;
                    myEngineWin = window.open(newURL, name, params);
                } else {
                    myEngineWin.focus();
                }
            }
        } catch (ex) {
            // suppress exception
        }
    } else {
        myEngineWin = window.open(newURL, name, params);
    }

}
// end OpenJahiaWindow


// OpenJahiaScrollableWindow
function OpenJahiaScrollableWindow(url, name, width, height){

    var params = "width=" + width + ",height=" + height + ",resizable=1,scrollbars=1,status=0";

    var theMatrix = Math.round(Math.random() * 10000);
    var newURL = url + "&matrix=" + theMatrix;

    // Check if the popup is alread opened, if so, give it the focus
    if (myEngineWin != null) {
        try {
            if (myEngineWin.closed) { // need to test it first...
                myEngineWin = null;
                myEngineWin = window.open(newURL, name, params);
            } else {
                if (myEngineWin.name != name) {
                    myEngineWin.close();
                    myEngineWin = null;
                    myEngineWin = window.open(newURL, name, params);
                } else {
                    myEngineWin.focus();
                }
            }
        } catch (ex) {
            // suppress exception
        }
    } else {
        myEngineWin = window.open(newURL, name, params);
    }


}
// end OpenJahiaScrollableWindow


// ReloadEngine
function ReloadEngine(params){
    var oldurl = location.href;
    var pos = oldurl.indexOf("&engine_params");
    if (pos != -1) {
        oldurl = oldurl.substring(0, pos);
    }
    var newurl = oldurl + "&engine_params=" + params;
    location.href = newurl;

}
// end ReloadEngine

function closeEngineWin() {
    if (myEngineWin != null) {
        try {
            if (myEngineWin.closed) { // need to test it first...
                myEngineWin = null;
            } else {
                myEngineWin.close();
                myEngineWin = null;
            }
        } catch (ex) {
            // suppress exception
        }
    }
}

function closeEngineWinAllPopups() {
    document.body.style.cursor = "default";
    if (myEngineWin != null) {
        if (myEngineWin.closed) { // need to test it first...
            if (myEngineWin.myWin && !myEngineWin.myWin.closed) {
                myEngineWin.myWin.close();
            }
            myEngineWin.myWin = null;
            myEngineWin = null;
        } else {
            if (myEngineWin.myWin && !myEngineWin.myWin.closed) {
                myEngineWin.myWin.close();
            }
            myEngineWin.close();
            myEngineWin.myWin = null;
            myEngineWin = null;
        }
    }
}

// Open "Work in progress window"
// param httpserverpath should be http://<servername>:<port>
function openWorkInProgressWindow(httpServerPath){

    var params = "width=200,height=200,resizable=0,scrollbars=0,status=0";

    var theMatrix = Math.round(Math.random() * 10000);
    var theUrl = httpServerPath;

    theUrl += "/jsp/jahia/administration/work_in_progress.html" + "?matrix=" + theMatrix;
    //var workInProgressWin = window.open( theUrl, "workInProgressWin", params );
    myEngineWin = window.open(theUrl, "workInProgressWin", params);

}
// openWorkInProgressWindow

var oldLoc = "";

// CloseJahiaWindow
function CloseJahiaWindow(){
    var params = "";
    if (CloseJahiaWindow.arguments.length > 0) {
        params = CloseJahiaWindow.arguments[0];
    }
    var theMatrix = Math.round(Math.random() * 10000);
    var oldUrl = window.opener.location.href;
    if (oldUrl.indexOf("matrix") != -1) {
        oldUrl = oldUrl.substring(0, oldUrl.indexOf("matrix") - 1);
    }
    var pos = oldUrl.indexOf("&engine_params");
    if (pos != -1) {
        oldUrl = oldUrl.substring(0, pos);
    }

    var pos2 = oldUrl.indexOf("#");
    var anchorVal = oldUrl.substring(pos2, oldUrl.length);

    if (pos2 != -1) {
        oldUrl = oldUrl.substring(0, pos2);

    }

    var newUrl = "";


    if (oldUrl.indexOf("?") != -1) {
        newUrl = oldUrl + "&matrix=" + theMatrix;
        if (pos2 != -1) {
            newUrl = newUrl + anchorVal;
        }
    } else {
        newUrl = oldUrl + "?matrix=" + theMatrix;
        if (pos2 != -1) {
            newUrl = newUrl + anchorVal;
        }
    }
    if (params != "") {
        newUrl += params;
        if (pos2 != -1) {
            newUrl = newUrl + anchorVal;
        }
    }

    // alert( "Rereshing window with url :\n" + newUrl );

    if (params.indexOf("submit") != -1) {
        if (window.opener != null) {
            window.opener.document.forms[0].submit();
        }
        window.close();
    } else {
        window.opener.location.href = newUrl;
        oldLoc = window.opener.location;
        WaitForRefresh();
    }

}
// end CloseJahiaWindow


// CloseJahiaWindow - added for deleting current site to display parentsite after delete
function CloseJahiaWindowWithUrl(newUrl){
    var theMatrix = Math.round(Math.random() * 10000);

    if (newUrl.indexOf("?") != -1)
        newUrl = newUrl + "&matrix=" + theMatrix;
    else newUrl = newUrl + "?matrix=" + theMatrix;

    //alert( "Rereshing window with url :\n" + newUrl );

    window.opener.location.href = newUrl + "&matrix=" + theMatrix;
    oldLoc = window.opener.location;
    WaitForRefresh();

}
// end CloseJahiaWindow

// saveAndAddNew
function saveAndAddNew(url, refreshOpener) {
    var engineWin = window.opener.myEngineWin;
    window.opener.myEngineWin = null;
    window.location.href = defineMatrixParam(url);
    if (refreshOpener.indexOf("yes") > -1) {
        window.opener.location.href = defineMatrixParam(window.opener.location.href);
    }
    oldLoc = window.opener.location;
    while (window.opener.location != null
            && (oldLoc != window.opener.location)) {
        setTimeout("", 1000);
    }
    window.opener.myEngineWin = engineWin;
}


// applyJahiaWindow
function applyJahiaWindow(url){
    var oldEngine = window.opener.myEngineWin;
    window.opener.myEngineWin = null;
    window.location.href = defineMatrixParam(url);
    window.opener.location.href = defineMatrixParam(window.opener.location.href);
    // Skip temporary while netscape does no work.
    var browser = navigator.appName;
    if (browser.indexOf("Netscape") != -1) {
        return;
    } else {
        // FIXME : The following lines work with IE but not with netscape !!!
        window.opener.document.title = "fake";
        while (window.opener.document != null &&
               window.opener.document.title == "fake") {
            setTimeout("", 1000);
        }
    }
    window.opener.myEngineWin = oldEngine;
}

// defineMatrixParam
function defineMatrixParam(url){
    var newUrl = url;
    var endUrl = "";
    var matrixPos = url.indexOf("matrix=");
    if (matrixPos != -1) {
        newUrl = url.substring(0, matrixPos);
        var i = matrixPos;
        for (; i < url.length && url.charAt(i) != "&"; i++);
        endUrl = url.substr(i);
    } else if (newUrl.indexOf("?") == -1) {
        newUrl += "?";
    } else {
        newUrl += "&";
    }

    newUrl += "matrix=" + Math.round(Math.random() * 10000) + endUrl;
    //alert(newUrl);
    return newUrl;
}

// closePopupWindow
function closePopupWindow(){
    var params = "";
    if (closePopupWindow.arguments.length > 0) {
        params = closePopupWindow.arguments[0];
    }
    if (closePopupWindow.arguments.length > 1) {
        var refreshOpener = closePopupWindow.arguments[1];
        if (refreshOpener == "yes") {
            var theUrl = window.opener.location.href;
            if (theUrl.indexOf("?") != -1) {
                if (params.charAt(0) == "&") {
                    theUrl += params;
                } else {
                    theUrl += "&" + params;
                }
            } else {
                if (params.charAt(0) == "&") {
                    theUrl += "?" + params.substring(1, params.length);
                } else {
                    theUrl += "?" + params;
                }
            }
            window.opener.location.href = defineMatrixParam(theUrl);
        }
    }
    window.close();
}

// applyPopupWindow
function applyPopupWindow(popupNewUrl, openerUrlParams, refreshOpener){
    if (refreshOpener == "yes") {
        var theUrl = window.opener.location.href;
        if (theUrl.indexOf("?") != -1) {
            if (openerUrlParams.charAt(0) == "&") {
                theUrl += openerUrlParams;
            } else {
                theUrl += "&" + openerUrlParams;
            }
        } else {
            if (openerUrlParams.charAt(0) == "&") {
                theUrl += "?" + openerUrlParams.substring(1, openerUrlParams.length);
            } else {
                theUrl += "?" + openerUrlParams;
            }
        }
        window.opener.location.href = defineMatrixParam(theUrl);
        WaitForRefresh();
    }
    window.location.href = defineMatrixParam(popupNewUrl);
}

// WaitForRefresh (called by CloseJahiaWindow)
function WaitForRefresh(){
    // alert( "Trying to close" );
    var newLoc = window.opener.location
    if (newLoc != oldLoc) {
        var timer = setTimeout("WaitForRefresh()", 100);
    } else {
        window.close();
    }
}
// end WaitForRefresh


function MM_preloadImages() { //v3.0
    var d = document;
    if (d.images) {
        if (!d.MM_p) d.MM_p = new Array();
        var i,j = d.MM_p.length,a = MM_preloadImages.arguments;
        for (i = 0; i < a.length; i++)
            if (a[i].indexOf("#") != 0) {
                d.MM_p[j] = new Image;
                d.MM_p[j++].src = a[i];
            }
    }
}

function MM_swapImgRestore() { //v3.0
    var i,x,a = document.MM_sr;
    for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++) x.src = x.oSrc;
}

function MM_findObj(n, d) { //v3.0
    var p,i,x;
    if (!d) d = document;
    if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
        d = parent.frames[n.substring(p + 1)].document;
        n = n.substring(0, p);
    }
    if (!(x = d[n]) && d.all) x = d.all[n];
    for (i = 0; !x && i < d.forms.length; i++) x = d.forms[i][n];
    for (i = 0; !x && d.layers && i < d.layers.length; i++) x = MM_findObj(n, d.layers[i].document);
    return x;
}

function MM_swapImage() { //v3.0
    var i,j = 0,x,a = MM_swapImage.arguments;
    document.MM_sr = new Array;
    for (i = 0; i < (a.length - 2); i += 3)
        if ((x = MM_findObj(a[i])) != null) {
            document.MM_sr[j++] = x;
            if (!x.oSrc) x.oSrc = x.src;
            x.src = a[i + 2];
        }
}


function setfocus() {
}
// This function has to be on the body tag (onLoad) but the declaration isn't on all includes.


// Used with container list pagination
// Set
function changePage(whatForm, scrollingInput, val){
    scrollingInput.value = val;
    whatForm.submit();
}


window.onunload = closeEngineWinAllPopups;