/* This Class generates the HTML-Code for the MarginalColumn 
 * @author rm
 * @version 1.0
 */
var g_MARGINAL_INFOPLUSLINKS_MAXCOUNT;
var g_MARGINAL_WEBLINKS_MAXCOUNT;
function generateMarginalHTML(sfilePathIcons) 
{
    this.filePathIcons = sfilePathIcons;

    /* 
     *  This generates the HTML for the beginn of the MarginalArea
     */
    this.beginMarginalArea = function(){
        sInsert = "";
        sInsert += "<div id=\"marginalDiv\" class=\"marginalAreaHeight marginalAreaWidthOuter\" style=\"display:none;\">"
        
        sInsert += "<table cellpadding=\"0\" cellspacing=\"0\" id=\"marginalMasterTableID\" class=\"marginalMasterTable marginalAreaHeight marginalAreaWidthOuter\">";
        sInsert += "<tr>";
        return sInsert;
    }
    
    /* 
     *  This generates the HTML for the end of the MarginalArea
     */
    this.endMarginalArea = function(){
        sInsert = "";
        sInsert += "</tr></table>";
        sInsert += "<div id=\"marginalMoveBarHiddenID\" class=\"marginalAreaHeight\" style=\"width:"+(g_iCloseColumnLeftWidth)+"px;display:block;background-color:#d6d6d6;border 1px solid #ff0000\" >";
        sInsert += "<a  href=\"#\" onClick=\"javascript:changeMarginalStatus()\" style=\"text-align: center;\" class=\"marginalHeadLines writing\">";
        sInsert += "<div width=\"100%\" style=\"padding-top:6px;text-align: center;\" onmouseover=\"this.style.cursor='pointer'\" onmouseout=\"this.style.cursor='pointer'\">";
        sInsert += "<img border=\"0\" alt=\"einblenden\" title=\"einblenden\" src=\"" + this.filePathIcons + "vergroessern.gif\"/> ";
        sInsert += "<br/><br/><img border=\"0\" title=\"weitere Informationen\" alt=\"weitere Informationen\" src=\"" + this.filePathIcons + "weitere_info_10px.gif\"/>";
        sInsert += "</div>";     
        sInsert += "</a>";
        sInsert += "</div>";
        sInsert += "</div>";
        return sInsert;
    }
    
    /* 
     *  This generates the HTML for the beginn of the ContextColumn
     */
    this.beginContexColumn = function(){
        var sInsert = "";
        sInsert += "<td  style=\"vertical-align:top;\" id=\"marginalArea\" class=\"contextArea marginalAreaHeight\">";
        sInsert += "<div class=\"marginalArea marginalAreaHeight scrollBarColor\"  id=\"contextArea\">";
        return sInsert;
    }
    
    /* 
     *  This generates the HTML for the end of the ContextColumn
     */
    this.endContextColumn = function(){
        return "</div></td>";
    }
    
    /* 
     *  This generates the HTML for the Space between the different-Areas
     */
    this.getSpacing = function(){
        return "<div class=\"\" style=\"border:1px solid #ffffff;\" ></div>";
    }
    
    
    this.getInfoPlus = function() {
    	if(typeof(elements_infoplus) == "undefined")
    		return "";
   		return getPopupLinks(elements_infoplus, "Verwandte Inhalte", "infoplus", g_MARGINAL_INFOPLUSLINKS_MAXCOUNT);
    }
    
    this.getWebLinks = function() {
    	if(typeof(elements_weblinks) == "undefined")
    		return "";
   		return getPopupLinks(elements_weblinks, "Weiterführende Links", "weblinks", g_MARGINAL_WEBLINKS_MAXCOUNT);
    }

    var getPopupLinks = function(elementsArray, title, popupid, maxLinkCount) {
        try {
        	if(!maxLinkCount)
        		maxLinkCount = 3;
            var i = 0;
            var sizeOfArray = 0;
            var sInsert = "";


            sInsert += "<div class=\"marginalScrollWidth marginalHeadLines marginalContextTab\" ><nobr>&nbsp;";
            sInsert += title;
            sInsert += "</nobr><br></div>";
            sizeOfArray = elementsArray.length;
        	var mabLinkArray = elementsArray[0][1];
        	var iMax = Math.min(maxLinkCount, mabLinkArray.length);
        	
        	for( i = 0; i < iMax; i++) {
        		if(i == 0)
        			sInsert += mabLinkArray[i].displayBegin();
        		sInsert += mabLinkArray[i].display();
                if(i == iMax -1)
                	sInsert += mabLinkArray[mabLinkArray.length-1].displayEnd();
        	}
        	
        	var isTable = false;
        	for( i = 0; i < sizeOfArray; i++){
        		var linkCount = elementsArray[i][1].length;
        		if(i == 0)
    				linkCount -= iMax;
    			if(linkCount > 0) {
    				if(!isTable) {
    					sInsert += "<table cellspacing=\"0px\" cellpadding=\"0px\" class=\" marginalLinkTable bg-color7\">";
    					isTable = true;
    				}
	    			var title = replaceCount(elementsArray[i][0], linkCount);
	                sInsert += "<tr class=\"marginalLinkTr\" onmouseover=\"this.className='marginalLinkTrHover'\" onmouseout=\"this.className='marginalLinkTr'\">";
	                sInsert += "<td width=\"16px\" class=\"marginalLinkTd\" style=\"padding-left:2px;\"><img onmouseover=\"this.style.cursor='pointer'\" onmouseout=\"this.style.cursor='pointer'\" onclick=\"javascript:changePopupStatus(this," + i + ", '" + popupid + "',"+maxLinkCount+")\" alt=\""+title+" öffnen\" title=\""+title+" öffnen\" src=\"" + filePathIcons + "info_plus.gif\" border=\"0\"/></td>";
	                sInsert += "<td class=\"marginalLinkTd\"><a href=\"#\" onclick=\"javascript:changePopupStatus(this," + i + ", '" + popupid + "',"+maxLinkCount+")\" class=\"marginalLinkText\" ><nobr>"+ title +"</nobr></a></td>";
	                sInsert += "</tr>";
    			}
        	}
            
        	if(isTable)
                sInsert += "</table>";
            
            return sInsert;
        } catch(e) {
        	return "";
        }
    }
    
    var replaceCount = function(title, count) {
    	if(title.indexOf("%COUNT%") > -1)
    		return title.replace(/%COUNT%/g, count);
    	
    	return title.replace(/(.*\(\s*)\d+(\s*\)\s*)$/, "$1" + count + "$2");
    }
        
    this.getMarginalMoveBar = function() {
        var sInsert = "";
        sInsert += "<td class=\"marginalMoveBar marginalAreaHeight\">";
        sInsert += "<div id=\"marginalMoveBarID\" width=\"4px\" class=\"marginalAreaHeight sliderBar bg-color5\" style=\"margin:0px;padding:0px;\" >";
        
        sInsert += "</div>";
        sInsert += "</td>";
        return sInsert;
    }    
    
    this.getMarginalHead = function() {
        var sInsert = "";
        sInsert += "<div class=\"marginalText2 bg-color5\" style=\"margin:0px;padding-left:84px;text-align:right;\">";
        sInsert += "<table cellpadding=\"0\" cellspacing=\"0\" class=\"\" style=\"width:100%;height:18px;text-align:right;vertical-align:middle;margin-right:4px;\"><tr><td title=\"ausblenden\" id=\"minimizeMarginal\" onClick=\"Javascript:changeMarginalStatus();\" onmouseover=\"this.style.cursor='pointer';this.style.textDecoration='underline'\" onmouseout=\"this.style.textDecoration='none'\">"
        sInsert += "ausblenden";
        sInsert += "</td><td width=\"16\">";
        sInsert += "<img onClick=\"Javascript:changeMarginalStatus();\" onmouseover=\"this.style.cursor='pointer'\" onmouseout=\"this.style.cursor='pointer'\" border=\"0\" id=\"marginalOpenCloseButton\" src=\"" + this.filePathIcons + "verkleinern.gif\" alt=\"ausblenden\" title=\"ausblenden\"/>";
        sInsert += "</td></tr></table></div>";
        return sInsert;
    }
    
    this.getMarginalDocInfo = function() {
        var sInsert = "";
        if(typeof(elements_docinfo)!="undefined"){
            sInsert += "<div class=\"marginalHeadLines marginalScrollWidth writing marginalContextTab\"><nobr>&nbsp;";
            sInsert += "Dokument Info";
            sInsert += "</nobr><br></div>";
           
            sInsert += "<table cellspacing=\"0px\" cellpadding=\"0px\" class=\" marginalLinkTable bg-color7\">";
            sInsert += "<tr class=\"marginalLinkTr\" onmouseover=\"this.className='marginalLinkTrHover'\"  onmouseout=\"this.className='marginalLinkTr'\">";
            sInsert += "<td width=\"16px\" class=\"marginalLinkTdFirst\" style=\"padding-left:2px;\">";
            sInsert += "<img title=\"Dokument Info öffnen\" alt=\"Dokument Info öffnen\" src=\""+ this.filePathIcons + "info_plus.gif\" border=\"0\" onmouseover=\"this.style.cursor='pointer'\" onclick=\"javascript:changePopupStatus(this,-1,'docinfo')\"/>";
            sInsert += " </td>";
            sInsert += "<td  class=\"marginalLinkTdFirst \" ><a href=\"#\" class=\"marginalLinkText\" onclick=\"javascript:changePopupStatus(this,-1,'docinfo')\"><nobr>mehr dazu</nobr></a></td>";
            sInsert += "</tr>";
            sInsert += "</table>";
           
        }
        return sInsert;
    }
    
    this.getDazuGehoert = function() {
        var sInsert = "";
        if(typeof(elements_dazugehoert)!="undefined") {
            isAnyInfoSet = 1;
        	try {
	            sInsert += "<div class=\"marginalScrollWidth marginalHeadLines writing marginalContextTab\" ><nobr>&nbsp;";
	            sInsert += "Dazu gehört...";
	            sInsert += "</nobr><br></div>";
	            sizeOfArray = elements_dazugehoert.length;
	            if(sizeOfArray > 0) {
	            	
	            	var isTable = false;
	                for(i=0; i < sizeOfArray; i++) {
	                	
	                    var title         = elements_dazugehoert[i][0];
	                    var mabLinksArray = elements_dazugehoert[i][1];
	            		var linkCount     = mabLinksArray.length;
	
	                    if(linkCount == 1) {
	                    	if(isTable) {
	                            sInsert += "</table>";
	                            isTable = false;
	                            sInsert += mabLinksArray[0].displayBegin(false);
	                    	}
	                    	if(i == 0)
	                    		sInsert += mabLinksArray[0].displayBegin(true);
	                    	
	                    	mabLinksArray[0].setDisplayText(title.replace(/\({0,1}\%COUNT\%\){0,1}/i, ""));
	                    	sInsert += mabLinksArray[0].display();
	                    } else if (linkCount > 1){
	        				if(!isTable) {
	        					if(i > 0)
	        						sInsert += elements_dazugehoert[i-1][1][elements_dazugehoert[i-1][1].length - 1].displayEnd();
	        					sInsert += "<table cellspacing=\"0px\" cellpadding=\"0px\" class=\" marginalLinkTable bg-color7\">";
	        					isTable = true;
	        				}
	    	    			title = replaceCount(title, linkCount);
	    	                sInsert += "<tr class=\"marginalLinkTr\" onmouseover=\"this.className='marginalLinkTrHover'\" onmouseout=\"this.className='marginalLinkTr'\">";
	    	                sInsert += "<td width=\"16px\" class=\"marginalLinkTd\" style=\"padding-left:2px;\"><img onmouseover=\"this.style.cursor='pointer'\" onmouseout=\"this.style.cursor='pointer'\" onclick=\"javascript:changePopupStatus(this," + i + ", 'dazugehoert',"+0+")\" alt=\""+title+" öffnen\" title=\""+title+" öffnen\" src=\"" + filePathIcons + "info_plus.gif\" border=\"0\"/></td>";
	    	                sInsert += "<td class=\"marginalLinkTd\"><a href=\"#\" onclick=\"javascript:changePopupStatus(this," + i + ", 'dazugehoert',"+0+")\" class=\"marginalLinkText\" ><nobr>"+ title +"</nobr></a></td>";
	    	                sInsert += "</tr>";
	                    }
	                }
	            	if(isTable)
	                    sInsert += "</table>";
	            	else
	                    sInsert += elements_dazugehoert[i-1][1][elements_dazugehoert[i-1][1].length - 1].displayEnd();
	            } 
	    	} catch(e) {
	    		// for downward compatibility: try old behaviour
	    		sInsert = "";
	            sInsert += "<div class=\"marginalScrollWidth marginalHeadLines writing marginalContextTab\" ><nobr>&nbsp;";
	            sInsert += "Dazu gehört...";
	            sInsert += "</nobr><br></div>";
	            sizeOfArray = elements_dazugehoert.length;
	            if(sizeOfArray > 0) {
	                sInsert += elements_dazugehoert[0].displayBegin();
	                for(indexOfArray=0; indexOfArray < sizeOfArray; indexOfArray++) {
	                    sInsert += elements_dazugehoert[indexOfArray].display();
	                }
	                sInsert += elements_dazugehoert[indexOfArray-1].displayEnd();
	            }    
	    	}
        }
        return sInsert;
    }
    
    var getDocInfoPopup = function(){
    var popupValue = "";
    if(typeof(elements_docinfo)!="undefined")
    {
        isAnyInfoSet = 1;
        popupValue += "<div class=\"marginalPopupHeader\" style=\"height:29px\">";
        popupValue += "<table class=\" marginalPopupTable\">";
		popupValue += "<tr>";
		popupValue += "<td class=\"marginalHeadLines\" style=\"text-align:left;\">Dokument Info</td>";
		popupValue += "<td style=\"vertical-align: middle;width:70px;text-align:right;\"><a href=\"#\" onclick=\"javascript:closePopUp(this,"+moveSpeed+")\" class=\"marginalText2 writing\">schließen</a></td>";
		popupValue += "<td style=\"width:16px;vertical-align: middle;\"><a href=\"#\" onclick=\"javascript:closePopUp(this,"+moveSpeed+")\" class=\"marginalLinkText\"><img title=\"schließen\" alt=\"schließen\" border=\"0\" src=\"" + filePathIcons + "entfernen.gif\"/></a></td>";
		popupValue += "</tr>";
		popupValue += "</table>";
        popupValue += "</div>";
        sizeOfArray =elements_docinfo.length;
		
        popupValue += "<div class=\"marginalPopupLinkArea ieScroll bg-color7\" style=\"height:171px\">";
        if(sizeOfArray > 0)
        {
            popupValue += elements_docinfo[0].displayBegin();
            for(indexOfArray=0; indexOfArray < sizeOfArray; indexOfArray++)
            {
            	// mantis 37508 'legende' text appears in docInfo flyout
            	var leftObjString = elements_docinfo[indexOfArray].sLeftText;
            	if(leftObjString != 'legende') {
                popupValue += elements_docinfo[indexOfArray].display();
            	}
            }
            popupValue += elements_docinfo[indexOfArray-1].displayEnd();
        }
        popupValue += "</div>";
    }

    return popupValue;
}

	this.getPopupContent = function(popupNumber,popupid,maxLinkCount)
	{
		var elementsArray = null;
		switch(popupid) {
			case "docinfo":
				return getDocInfoPopup();
				break;
			case "infoplus":
				elementsArray = elements_infoplus;
				break;
			case "weblinks":
				elementsArray = elements_weblinks;
				break;
			case "dazugehoert":
				elementsArray = elements_dazugehoert;
				break;
			default:
				return "";
		}
		
	    var newMabLinks = elementsArray[popupNumber][1];
	    var sizeOfArray = newMabLinks.length;
	    var linkCount = newMabLinks.length;
		if(popupNumber == 0)
			linkCount -= Math.min(maxLinkCount, linkCount);

	    var title = replaceCount(elementsArray[popupNumber][0], linkCount);
		var popupValue = "<div class=\"marginalPopupHeader\">";
		popupValue += "<table class=\"marginalPopupTable\">";
		popupValue += "<tr>";
		popupValue += "<td class=\"marginalHeadLines\" style=\"font-weight:bold;\">"+ title +"</td>";
		popupValue += "<td style=\"font-weight:normal;width:70px;text-align:right;\"><a href=\"#\" onclick=\"javascript:closePopUp(this,"+moveSpeed+");\" class=\"marginalText2 writing\">schließen</a></td>";
		popupValue += "<td style=\"width:16px\"><a href=\"#\" onclick=\"javascript:closePopUp(this,"+moveSpeed+");\" class=\"marginalLinkText\"><img alt=\"schließen\" title=\"schließen\" border=\"0\" src=\"" + filePathIcons + "entfernen.gif\"/></a></td>";
		popupValue += "</tr>";
		popupValue += "</table>";
		popupValue += "</div>";
		popupValue += "<div width=\"100%\" style=\"border:1px solid #ffffff;\" ></div>"

		var iStart = 0;
		if(popupNumber == 0)
			iStart = maxLinkCount;

		var popupHeight = 0;
		if((sizeOfArray - iStart) < 6)
			popupHeight = ((sizeOfArray - iStart) * 30) + 30;
        else
        	popupHeight = g_iSizeOfMarginalPopup;
		
		popupValue += "<div style=\"height:" + popupHeight + "px\" class=\"marginalPopupLinkArea ieScroll bg-color7\" >";
        
        if(sizeOfArray > iStart) {
        	var isTable = false;
           	popupValue += newMabLinks[iStart].displayBegin();
            for(var i = iStart; i < sizeOfArray; i++) {
                popupValue += newMabLinks[i].display();
            }
           	popupValue += newMabLinks[i-1].displayEnd();
        }    
		popupValue += "</div>";
		
		return popupValue;
	}

}
