/**
*
*  Simple Context Menu
*  http://www.webtoolkit.info/
*
**/
var lukk = true;

var SimpleContextMenu = {

    // private attributes
    _menus : new Array,
    _attachedElement : null,
    _menuElement : null,
    _preventDefault : true,
    _preventForms : true,


    // public method. Sets up whole context menu stuff..
    setup : function (conf) {

        if ( document.all && document.getElementById && !window.opera ) {
            SimpleContextMenu.IE = true;
        }

        if ( !document.all && document.getElementById && !window.opera ) {
            SimpleContextMenu.FF = true;
        }

        if ( document.all && document.getElementById && window.opera ) {
            SimpleContextMenu.OP = true;
        }

        if ( SimpleContextMenu.IE || SimpleContextMenu.FF ) {

            document.oncontextmenu = SimpleContextMenu._show;
            document.onclick = SimpleContextMenu._hide;

            if (conf && typeof(conf.preventDefault) != "undefined") {
                SimpleContextMenu._preventDefault = conf.preventDefault;
            }

            if (conf && typeof(conf.preventForms) != "undefined") {
                SimpleContextMenu._preventForms = conf.preventForms;
            }

        }

    },


    // public method. Attaches context menus to specific class names
    attach : function (classNames, menuId) {

        if (typeof(classNames) == "string") {
            SimpleContextMenu._menus[classNames] = menuId;
        }

        if (typeof(classNames) == "object") {
            for (x = 0; x < classNames.length; x++) {
                SimpleContextMenu._menus[classNames[x]] = menuId;
            }
        }

    },


    // private method. Get which context menu to show
    _getMenuElementId : function (e) {

        if (SimpleContextMenu.IE) {
            SimpleContextMenu._attachedElement = event.srcElement;
        } else {
            SimpleContextMenu._attachedElement = e.target;
        }

        while(SimpleContextMenu._attachedElement != null) {
            var className = SimpleContextMenu._attachedElement.className;

            if (typeof(className) != "undefined") {
                className = className.replace(/^\s+/g, "").replace(/\s+$/g, "")
				//alert(className);
				//Setter hvilken mappe/fil som er aktuell ved å legge stien i en hidden div
				document.getElementById('aktuellMappe').innerHTML = className;
				
				//har satt variablen lukk, fordi menyen lukker seg egentlig etter hvert klikk på menyen, men den skal ikke lukke seg etter trykk på endring av adgangskontroll
				//finner hvilken meny som er åpen, og endrer onclickfunksjonen deretter, ved trykk skal en javascriptfunksjon kalles opp, og containernavnet sendes med
				//Lager bare onclick-funksjoner hvis høyreklikket ble gjort over en mappe eller fil
				if(className != ""){
					document.getElementById('nyMamppe').onclick = function(){
						funksjonen("nyMappe", className);
						lukk = true;
					}
					document.getElementById('nyttNavn').onclick = function(){
						funksjonen("nyttNavn", className);
						lukk = true;
					}
					document.getElementById('lastOppFil').onclick = function(){
						funksjonen("lastOppFil", className);
						lukk = true;
					}
					document.getElementById('slett').onclick = function(){
						funksjonen("slett", className);
						lukk = true;
					}
					
					lukk = true;
					//skifter adgangsnivå på den aktuelle mappen eller filen med ajax
					
					document.getElementById('gronn').onclick = function(){
						lukk = false;
						document.getElementById('adgangsnivaa').src = "plugin/btudok/gfx/rgb1.gif";
						
						//ved endring av sikkerthetsnivå til grønn eller rød, fjernes vinduet med brukere til høyre hvis det er oppe
						document.getElementById('leggTilBrukere').style.display = "none";
						document.getElementById('adgangRod').style.display = "none";
						document.getElementById('adgangGronn').style.display = "block";
						
						//alert(document.getElementById('adgangGronn').style.display);
						
						getFromServer("ajax_filetree.php?endreAdgang=ja&farge=gronn&container="+className, nivaaEndre)
						
						/*document.getElementById('mineDokumenterVindufade').style.display = "block";
						FadeOpacity("mineDokumenterVindufade", 40, 0, 200,20);
						setTimeout("settDisplayNone('mineDokumenterVindufade')", 200);*/
					}
					
					document.getElementById('gul').onclick = function(){
						lukk = false;
						document.getElementById('adgangsnivaa').src = "plugin/btudok/gfx/rgb2.gif";
						
						//lukker grønn eller rødt vindu hvis det er åpent
						document.getElementById('adgangGronn').style.display = "none";
						document.getElementById('adgangRod').style.display = "none";
						document.getElementById('leggTilBrukere').style.display = "block";
						
						
						getFromServer("ajax_filetree.php?endreAdgang=ja&farge=gul&container="+className, nivaaEndre);
						
						//ved endring til gult, skal man få tilbudet om å legge en del brukere over som medlemmer, eller fjerne medlemmer
						getFromServer("ajax_filetree.php?endreMedlemmer=ja&farge=gul&container="+className, medlemmerEndret);
					}
					
					document.getElementById('rod').onclick = function(){
						lukk = false;
						document.getElementById('adgangsnivaa').src = "plugin/btudok/gfx/rgb3.gif";
						
						//ved endring av sikkerthetsnivå til grønn eller rød, fjernes vinduet med brukere til høyre hvis det er oppe
						document.getElementById('leggTilBrukere').style.display = "none";
						document.getElementById('adgangGronn').style.display = "none";
						document.getElementById('adgangRod').style.display = "block";
						
						//alert("adgangrod "+document.getElementById('adgangRod').style.display);
						getFromServer("ajax_filetree.php?endreAdgang=ja&farge=rod&container="+className, nivaaEndre);
						
						/*document.getElementById('mineDokumenterVindufade').style.display = "block";
						FadeOpacity("mineDokumenterVindufade", 40, 0, 200,20);
						setTimeout("settDisplayNone('mineDokumenterVindufade')", 200);*/
					}
					
					//setter riktig adgangsbildet (grønn,gul,rød) etter hvilken mappe/fil som ble trykket på med ajax
					getFromServer("ajax_filetree.php?settAdgangsbilde=ja&container="+className, settBilde);
					
					var classArray = className.split(/[ ]+/g);
	
					for (i = 0; i < classArray.length; i++) {
						if (SimpleContextMenu._menus[classArray[i]]) {
							return SimpleContextMenu._menus[classArray[i]];
						}
					}
				}
            }

            if (SimpleContextMenu.IE) {
                SimpleContextMenu._attachedElement = SimpleContextMenu._attachedElement.parentElement;
            } else {
                SimpleContextMenu._attachedElement = SimpleContextMenu._attachedElement.parentNode;
            }
        }

        return null;

    },


    // private method. Shows context menu
    _getReturnValue : function (e) {

        var returnValue = true;
        var evt = SimpleContextMenu.IE ? window.event : e;
		
		
        if (evt.button != 1) {
            if (evt.target) {
                var el = evt.target;
            } else if (evt.srcElement) {
                var el = evt.srcElement;
            }

            var tname = el.tagName.toLowerCase();

            if ((tname == "input" || tname == "textarea")) {
                if (!SimpleContextMenu._preventForms) {
                    returnValue = true;
                } else {
                    returnValue = false;
                }
            } else {
                if (!SimpleContextMenu._preventDefault) {
                    returnValue = true;
                } else {
                    returnValue = false;
                }
            }
        }

        return returnValue;

    },


    // private method. Shows context menu
    _show : function (e) {

        SimpleContextMenu._hide();
		document.getElementById('CM1').style.display = "block";
        var menuElementId = SimpleContextMenu._getMenuElementId(e);
		
        if (menuElementId) {
            var m = SimpleContextMenu._getMousePosition(e);
            var s = SimpleContextMenu._getScrollPosition(e);
			
            SimpleContextMenu._menuElement = document.getElementById(menuElementId);
            SimpleContextMenu._menuElement.style.left = m.x + s.x - findPosX(document.getElementById("fileTreeDemo_1")) + 'px';
            SimpleContextMenu._menuElement.style.top = m.y + s.y - findPosY(document.getElementById("fileTreeDemo_1")) + 'px';
            SimpleContextMenu._menuElement.style.display = 'block';
            return false;
        }

        return SimpleContextMenu._getReturnValue(e);

    },


    // private method. Hides context menu
    _hide : function () {
		//alert(lukk);
		if(lukk == true){
			if (SimpleContextMenu._menuElement) {
				SimpleContextMenu._menuElement.style.display = 'none';
			}
			lukk = true;
		}

    },


    // private method. Returns mouse position
    _getMousePosition : function (e) {

        e = e ? e : window.event;
        var position = {
            'x' : e.clientX,
            'y' : e.clientY
        }

        return position;

    },


    // private method. Get document scroll position
    _getScrollPosition : function () {

        var x = 0;
        var y = 0;

        if( typeof( window.pageYOffset ) == 'number' ) {
            x = window.pageXOffset;
            y = window.pageYOffset;
        } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
            x = document.documentElement.scrollLeft;
            y = document.documentElement.scrollTop;
        } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
            x = document.body.scrollLeft;
            y = document.body.scrollTop;
        }

        var position = {
            'x' : x,
            'y' : y
        }

        return position;

    }

}
