/****************************************************************/
/*	SCRIPTLOADER CLASS
/*	LOADS JS FILES DYNAMICALLY
/*	SEE DOCS FOR EXAMPLES AND DESCRIPTION
/****************************************************************/
function K2K_ScriptLoaderClass()
{
};

K2K_ScriptLoaderClass.prototype =
{
/****************************************************************/
/*	PROPERTIES
/****************************************************************/

	//--------------------------------------
	// Public properties - must (or can) be set in instances
	//--------------------------------------
    debug						: false,    //When set to true, the class will alert the content of the loaded script-files
	useCache					: false,	//When set to false, URL are made unique, thereby ensuring that the file is loaded from server
    filePath					: '',		//relative path to the location of js-files
	m_instance					: null,

/****************************************************************/
/*	PUBLIC METHODS - call these when using the class
/****************************************************************/
	//--------------------------------------
	// LoadScript
	//--------------------------------------
   LoadScript : function(scriptpath, functions)
   {
	    if(this.debug)alert('START K2K_ScriptLoaderClass.LoadScript');
        //Ensuring that filePath ends with "/"
        if(this.filePath.substr(this.filePath.length -1) != '/') this.filePath += '/';
	    scriptpath = this.filePath + scriptpath;
		if(this.debug)alert('scriptpath: ' + scriptpath);
	    var oXML = this.GetXMLHttpObj();
	    if(!this.useCache)
	    {
			scriptpath += (scriptpath.indexOf('?')>0) ? '&' : '?';
			scriptpath += 'update='+Math.random();
		}
	    oXML.open('GET', scriptpath, false);
	    oXML.send('');
	    // Error checking
		if(oXML.status != 200)
		{
			if(oXML.status == 404)
				alert('Error in ScriptLoaderClass. The file "' + scriptpath + '" can not be found.');
			else
				alert('Error in ScriptLoaderClass. Errornumber:' + oXML.status);
			return false;
		}

	    if(this.debug) alert('Indhold af ' + scriptpath + ':\n\n' + oXML.responseText);
	    try
	    {
		    eval(oXML.responseText);
		}
		catch(e)
		{
			alert('There is a problem parsing the scriptfile ' + scriptpath + '.\nPlease make sure that the file can be parsed as javascript.');
			return false;
		}

	    for(var i=0; i<functions.length; i++)
	    {
		    window[functions[i]] = eval(functions[i]);
		}
		
		return true;
    },

	GetInstance : function()
	{
		if(this.m_instance == null)
			this.m_instance = new K2K_ScriptLoaderClass();
		return this.m_instance;
	},

/****************************************************************/
/*	PRIVATE METHODS - do not make direct calls to these
/****************************************************************/
	//--------------------------------------
	// GetXMLHttpObj
	//--------------------------------------
	GetXMLHttpObj : function()
	{
        var obj;
        if(window.XMLHttpRequest) 
        {
            try { obj = new XMLHttpRequest();} 
            catch(e) {obj = null; }
        } 
        else if(window.ActiveXObject) 
        {
 	        var variants =  ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'];
		    var i;
	        for(i=0;i<variants.length;i++)
	            try{
		            obj = new ActiveXObject(variants[i]);
	            }catch(e){}
        }
		return obj;
	}
}

// Globale variable
var K2K_browser = ''; //Sættes til browserens forkortelse. Se nedenfor
var K2K_sl = null; //Instans af LoaderClass.

document.K2K_isEditing = false;
document.K2K_frameSrc = "";

// Initialisering af css-browser
// Sætter classes på html-elementet, så disse kan bruges til at målrette styles
// til browser og/eller browserversion og/eller platform.
var css_browser_selector = function() 
{
	var 
		ua=navigator.userAgent.toLowerCase(),
		is=function(t){ return ua.indexOf(t) != -1; },
		h=document.getElementsByTagName('html')[0],
		b=(!(/opera|webtv/i.test(ua))&&/msie (\d)/.test(ua))?('ie ie'+RegExp.$1):is('gecko/')? 'gecko':is('opera/9')?'opera opera9':/opera (\d)/.test(ua)?'opera opera'+RegExp.$1:is('konqueror')?'konqueror':is('applewebkit/')?'webkit safari':is('mozilla/')?'gecko':'',
		os=(is('x11')||is('linux'))?' linux':is('mac')?' mac':is('win')?' win':'';
	var c=b+os+' js';
	K2K_browser = b;
	h.className += h.className?' '+c:c;
	//alert(c);
	//alert(K2K_browser);
}();

//Creating a new loader
K2K_sl = K2K_ScriptLoaderClass.prototype.GetInstance();


function K2K_onLoad()
{
	if (typeof(_spBodyOnLoadWrapper) != 'undefined') _spBodyOnLoadWrapper();
	
	// Skjuler Advanced Search link
	HideAdvSearchLinks();
	
	
	if(document.parentWindow.name.length < 5)
	{
		var contentholderTABLE = document.getElementById("K2K_contentholderTABLE");
		//contentholderTABLE.style.height = (document.documentElement.clientHeight - 210) + "px";
		
		var layoutTable = document.getElementById("K2K_articleSuhrs");
		if(layoutTable != null)
		{
			layoutTable.style.height = (contentholderTABLE.offsetHeight -2) + "px";
		}
		
		var column3 = document.getElementById("K2K_column3");
		if(column3 != null && column3.offsetWidth < 10)
		{
			column3.style.borderLeft = "0px";
		}
		
	/*	var iframe = document.getElementsByTagName('iframe');
		if(iframe[0] != undefined && !document.K2K_isEditing)
		{
			iframe = iframe[0];
			
		    var column2 = document.getElementById("K2K_column2");
			if(iframe.src.indexOf('javascript')== -1 && iframe.src.indexOf('inpage=1') > -1 && column2 != null && column3 != null)
			{
				var subColumn2 = iframe.document.getElementById("K2k_column2");
				var subColumn3 = iframe.document.getElementById("K2K_column3");
				if(subColumn2 != null && subColumn3 != null)
				{
					alert(subColumn2.innerHTML);
					column2.innerHTML = subColumn2.innerHTML;
					column3.innerHTML = subColumn3.innerHTML;
				}
			}
		}*/ 
	}
	
			
	//Tilpasser materialesamlingen
	if(document.URL.indexOf('aterialesamlin')>0 && document.URL.indexOf('NewForm.aspx')<0 && document.URL.indexOf('EditForm.aspx')<0 && document.URL.indexOf('DispForm')<0  && document.URL.indexOf('/Pages/')<0)
	{
		K2K_ChangeMaterialesamlingGUI();
	}
	//Tilpasser pensum
	if(document.URL.toLowerCase().indexOf('pensum')>0 && document.URL.indexOf('NewForm.aspx')<0 && document.URL.indexOf('EditForm.aspx')<0 && document.URL.indexOf('DispForm')<0  && document.URL.indexOf('/Pages/')<0)
	{
		K2K_ChangePensumGUI();
	}
	//Tilpasser supplerende materialer
	if(document.URL.toLowerCase().indexOf('supplerende')>0 && document.URL.indexOf('NewForm.aspx')<0 && document.URL.indexOf('EditForm.aspx')<0 && document.URL.indexOf('DispForm')<0  && document.URL.indexOf('/Pages/')<0)
	{
		K2K_ChangeSuppMatGUI();
	}
}


function HideAdvSearchLinks()
{
    // Skjuler Advanced Search link
    var aTags = document.getElementsByTagName('A');
    var idStr = "";
    for(var ii = 0; ii<aTags.length; ii++)
    {
	    idStr = aTags[ii].id;
	    if(idStr.indexOf('AdvSearchLink')>0)
	    {
		    aTags[ii].style.display = 'none';
		    /*if(K2K_browser == 'ie ie6')
		    {
			    var elemDiv = aTags[ii];
			    while(elemDiv.tagName != 'DIV')
			    {
				    //alert(elemDiv.tagName);
				    elemDiv = elemDiv.parentNode;
			    }
			    elemDiv.style.position = 'Absolute';
			    //elemDiv.style.left = '731px';
		    }*/
		    ii = aTags.length + 1;
	    }
    }

}

// Denne funktion kaldes fra Topmenu webcontrollen.
// Sætter menuoffset ift. topmenuens placering.
function K2K_SetTopmenuOffset()
{
	//K2K_dropdownHolderElement.innerHTML = K2K_ArrDropdowns.join('');
	if(K2K_browser == 'gecko')
		K2K_topmenu.dropdown_offset_y -= 85;
	else
		K2K_topmenu.dropdown_offset_y += 12;
}

function K2K_SetEditContext()
{
	document.K2K_isEditing = true;
	var elem = document.getElementById('K2K_MainContent');
	elem.style.overflow = 'visible';
	elem = document.getElementById('K2K_MOSSEdittingToolbar');
	elem.style.display = 'block';
}

// Denne funktion fjerne Column1.
// Kaldes fra Forside pagelayoutet
function K2K_NormalizeColumn1()
{
    var elem = document.getElementById('K2K_column1');
    if(elem != null)
    {
    	elem.innerHTML = "";
    	elem.style.width = "0px";
    }
}

//Dette script laver følgende ændringer på Materialesamlings-listen:
// Sætter url'en på "New" knappen.
// Sætter url'en på "Edit Item"
function K2K_ChangeMaterialesamlingGUI()
{
	K2K_sl.filePath = "/_layouts/k2k/js/shared/gui/";
	//K2K_sl.debug = true;
	K2K_sl.LoadScript("K2K_GuiManagerClass.js",["K2K_GuiManagerClass","K2K_GuiManagerClass.prototype"]);
	var K2K_gui = new K2K_GuiManagerClass();
	K2K_gui.Init();
	//K2K_gui.debug = true;
	K2K_gui.SetUrlOnMenuButton('zz11_NewMenu_t','../../_layouts/suhrs/repository/entry.aspx');
	K2K_gui.SetUrlOnMenuItem('zz10_New0','../../_layouts/suhrs/repository/entry.aspx');
	K2K_gui.ChangeECBEditUrl('../../_layouts/suhrs/repository/entry.aspx');
}


//Dette script laver følgende ændringer på Pensum-listen:
// Sætter url'en på "New" knappen.
// Sætter url'en på "Edit Item"
function K2K_ChangePensumGUI()
{
	K2K_sl.filePath = "/_layouts/k2k/js/shared/gui/";
	//K2K_sl.debug = true;
	K2K_sl.LoadScript("K2K_GuiManagerClass.js",["K2K_GuiManagerClass","K2K_GuiManagerClass.prototype"]);
	var K2K_gui = new K2K_GuiManagerClass();
	K2K_gui.Init();
	//K2K_gui.debug = true;
	try{
		try{
			K2K_gui.SetUrlOnMenuButton('zz12_NewMenu_t','../../_layouts/suhrs/repository/association.aspx?list=pensum');
		}
		catch(e){
			K2K_gui.SetUrlOnMenuButton('zz10_NewMenu_t','../../_layouts/suhrs/repository/association.aspx?list=pensum');
		}
		try{
			K2K_gui.SetUrlOnMenuItem('zz11_New0','../../_layouts/suhrs/repository/association.aspx?list=pensum');
		}
		catch(e){
			K2K_gui.SetUrlOnMenuItem('zz9_New0','../../_layouts/suhrs/repository/association.aspx?list=pensum');
		}
	//K2K_gui.ChangeECBEditUrl('../../_layouts/suhrs/repository/association.aspx?list=pensum');
	}
	catch(e){}
}


//Dette script laver følgende ændringer på Supplerende Materiale-listen:
// Sætter url'en på "New" knappen.
// Sætter url'en på "Edit Item"
function K2K_ChangeSuppMatGUI()
{
	K2K_sl.filePath = "/_layouts/k2k/js/shared/gui/";
	//K2K_sl.debug = true;
	K2K_sl.LoadScript("K2K_GuiManagerClass.js",["K2K_GuiManagerClass","K2K_GuiManagerClass.prototype"]);
	var K2K_gui = new K2K_GuiManagerClass();
	K2K_gui.Init();
	//K2K_gui.debug = true;
	try{
		try{
			K2K_gui.SetUrlOnMenuButton('zz12_NewMenu_t','../../_layouts/suhrs/repository/association.aspx?list=Supplerende%20materialer');
		}
		catch(e){
			K2K_gui.SetUrlOnMenuButton('zz10_NewMenu_t','../../_layouts/suhrs/repository/association.aspx?list=Supplerende%20materialer');
		}
		try{
			K2K_gui.SetUrlOnMenuItem('zz11_New0','../../_layouts/suhrs/repository/association.aspx?list=Supplerende%20materialer');
		}
		catch(e){
			K2K_gui.SetUrlOnMenuItem('zz9_New0','../../_layouts/suhrs/repository/association.aspx?list=Supplerende%20materialer');
		}
	//K2K_gui.ChangeECBEditUrl('../../_layouts/suhrs/repository/association.aspx?list=Supplerende%20materialer');
	}
	catch(e){}
}


// Dette script anvendes af Richtext-editorens menubar.
// Giver fejl i den oprindelige udgave.
// Fejlen er rettet her.
function RTE_DD_OpenMenu(strBaseElementID, strButtonMnemonic, strMenuHtml, strWebLanguage, cMenuItems)
{
	var elemMenu=RTE_DD_GetMenuElement();
	var ifmMenu=RTE_DD_GetMenuFrame();
	if (!g_fRTEMenuMoved)
	{
		g_elemRTELastTextAreaConverted.insertAdjacentElement("afterEnd", elemMenu);
		elemMenu=RTE_DD_GetMenuElement();
		ifmMenu=RTE_DD_GetMenuFrame();
	}
	if ((g_strRTEDDBaseElementID==strBaseElementID) && (g_strRTEDDButtonMnemonic==strButtonMnemonic))
	{
		RTE_DD_CloseMenu();
		RTE_RestoreSelection(strBaseElementID);
		return;
	}
	if ((null !=g_strRTEDDBaseElementID) && (null !=g_strRTEDDButtonMnemonic))
	{
		RTE_DD_CloseMenu();
	}
	g_strRTEDDBaseElementID=strBaseElementID;
	g_strRTEDDButtonMnemonic=strButtonMnemonic;
	g_iRTEMenuItemMax=cMenuItems - 1;
	RTE_SaveSelection(strBaseElementID);
	var elemToolBarButton=RTE_TB_GetToolBarButton(strBaseElementID, strButtonMnemonic);
	elemMenu.setAttribute(g_strRTEBaseElementIDAttributeName, strBaseElementID);
	elemMenu.setAttribute(g_strRTEButtonMnemonicAttributeName, strButtonMnemonic);
	elemMenu.setAttribute(g_strRTEMenuOpeningAttributeName, "1");
	elemMenu.style.top="0px";
	elemMenu.style.left="0px";
	elemMenu.style.height="";
	elemMenu.style.width="";
	var scriptFile="form.js"
	var strWebLocale=RTE_GetWebLocale(strBaseElementID);
	ifmMenu.document.open("text/html", "replace");
	ifmMenu.document.write("<html><head><link rel=\"stylesheet\" type=\"text/css\" href=\""+RTE_GetServerRelativeStylesheetUrl("core.css", strWebLocale)+			"\"><script language=\"javascript\" src=\""+RTE_GetServerRelativeScriptUrl(scriptFile, strWebLocale)+"\"></script></head>"+			"<body class=\""+g_strRTEToolbarClassName+"\""+g_strRTECommandToExecuteAttributeName+"=\"x\" "+g_strRTECommandValueAttributeName+"=\"x\" "+g_strRTEFunctionToExecuteAttributeName+"=\"x\" "+g_strRTEFunctionParameterToExecuteAttributeName+"=\"x\" unselectable='on'><div class=\""+g_strRTEToolbarClassName+"\" id=\"divAroundMenu\" unselectable='on'>"+			strMenuHtml+"</div></body></html>");
	ifmMenu.document.close();
	elemMenu=RTE_DD_GetMenuElement();
	ifmMenu=RTE_DD_GetMenuFrame();
	ifmMenu.document.body.onkeydown=new Function("RTE_DD_OnKeyDown(this);");
	elemMenu.style.border="0px";
	ifmMenu.document.body.style.border="1px solid black";
	elemMenu.style.display="";
	var elemMenuDivInFrame=ifmMenu.document.all("divAroundMenu");
	var elemMenuTable=ifmMenu.document.all(g_strRTEMenuTableElementName);
	var cyDropDownMax=300;
	var rgnMenuRelativeCoordinates=RTE_GetElementWindowCoordinates(elemMenu);
	var rgnToolBarButtonCoordinates=RTE_GetElementWindowCoordinates(elemToolBarButton);
	var xToolBarButton=rgnToolBarButtonCoordinates[g_iRTELeft];
	var yToolBarButton=rgnToolBarButtonCoordinates[g_iRTETop];
	var cxToolBarButton=elemToolBarButton.offsetWidth;
	var cyToolBarButton=elemToolBarButton.offsetHeight;
	var cxDropDown=elemMenuTable.scrollWidth+4;
	var cyDropDown=elemMenuTable.scrollHeight+4;
	var cxBody=document.body.clientWidth;
	var cyBody=document.body.clientHeight;
	var yDropDown=rgnToolBarButtonCoordinates[g_iRTETop]+elemToolBarButton.offsetHeight - rgnMenuRelativeCoordinates[g_iRTETop];
	var objEditor=RTE_GetEditorDocument(strBaseElementID);
	var xDropDown;
	if (strWebLanguage=="1037" || strWebLanguage=="1025" || objEditor.dir=="rtl")
	{
		xDropDown=rgnToolBarButtonCoordinates[g_iRTERight]-cxDropDown - rgnMenuRelativeCoordinates[g_iRTELeft];
	}
	else
	{
		xDropDown=rgnToolBarButtonCoordinates[g_iRTELeft] - rgnMenuRelativeCoordinates[g_iRTELeft];
	}
	var fNeedVerticalScrollBar=false;
	if (cyDropDown > cyDropDownMax)
	{
		fNeedVerticalScrollBar=true;
		cyDropDown=cyDropDownMax;
	}
	if (cyDropDown > cyBody)
	{
		fNeedVerticalScrollBar=true;
		cyDropDown=cyBody - 30;
	}
	var scrollTopAdjustment=document.body.scrollTop;
	scrollTopAdjustment+=document.body.parentElement.scrollTop;
	if (yDropDown+cyDropDown > cyBody+scrollTopAdjustment)
	{
		yDropDown=rgnToolBarButtonCoordinates[g_iRTETop] - cyDropDown;
		if (scrollTopAdjustment > yDropDown)
		{
			yDropDown=scrollTopAdjustment;
		}
	}
	objEditor=RTE_GetEditorDocument(strBaseElementID);
	if (strWebLanguage=="1037" || strWebLanguage=="1025" || objEditor.dir=="rtl")
	{
		ifmMenu.document.body.dir="rtl";
	}
	if (fNeedVerticalScrollBar)
	{
		ifmMenu.document.body.scroll="yes";
		cxDropDown+=22;
		if (ifmMenu.document.body.dir=="rtl")
		{
			xDropDown -=22;
			if (scrollLeftAdjustment > xDropDown)
			{
				xDropDown=scrollLeftAdjustment;
			}
		}
	}
	else
	{
		ifmMenu.document.body.scroll="";
	}
	var scrollLeftAdjustment=document.body.scrollLeft;
	scrollLeftAdjustment+=document.body.parentElement.scrollLeft;
	if (xDropDown+cxDropDown > cxBody+scrollLeftAdjustment)
	{
	  if (ifmMenu.document.body.dir !="rtl")
	  {
		xDropDown=cxBody+scrollLeftAdjustment - cxDropDown;
	  }
	  if (scrollLeftAdjustment > xDropDown)
	  {
		  xDropDown=scrollLeftAdjustment;
	  }
	}
	elemMenu.style.zIndex=500;
	elemMenu.style.left=xDropDown;
	elemMenu.style.top=yDropDown;
	elemMenu.style.width=cxDropDown;
	// Denne linie retter fejlen.
	if(cyDropDown <= 0)cyDropDown = 150;
	elemMenu.style.height=cyDropDown;
	RTE_DD_SetHighlightOnMenuItem(RTE_DD_GetMenuItem(0));
	event.cancelBubble=true;
}
