
document.writeln('<script src="/server/hmlims/app/prod/hmglobal/hmjs/HMDelegate.js" type="text/javascript"> </script>');
if(typeof(AW) == "undefined")
{
	document.writeln('<script src="/server/hmlims/app/prod/hmglobal/hmjs/activewidgets/lib/aw.js" type="text/javascript"> </script>');
}
document.writeln('<script src="/server/hmlims/app/prod/script/system/formdefaults.php" type="text/javascript"> </script>');

function trim(strStr) {
	return strStr.replace(/^\s+|\s+$/g, "");
}

function ltrim(strStr) {
	return strStr.replace(/^\s+/, "");
}

function rtrim(strStr) {
	return strStr.replace(/\s+$/, "");
}

function mover(obj, color) {
  if (color == undefined) {
    obj.style.backgroundColor = '#F6F6F6';
  } else {
    obj.style.backgroundColor = color;
  }
}

function mout(obj, color) {
  if (color == undefined) {
    obj.style.backgroundColor = '#FFFFFF';
  } else {
    obj.style.backgroundColor = color;
  }
}

function getActiveFileURL(pStrFile)
{
	var text;
	var strFile;

	strFile = pStrFile;

	if (strFile.length>7) {
		if (strFile.substr(0, 7)=='http://')
			return strFile;
		if (strFile.substr(0, 8)=='https://')
			return strFile;
		if (strFile.substr(0, 1)=='/')
			return strFile;
	}

	//alert(strFile);

	var objReq = new AW.HTTP.Request;
		objReq.setURL("/server/hmlims/app/prod/script/interface/http/dataview.php");
		objReq.setRequestMethod("POST");
		objReq.setParameter("function", "getActiveFileURL");
		objReq.setParameter("file", strFile);

		objReq.setAsync(false);
		objReq.request();

		text = objReq.getResponseText();
		//alert(unescape(text));
		strFile = unescape(text);

	return strFile;
}

function call_user_func(pStrFunction, pStrScript, pArrParameter)
{
	var text;
	var varData;

	var objReq = new AW.HTTP.Request;
		objReq.setURL("/server/hmlims/app/prod/script/interface/http/dataview.php");
		objReq.setRequestMethod("POST");
		objReq.setParameter("function", "call_user_func");
		objReq.setParameter("func", pStrFunction);
		objReq.setParameter("script", pStrScript);
		objReq.setParameter("parameter", php.serialize(pArrParameter));

		objReq.setAsync(false);
		objReq.request();

		text = objReq.getResponseText();
		try {
			varData = php.unserialize(text);
		} catch (e) {
			alert(text);
		}

	return varData;
}

function call_dv_func(pStrFunction, pArrParameter)
{
	var text;
	var varData;

	var objReq = new AW.HTTP.Request;
		objReq.setURL("/server/hmlims/app/prod/script/interface/http/dataview.php");
		objReq.setRequestMethod("POST");
		objReq.setParameter("function", "call_dv_func");
		objReq.setParameter("func", pStrFunction);
		objReq.setParameter("parameter", php.serialize(pArrParameter));

		objReq.setAsync(false);
		objReq.request();

		text = objReq.getResponseText();
		try {
			varData = php.unserialize(text);
		} catch (e) {
			alert(text);
		}

	return varData;
}

// Link im Fenster Öffnen
function Navigation (pLink)
{
	window.location.href = pLink;
}

function Execute(pStrScript,pLogAsync,pFnAsyncFunction,pDictValues)
{
    if(pLogAsync != true)
    {
        pLogAsync = false;
    }

	var objReq = new AW.HTTP.Request;
	objReq.setURL(pStrScript);
	objReq.setRequestMethod("POST");
	
	if (typeof(pDictValues)!='undefined') {
		for (var strKey in pDictValues) {
			objReq.setParameter(strKey, pDictValues[strKey]);
		}
	}

	if(pLogAsync)
	{
		//objReq.setParameter("_pre_validate", "1");
		objReq.response = pFnAsyncFunction;
		objReq.setAsync(true);
		objReq.request();
	}
	else
	{
		objReq.setAsync(false);
		objReq.request();
		return objReq.getResponseText();
	}
}

// PopupFenster Öffnen mit Positionierung und Grösse
function FensterOeffnen (pLink, pTarget,pHoehe,pBreite,pToolbar,pScroll)
{
		var strFile;

		bsbreite = screen.width;
		bshoehe = screen.height;
		// Breite und Hoehe
		if(typeof pBreite == "undefined")
		{
			pBreite = "650";
		}
		if(typeof pHoehe == "undefined")
		{
			pHoehe = "480";
		}
		if(pBreite == 'max')
		{
			pBreite = bsbreite;
		}
		if(pHoehe == 'max')
		{
			pHoehe = bshoehe;
		}

		// strOptMenu
		var strOptToolbar = 'no';
		if(typeof pToolbar != "undefined") {
		    switch(pToolbar) {
                case 0: case '0': case 'no': strOptToolbar = 'no'; break;
                case 1: case '1': case 'yes': strOptToolbar = 'yes'; break;
            }
		}

		// strOptScroll
		var strOptScroll = 'no';
		if(typeof pScroll != "undefined") {
		    switch(pScroll) {
                case 0: case '0': case 'no': strOptScroll = 'no'; break;
                case 1: case '1': case 'yes': strOptScroll = 'yes'; break;
            }
		}

		// Fensterposition und groesse
      	fensterTop = (bshoehe - pHoehe)/2;
		fensterLeft = (bsbreite - pBreite)/2;
		strFile = getActiveFileURL(pLink);

		var Fenster = window.open(strFile, pTarget, "left="+fensterLeft+",top="+fensterTop+",width="+pBreite+",height="+pHoehe+",resizable=yes,toolbar="+strOptToolbar+",scrollbars="+strOptScroll);
		// Focus auf das Fenster setzten
        Fenster.focus();
        // Fensert verschieben, weil die Positionsangabe im open nur greift wenn das Fenster noch nicht geoeffnet war
		Fenster.moveTo(fensterLeft,fensterTop);
		Fenster.resizeTo(pBreite,pHoehe);
		if(Fenster.scrollbars)
		{
			Fenster.scrollbars.visible = true;
		}
		return Fenster;
}

// PopupFenster Öffnen mit Positionierung und Grösse
function FensterOeffnenWithScrollbars (pLink, pTarget,pHoehe,pBreite)
{
		var strFile;

		bsbreite = screen.width;
		bshoehe = screen.height;
		// Breite und Hoehe
		if(typeof pBreite == "undefined")
		{
			pBreite = "650";
		}
		if(typeof pHoehe == "undefined")
		{
			pHoehe = "480";
		}
		if(pBreite == 'max')
		{
			pBreite = bsbreite;
		}
		if(pHoehe == 'max')
		{
			pHoehe = bshoehe;
		}
		// Fensterposition und groesse
      	fensterTop = (bshoehe - pHoehe)/2;
		fensterLeft = (bsbreite - pBreite)/2;
		// Ausgabe aller Groessen und Positionsangaben, zu Debugzwecken
//		alertstring = "Hoehe="+pHoehe+"\nBreite="+pBreite+"\nScreenHoehe="+bshoehe+"\nScreenBreite="+bsbreite+"\nTop="+fensterTop+"\nLeft="+fensterLeft+"";
//		alert(alertstring);
		// Fenster oeffnen
		strFile = getActiveFileURL(pLink);

		var Fenster = window.open(strFile, pTarget, "left="+fensterLeft+",top="+fensterTop+",width="+pBreite+",height="+pHoehe+",resizable=yes,scrollbars=yes");
		// Focus auf das Fenster setzten
        Fenster.focus();
        // Fensert verschieben, weil die Positionsangabe im open nur greift wenn das Fenster noch nicht geoeffnet war
		Fenster.moveTo(fensterLeft,fensterTop);
		Fenster.resizeTo(pBreite,pHoehe);
		if(Fenster.scrollbars)
		{
			Fenster.scrollbars.visible = true;
		}
		return Fenster;
}


function FensterOeffnenWithMenu(pLink, pTarget,pHoehe,pBreite)
{
		bsbreite = screen.width;
		bshoehe = screen.height;

		// Breite und Hoehe
		if(typeof pBreite == "undefined")
		{
			pBreite = "650";
		}
		if(typeof pHoehe == "undefined")
		{
			pHoehe = "480";
		}
		if(pBreite == 'max')
		{
			pBreite = bsbreite;
		}
		if(pHoehe == 'max')
		{
			pHoehe = bshoehe;
		}
		// Fensterposition und groesse
  	    fensterTop = (bshoehe - pHoehe)/2;
		fensterLeft = (bsbreite - pBreite)/2;

		// Ausgabe aller Groessen und Positionsangaben, zu Debugzwecken
//		alertstring = "Hoehe="+pHoehe+"\nBreite="+pBreite+"\nScreenHoehe="+bshoehe+"\nScreenBreite="+bsbreite+"\nTop="+fensterTop+"\nLeft="+fensterLeft+"";
//		alert(alertstring);

		// Fenster oeffnen
        Fenster = window.open(pLink, pTarget, "left="+fensterLeft+",top="+fensterTop+",width="+pBreite+",height="+pHoehe+",resizable=yes,scrolling=yes,menubar=yes");
		// Focus auf das Fenster setzten
        Fenster.focus();
        // Fensert verschieben, weil die Positionsangabe im open nur greift wenn das Fenster noch nicht geoeffnet war
		Fenster.moveTo(fensterLeft,fensterTop);
		Fenster.resizeTo(pBreite,pHoehe);
		if(Fenster.scrollbars)
		{
			Fenster.scrollbars.visible = true;
		}
		return Fenster;
}

// PopupFenster Öffnen mit Positionierung und Grösse
function FensterOeffnenStandard(pLink, pTarget,pHoehe,pBreite)
{
		// Fenster oeffnen
    Fenster = window.open(pLink, pTarget);
		// Focus auf das Fenster setzten
    Fenster.focus();
	return Fenster;
}

function windowOpen(pLink, pTarget,pHoehe,pBreite)
{
    FensterOeffnen(pLink, pTarget,pHoehe,pBreite);
}

function reBuildWindow(pBreite,pHoehe)
{
		bsbreite = screen.width;
		bshoehe = screen.height;
		fensterTop = (bshoehe - pHoehe)/2;
		fensterLeft = (bsbreite - pBreite)/2;

		// Breite und Hoehe
		if(typeof pBreite == "undefined")
		{
			pBreite = "650";
		}
		if(typeof pHoehe == "undefined")
		{
			pHoehe = "480";
		}

		if(pBreite == 'max')
		{
			pBreite = bsbreite;
		}
		if(pHoehe == 'max')
		{
			pHoehe = bshoehe;
		}
		// Fensterposition und groesse

		// Ausgabe aller Groessen und Positionsangaben, zu Debugzwecken
//		alertstring = "Hoehe="+pHoehe+"\nBreite="+pBreite+"\nScreenHoehe="+bshoehe+"\nScreenBreite="+bsbreite+"\nTop="+fensterTop+"\nLeft="+fensterLeft+"";
//		alert(alertstring);

		// Focus auf das Fenster setzten
        window.focus();
        // Fensert verschieben, weil die Positionsangabe im open nur greift wenn das Fenster noch nicht geoeffnet war
		window.moveTo(fensterLeft,fensterTop);
		window.resizeTo(pBreite,pHoehe);
		if(window.scrollbars)
		{
			window.scrollbars.visible = true;
		}
}

function refreshOpener(pLink)
{
	if(opener && opener.closed!=1)
	{
 		opener.location.href=pLink;
	}
}

function reloadId(pId)
{
	var ElementId = pId;
	parent.document.getElementById(ElementId).location.reload();
}

function selectText(pStrObjId,pIntStart,pIntLength)
{
		var obj = document.getElementById(pStrObjId);
    if (obj.createTextRange) {
        var oRange = obj.createTextRange();
        oRange.moveStart("character", pIntStart);
        oRange.moveEnd("character", pIntLength - obj.value.length);
        oRange.select();
    } else if (obj.setSelectionRange) {
        obj.setSelectionRange(pIntStart, pIntLength);
    }
		obj.focus();
};

function getSelectionRange(element)
{
  var result = {start:-1, end:-1};

  // firefox
  if(element.selectionStart)
    result = {start: element.selectionStart, end: element.selectionEnd};
  // ie win
  else if(document.selection)
  {
    // inputs only
    var range = document.selection.createRange();
    if(range.parentElement() == element)
    {
      var rangeS = range.duplicate();
      rangeS.moveEnd("textedit", 1);
      var rangeE = range.duplicate();
      rangeE.moveStart("textedit", -1);
      result = {start: element.value.length - rangeS.text.length, end: rangeE.text.length};
    }
  }

  return result;
}

function EmptyString(strValue,strDefaultValue)
{
    if(strValue.search(/\S+/) == -1)
    {
        return strDefaultValue;
    }
    return strValue;
}

/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,maxlevel,level) {
	var dumped_text = "";
	if(!level)
		level = 0;
	if(!maxlevel)
		maxlevel = 100;

	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;++j)
		level_padding += "    ";

	if (level>=maxlevel)
		return level_padding+"!!!max. level reached!!!\n";

	if(typeof(arr) == 'object') { //Array/Hashes/Objects
		for(var item in arr) {
			var value = arr[item];
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,maxlevel,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}

function changeURLParam(pStrURL,pStrParam,pStrValue)
{
    var arrURL1 = pStrURL.split('?');
    var arrURL2;
    if (arrURL1.length<2) {
    	arrURL2 = new Array();
    } else {
	    arrURL2 = arrURL1[1].split('&');
    }
    strURLParams = "";
    var logFoundParam = false;
    for(var i = 0;i != arrURL2.length; ++i)
    {
        arrURL3 = arrURL2[i].split('=');
        if(strURLParams != "")
        {
            strURLParams += "&";
        }
        if(arrURL3[0] == pStrParam)
        {
            strURLParams += arrURL3[0] + "=" + encodeURIComponent(pStrValue);
            logFoundParam = true;
        }
        else
        {
            strURLParams += arrURL3.join("=");
        }
    }
    if(logFoundParam == false)
    {
		//Der Wert müsste eigentlich kodiert werden. Geschieht dies, gibt es aber Fehler u.A. bei Bookmarks in den Grids
		//strURLParams += "&"+pStrParam+"="+pStrValue;
		//Das hier wäre eigentlich richtig
        strURLParams += "&"+pStrParam+"="+encodeURIComponent(pStrValue);
    }
    var strResult = arrURL1[0] + "?" + strURLParams;
    //alert(strResult);
    return strResult;
}


function getBrowserInfo()
{
    var arrBrowserInfo = new Array();
    var nVer = navigator.appVersion;
    var nAgt = navigator.userAgent;
    var browserName  = '';
    var fullVersion  = 0;
    var majorVersion = 0;

    // In Internet Explorer, the true version is after "MSIE" in userAgent
    if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
        browserName  = "Microsoft Internet Explorer";
        fullVersion  = parseFloat(nAgt.substring(verOffset+5));
        majorVersion = parseInt(''+fullVersion);
    }

    // In Opera, the true version is after "Opera"
    else if ((verOffset=nAgt.indexOf("Opera"))!=-1) {
        browserName  = "Microsoft Internet Explorer";
        fullVersion  = parseFloat(nAgt.substring(verOffset+6));
        majorVersion = parseInt(''+fullVersion);
    }

    // In most other browsers, "name/version" is at the end of userAgent
    else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) )
    {
        browserName  = nAgt.substring(nameOffset,verOffset);
        fullVersion  = parseFloat(nAgt.substring(verOffset+1));
        if (!isNaN(fullVersion)){
            majorVersion = parseInt(''+fullVersion);
        }
        else {
            fullVersion  = 0; majorVersion = 0;
        }
    }

    // Finally, if no name and/or no version detected from userAgent...
    if (browserName.toLowerCase() == browserName.toUpperCase() || fullVersion==0 || majorVersion == 0 )
    {
        browserName  = navigator.appName;
        fullVersion  = parseFloat(nVer);
        majorVersion = parseInt(nVer);
    }
    arrBrowserInfo['browserName'] = browserName;
    arrBrowserInfo['fullVersion'] = fullVersion;
    arrBrowserInfo['majorVersion'] = majorVersion;
    arrBrowserInfo['appName'] = navigator.appName;
    arrBrowserInfo['userAgent'] = navigator.userAgent;
    return arrBrowserInfo;
}

// ActiveWidgets Erweiterung
if(typeof(AW) != "undefined")
{
    HMTree = AW.UI.Tree.subclass();
    HMTree.create = function(){
        var obj = this.prototype;
        var _super = this.superclass.prototype;
        obj.arrText = new Array("");
        obj.arrKey = new Array("");
        obj.arrEbene = new Array("");
        obj.arrView = new Array();
        obj.arrParent = new Array();
        obj.arrParentKey = new Array("");
        obj.strSelected = "";
        obj.strSelectedParentKey = "";
        obj.selectedParent = "";
        obj.selectedElement = 0;
        obj.intEbene = 0;
        obj.strURL = "";
        obj.strWriteToElement = "";
        obj.strCondition = "";
        obj.request = new AW.XML.Table;
        obj.request.setURL(this.strURL);
        obj.request.setAsync(true);
        obj.request.setRequestMethod("POST");
        obj.request.setParameter("treeid",obj.getId());

        obj.initTree = function (){
            this.setItemText(this.arrText);
            this.setViewCount(function(i){return this.arrView[i] ? this.arrView[i].length : 0});
            this.setViewIndices(function(i){ return this.arrView[i]});

            this.defineViewProperty("parent");
            this.setViewParent(function(i){return this.arrParent[i]});
            this.setSelectedItems([1]);
            document.getElementById(this.strWriteToElement).innerHTML = this;
            this.raiseEvent("onItemClicked",window.event,1);
        }
        obj.onItemClicked = function(event, i){
            this.selectedParent = this.getViewParent(i);
            this.selectedElement = i;
            this.strSelected =  this.arrKey[i];
            this.intEbene = this.arrEbene[i];
            this.strSelectedParentKey = this.arrParentKey[i];
        }
        obj.clearTreeOutput = function(){
            this.arrText = new Array("");
            this.arrView = new Array();
            this.arrParent = new Array();
            this.arrKey = new Array("");
            this.arrEbene = new Array("");
            this.arrParentKey = new Array("");
        }

        obj.onKeyUp = function(event){
            var intSelected = parseInt(this.getSelectedItems());
            var intEbene = this.arrEbene[intSelected];
            var newSelected = intSelected;
            var i = intSelected;
            if(i < 2)
            {
                newSelected = 2;
            }
            else
            {
                while(i > 2)
                {
                    i--;
                    if(this.arrEbene[i] <= intEbene && i > 1)
                    {
                        if(this.getViewExpanded(i))
                        {
                            newSelected = intSelected;
                        }
                        else
                        {
                            newSelected = i + 1;
                        }
                        break;
                    }
                }
            }
            this.onItemClicked(window.event,newSelected);
            this.setSelectedItems([newSelected]);
            this.setCurrentItem(newSelected);
//            return true;
        }

        obj.onKeyDown = function(event){
            var intSelected = parseInt(this.getSelectedItems());
            this.raiseEvent("onControlActivated");
            var newSelected = intSelected;
            var logExpanded = this.getViewExpanded(intSelected);
            if(!logExpanded)
            {
                var intEbene = this.arrEbene[intSelected];
                var i = intSelected;
                while(i < this.arrText.length)
                {
                    i++;
                    if(this.arrEbene[i] <= intEbene && i < this.arrText.length)
                    {
                        newSelected = i;
                        break;
                    }
                }
            }
            else
            {
                intSelected++;
                if(intSelected >= this.arrEbene.length)
                {
                    intSelected--;
                }
                newSelected = intSelected;
            }
            this.onItemClicked(window.event,newSelected);
            this.setSelectedItems([newSelected]);
            this.setCurrentItem(newSelected);

            return true;
        }

        obj.onKeyRight = function(event){
            var intSelected = parseInt(this.getSelectedItems());
            this.setViewExpanded(true,intSelected);
            this.onItemClicked(event,intSelected);
            this.setSelectedItems([intSelected]);
            this.setCurrentItem(intSelected);
            return true;
        }

        obj.onKeyLeft = function(event){
            var intSelected = parseInt(this.getSelectedItems());
            this.setViewExpanded(false,intSelected);
            this.onItemClicked(event,intSelected);
            this.setSelectedItems([intSelected]);
            this.setCurrentItem(intSelected);
            return true;
        }

        obj.onTreeSignClickedFunc = obj.onTreeSignClicked;
        obj.onTreeSignClicked = function(event,index){
            this.onTreeSignClickedFunc(event,index);
            this.onItemClicked(window.event,index);
            this.setSelectedItems([index]);
            this.setCurrentItem(index);
        }

//        obj.onKeyPressFunc = obj.onKeyPress;
        obj.onKeyPress = function(event){
//            this.onKeyPressFunc(event);
            var intKey = (event.which || event.keyCode);
            if(intKey == 43) // +
            {
                this.raiseEvent("onKeyRight");
            }
            if(intKey == 45) // -
            {
                this.raiseEvent("onKeyLeft");
            }
        }


//        obj.onTreeSignClickedOrg = obj.onTreeSignClicked;
//        obj.onTreeSignClicked = function(event,index)
//        {
////            this.clearTreeOutput();
//            switch(this.arrEbene[index])
//            {
//                case 0:
////                    this.parseTreeXML(this.request.getXML(),true);
//                    break;
//                case 1:
////                    this.parseTreeXML(this.request.getXML(),true);
//                    break;
//                case 2:
////                    this.parseTreeXML(this.request.getXML(),true);
//                    break;
//            }
////            this.initTree();
//            this.onTreeSignClickedOrg(event,index);
//
//        }
//
        obj.parseTreeXML = function(pObjXML,pLogLoadData){
            this.treeXML = pObjXML;
            var logLoadData = false;
            if(typeof pLogLoadData == 'undefined')
            {
                logLoadData = false;
            }
            else
            {
                logLoadData = pLogLoadData;
            }
            logLoadData = true;
            if(pObjXML.getElementsByTagName("sample").length > 0)
            {

                this.parseXMLSample("",pObjXML,0,0,"",logLoadData);
            }
            else
            {
                if(pObjXML.getElementsByTagName("package").length > 0)
                {

                    this.parseXMLPackage("",pObjXML,0,0,"",logLoadData);
                }
                else
                {
                    if(pObjXML.getElementsByTagName("parameter").length > 0)
                    {

                        this.parseXMLParameter("",pObjXML,0,0,"",logLoadData);
                    }
                }
            }
        }

        obj.parseXMLSample = function(pStrRootElementName,pObjParentElement,pIntParentElementId,pIntEbene,pStrParentElementName,pLogLoadData) {
            if(typeof pLogLoadData == 'undefined')
            {
                logLoadData = false;
            }
            else
            {
                logLoadData = pLogLoadData;
            }
            if(pStrRootElementName == "")
            {
                logLoadData = true;
            }
            var objSamples = pObjParentElement.getElementsByTagName("sample");
            for(var i = 0; i < objSamples.length ; i++)
            {
                if(pObjParentElement.nodeName != "order" && pObjParentElement.firstChild.nodeName != "transfer")
                {
                    continue;
                }
                var strSampleName = objSamples[i].getElementsByTagName("name")[0].firstChild.nodeValue;
                this.arrParentKey.push(pStrParentElementName);
                this.arrEbene.push(pIntEbene);
                this.arrKey.push(strSampleName);
                var intSampleId = this.arrText.push(strSampleName) - 1;
                if(typeof this.arrParent[intSampleId] != "object")
                {
                    this.arrParent[intSampleId] = new Array();
                }
                this.arrParent[intSampleId].push(strSampleName);
                if(typeof this.arrView[pIntParentElementId] != "object")
                {
                    this.arrView[pIntParentElementId] = new Array();
                }
                this.arrView[pIntParentElementId].push(intSampleId);
                this.parseXMLPackage(strSampleName,objSamples[i],intSampleId,pIntEbene + 1,strSampleName,logLoadData);
            }
        }

        obj.parseXMLPackage = function(pStrRootElementName,pObjParentElement,pIntParentElementId,pIntEbene,pStrParentElementName,pLogLoadData) {
            if(typeof pLogLoadData == 'undefined')
            {
                logLoadData = false;
            }
            else
            {
                logLoadData = pLogLoadData;
            }
            var objPackages = pObjParentElement.getElementsByTagName("package");
            var intPackageCount = objPackages.length;
            if(logLoadData != true && intPackageCount > 0 && pStrRootElementName != "")
            {
                intPackageCount = 1;
            }
            for(var j = 0; j < intPackageCount ; j++)
            {
                var strRootElementName = pStrRootElementName;
                if(pObjParentElement.nodeName != "sample" && pObjParentElement.firstChild.nodeName != "transfer")
                {
                    continue;
                }
                var strPackageName = objPackages[j].getElementsByTagName("name")[0].firstChild.nodeValue;
                if(strRootElementName == "")
                {
                    strRootElementName = strPackageName;
                }
                var intPackageAnzahl = 1;
                var objPackageAnzahl = objPackages[j].getElementsByTagName("anzahl");
                if(objPackageAnzahl.length > 0)
                {
                    if(objPackageAnzahl[0].firstChild)
                    {
                        intPackageAnzahl =  objPackageAnzahl[0].firstChild.nodeValue;
                    }
                }
                this.arrParentKey.push(pStrParentElementName);
                var strPackageText = strPackageName;
                this.arrEbene.push(pIntEbene);
                this.arrKey.push(strPackageText);
                if(this.showAnzahl != "")
                {
                    strPackageText = strPackageText + " - (" + intPackageAnzahl + ")";
                }
                var intPackageId = this.arrText.push(strPackageText) - 1;
                if(typeof this.arrParent[intPackageId] != "object")
                {
                    this.arrParent[intPackageId] = new Array();
                }
                this.arrParent[intPackageId].push(strRootElementName);
                if(typeof this.arrView[pIntParentElementId] != "object")
                {
                    this.arrView[pIntParentElementId] = new Array();
                }
                this.arrView[pIntParentElementId].push(intPackageId);
                this.parseXMLParameter(strRootElementName,objPackages[j],intPackageId,pIntEbene + 1,strPackageName,logLoadData);
            }
        }

        obj.parseXMLParameter = function(pStrRootElementName,pObjParentElement,pIntParentElementId,pIntEbene,pStrParentElementName,pLogLoadData) {
            if(typeof pLogLoadData == 'undefined')
            {
                logLoadData = false;
            }
            else
            {
                logLoadData = pLogLoadData;
            }
            if(pStrRootElementName == "")
            {
                logLoadData = true;
            }
            var objParameters = pObjParentElement.getElementsByTagName("parameter");
            var intParameterCount = objParameters.length;
            if(logLoadData != true && intParameterCount > 0 && pStrRootElementName != "")
            {
                intParameterCount = 1;
            }
            for(var k = 0; k < intParameterCount; k++)
            {
                if(objParameters[k].getElementsByTagName("name")[0].firstChild)
                {
                    var strParameterName = objParameters[k].getElementsByTagName("name")[0].firstChild.nodeValue;
                    var strRootElementName = pStrRootElementName;
                    if(strRootElementName == "")
                    {
                        strRootElementName = strParameterName;
                    }
                    this.arrParentKey.push(pStrParentElementName);
                    this.arrEbene.push(pIntEbene);
                    this.arrKey.push(strParameterName);
                    var intParameterId = this.arrText.push(strParameterName) - 1;
                    if(typeof obj.arrParent[intParameterId] != "object")
                    {
                        this.arrParent[intParameterId] = new Array();
                    }
                    this.arrParent[intParameterId].push(strRootElementName);
                    if(typeof this.arrView[pIntParentElementId] != "object")
                    {
                        this.arrView[pIntParentElementId] = new Array();
                    }
                    this.arrView[pIntParentElementId].push(intParameterId);
                }
            }
        }
    }
}

window.loadPage = function(pStrURL, pArrParameterValues, pStrTarget) {
	var objDoc = document;
	var objCallExternalRoot = objDoc.createElement('div');
	objCallExternalRoot.setAttribute('style', 'display:none');
	objCallExternalRoot.innerHTML = 
	'<form id="call-external" name="call-external" action="" method="post">' +
	'</form>'
	;
	var objHtml = objDoc.getElementsByTagName('body')[0];
	objHtml.appendChild(objCallExternalRoot);
	
	window.loadPage = function(pStrURL, pArrParameterValues, pStrTarget) {
		var objForm = document.getElementById('call-external');
		var arrElements = [];

		if (typeof(pArrParameterValues)=='undefined')
			pArrParameterValues = {};
		if (typeof(pStrTarget)=='undefined')
			pStrTarget = '_self';
		
		for (var intIndex=0; intIndex!=objForm.elements.length; ++intIndex) {
			arrElements.push(objForm.elements[intIndex]);
		}
		
		for (var intIndex=0; intIndex!=arrElements.length; ++intIndex) {
			var objElement = arrElements[intIndex];
			objElement.parentNode.removeChild(objElement);
		}
		
		objForm.setAttribute('action', pStrURL);
		objForm.setAttribute('target', pStrTarget);
		for (var strParamName in pArrParameterValues) {
			var strParamValue = pArrParameterValues[strParamName];
			var objElement = document.createElement('input');
			objElement.setAttribute('type', 'hidden');
			objElement.setAttribute('name', strParamName);
			objElement.value = strParamValue;
			objForm.appendChild(objElement);
		}
		
		objForm.submit();
	}
	return window.loadPage(pStrURL, pArrParameterValues, pStrTarget);
}
