bc_tools/BCHdrGreyList.xsl
changeset 247 b836184892c6
equal deleted inserted replaced
246:ade7819ee16c 247:b836184892c6
       
     1 <!-- 
       
     2 - Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 - All rights reserved.
       
     4 - This component and the accompanying materials are made available
       
     5 - under the terms of the License "Eclipse Public License v1.0"
       
     6 - which accompanies this distribution, and is available
       
     7 - at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 - 
       
     9 - Initial Contributors:
       
    10 - Nokia Corporation - initial contribution.
       
    11 - 
       
    12 - Contributors:
       
    13 -   Maciej Seroka, maciejs@symbian.org
       
    14 - 
       
    15 - Description:
       
    16 - 
       
    17 -->
       
    18 <xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
       
    19 
       
    20 <xsl:param name="paramIssu" select="'All'" />
       
    21 <xsl:param name="paramSort" select="'0'" />
       
    22 <!--
       
    23 <xsl:param name="paramShowOk" select="'0'" />
       
    24 -->
       
    25 
       
    26 <xsl:variable name="show_API">
       
    27   <xsl:choose>
       
    28     <xsl:when test="count(//api) &gt; 0">1</xsl:when>
       
    29     <xsl:otherwise>0</xsl:otherwise>
       
    30   </xsl:choose>
       
    31 </xsl:variable>
       
    32 
       
    33 <xsl:variable name="sort1">
       
    34 	<xsl:if test="$paramSort = 1">api</xsl:if>
       
    35 	<xsl:if test="$paramSort != 1">nonode</xsl:if>
       
    36 </xsl:variable>
       
    37 <xsl:variable name="sort2">
       
    38 	<xsl:if test="$paramSort = 2">api</xsl:if>
       
    39 	<xsl:if test="$paramSort != 2">nonode</xsl:if>
       
    40 </xsl:variable>
       
    41 <xsl:variable name="sort0">
       
    42 	<xsl:choose>
       
    43 		<xsl:when test="$paramSort = 0 and count(//shortname) &gt; 0">shortname</xsl:when>
       
    44 		<xsl:when test="$paramSort = 0 and count(//shortname) = 0">name</xsl:when>
       
    45 		<xsl:otherwise test="$paramSort != 0">nonode</xsl:otherwise>
       
    46 	</xsl:choose>
       
    47 </xsl:variable>
       
    48 <xsl:variable name="xslRepBlk">
       
    49 	<xsl:choose>
       
    50 		<xsl:when test="$paramSort!=0">okRepBlock</xsl:when>
       
    51 		<xsl:otherwise>repBlock</xsl:otherwise>
       
    52 	</xsl:choose>
       
    53 </xsl:variable>
       
    54 		
       
    55 <xsl:template match="/">
       
    56 
       
    57 <HTML xmlns:msie="urn:default">
       
    58 <msie:download id="dler" style="behavior:url(#default#download)"/>
       
    59 
       
    60 <xsl:variable name="reporttype">
       
    61   <xsl:choose>
       
    62     <xsl:when test="count(bbcresults/issuelist/headerfile) &gt; 0">HDR</xsl:when>
       
    63     <xsl:when test="count(bbcresults/issuelist/library) &gt; 0">LIB</xsl:when>
       
    64     <xsl:otherwise>NON</xsl:otherwise>
       
    65   </xsl:choose>
       
    66 </xsl:variable>
       
    67 
       
    68 <HEAD>
       
    69 <TITLE>Binary Compatibility Open Issues :: 
       
    70 		<xsl:choose>
       
    71       <xsl:when test="$reporttype='HDR'">Headerfiles</xsl:when>
       
    72 	  <xsl:when test="$reporttype='LIB'">Libraries</xsl:when>
       
    73       <xsl:otherwise>Empty</xsl:otherwise>
       
    74     </xsl:choose>
       
    75 </TITLE>
       
    76   
       
    77 <script type="text/javascript">
       
    78 
       
    79 var diffFileName = new Array(2);
       
    80 var diffFileContent = new Array(2);
       
    81 var diffFileIndex;
       
    82 var popup;
       
    83 var hasFailed = false;
       
    84 var diffTitle = "";
       
    85 var diffFileName1;
       
    86 var diffFileName2;
       
    87 var repBlk = '<xsl:value-of select="$xslRepBlk"/>';
       
    88 
       
    89 var hrefLoaction;
       
    90 hrefLoaction = window.location.href;
       
    91 
       
    92 function switchMenu(obj) {
       
    93 	if (document.getElementById)
       
    94 	{
       
    95 		var el = document.getElementById(obj);
       
    96 		if (el)
       
    97 		{
       
    98 				if ( el.style.display != "none" ) {
       
    99 				   el.style.display = 'none';
       
   100 				   document.getElementById("cl").innerHTML = "View OK Issues";
       
   101 			   	}
       
   102 				else {
       
   103 				   el.style.display = 'inline';
       
   104 				   document.getElementById("cl").innerHTML = "Hide OK Issues";
       
   105 				}
       
   106 		}
       
   107 	}
       
   108 }	
       
   109 function switchBacklink(obj)
       
   110 {
       
   111 if (document.getElementById)
       
   112 	{
       
   113 		var el = document.getElementById(obj);
       
   114 		if (el)
       
   115 		{				
       
   116 				   el.style.display = 'none';
       
   117 				   window.location.href = hrefLoaction;
       
   118 		}
       
   119 	}
       
   120 }
       
   121 
       
   122 
       
   123 function openPath( file )
       
   124 {	
       
   125 	var thefile = file;
       
   126 	thefile = file.replace( /\\/g, "/" );
       
   127 	if ( thefile != null )
       
   128 	{
       
   129 	  pos1=thefile.lastIndexOf('/');	  
       
   130 	  thefile=thefile.substring(0,pos1);
       
   131 	}
       
   132 	if ( thefile != null )
       
   133 		window.location = "file://" + thefile;
       
   134 }
       
   135 
       
   136 function showFile( file1, file2 )
       
   137 {	
       
   138 	var thefile = null;
       
   139   
       
   140 	origbasedir = document.getElementById( "origbaselinedir" ).value.replace( /\\/g, "/" ).replace( /\*\.h/g, "" ).replace(/\/s*$/, "");
       
   141 	newbasedir = document.getElementById( "baselinedir" ).firstChild.data.replace( /\\/g, "/" ).replace(/\/s*$/, "");
       
   142 	origcurrdir = document.getElementById( "origcurrentdir" ).value.replace( /\\/g, "/" ).replace(/\/s*$/, "");;
       
   143 	newcurrdir = document.getElementById( "currentdir" ).firstChild.data.replace( /\\/g, "/" ).replace(/\/s*$/, "");;
       
   144 	
       
   145 	if ( file1 != null )
       
   146 		thefile = file1.replace( origbasedir, newbasedir );
       
   147 	else if ( file2 != null )
       
   148 		thefile = file2.replace( origcurrdir, newcurrdir );
       
   149 	if ( thefile != null )
       
   150 		window.location = "file://" + thefile;
       
   151 }
       
   152 
       
   153 function showDiff( title, file1, file2 )
       
   154 {
       
   155 
       
   156 	diffTitle = "diff : " + title;
       
   157 	origbasedir = document.getElementById( "origbaselinedir" ).value.replace( /\\/g, "/" ).replace( /\*\.h/g, "" ).replace(/\/s*$/, "");
       
   158 	newbasedir = document.getElementById( "baselinedir" ).firstChild.data.replace( /\\/g, "/" ).replace(/\/s*$/, "");
       
   159 	origcurrdir = document.getElementById( "origcurrentdir" ).value.replace( /\\/g, "/" ).replace(/\/s*$/, "");;
       
   160 	newcurrdir = document.getElementById( "currentdir" ).firstChild.data.replace( /\\/g, "/" ).replace(/\/s*$/, "");;
       
   161 
       
   162 	file1 = diffFileName1 = file1.replace( origbasedir, newbasedir );
       
   163 	file2 = diffFileName2 = file2.replace( origcurrdir, newcurrdir );
       
   164 
       
   165 	diffFileName[0] = file1; diffFileName[1] = file2;
       
   166 	diffFileContent[0] = ""; diffFileContent[1] = "";
       
   167 	diffFileIndex = 0;
       
   168 	if ( typeof(dler) != "undefined" &amp;&amp; typeof(dler.startDownload) != "undefined" ) ieLoad( "" );
       
   169 	else ffLoad();
       
   170 	window.setTimeout( "loadFailed()", 1500 );	
       
   171 }
       
   172 
       
   173 function loadFailed()
       
   174 {
       
   175 	if ( hasFailed ) return;
       
   176 	else hasFailed = true;
       
   177 	if ( diffFileContent[0] == "" ) alert( "Could not load file: " + diffFileName[0] );
       
   178 	else if ( diffFileContent[1] == "" ) alert( "Could not load file: " + diffFileName[1] );
       
   179 }
       
   180 
       
   181 function ffLoad()
       
   182 {
       
   183 	var req = new XMLHttpRequest(); 
       
   184 	req.onreadystatechange = function() { 
       
   185 		if (req.readyState == 4 ) {
       
   186 			diffFileContent[diffFileIndex++] = req.responseText;
       
   187 			if ( diffFileIndex == 1 ) ffLoad();
       
   188 			else diffFilesLoaded();
       
   189 		}
       
   190 	};
       
   191 	req.open( "GET", "file:///" + diffFileName[diffFileIndex], true ); 
       
   192 	req.send( null ); 
       
   193 } 
       
   194 
       
   195 function ieLoad( text )
       
   196 {
       
   197 	if ( diffFileIndex &gt; 0 ) {
       
   198 		if ( text == "" ) {
       
   199 			loadFailed();
       
   200 			return;
       
   201 		}
       
   202 		diffFileContent[diffFileIndex-1] = text;
       
   203 	}
       
   204 	++diffFileIndex;
       
   205 	if ( diffFileIndex &lt;= 2 ) dler.startDownload( diffFileName[diffFileIndex-1], ieLoad );
       
   206 	else diffFilesLoaded();
       
   207 }
       
   208 
       
   209 function setProgress( percentage )
       
   210 {
       
   211 	var prog1 = Math.max( 1, Math.round( percentage * 1.5 ) );
       
   212 	var prog2 = 150 - prog1;
       
   213 }
       
   214 function SetFocus(element)
       
   215 {
       
   216 window.scrollTo(0,0);
       
   217 var tmp=document.getElementById(element);
       
   218 if(tmp !=null)
       
   219 tmp.focus();
       
   220 return true;
       
   221 } 
       
   222 
       
   223 function diffFilesLoaded()
       
   224 {
       
   225 	var w = window.screen.availWidth - 50;
       
   226 	var h = window.screen.availHeight - 150;
       
   227 	popup = window.open( "", "_self");
       
   228 	popup.document.title = diffTitle;
       
   229 	popup.document.body.style.margin = 0;
       
   230 
       
   231 	var oldcontent = diffFileContent[0];
       
   232 	var newcontent = diffFileContent[1];
       
   233 
       
   234 	var oldlines = oldcontent.replace(/\r/g, "").split("\n");
       
   235 	var newlines = newcontent.replace(/\r/g, "").split("\n");
       
   236 
       
   237 	res = diff( oldlines, newlines );
       
   238 	var matching = res.matching;
       
   239 	var matchtype = res.matchtype;
       
   240 	var output = "&lt;table width='100%' cellspacing='0' cellpadding='1' border='0' style='font-family: Courier; font-size=1;'&gt;";
       
   241 
       
   242 	var lastA = -1;
       
   243 	var lastB = -1;
       
   244 	for ( i = 0; i &lt;= matching.length; i++ ) {
       
   245 		if ( i == matching.length || matching[i] != -1 ) {
       
   246 			// all lines ]lastA..i[ --&gt; removed
       
   247 			for ( j = lastA + 1; j &lt; i; ++j ) {
       
   248 				output += "&lt;tr&gt;&lt;td bgColor='#ff9080'&gt;" + repfunc( oldlines[j] ) + "&lt;/td&gt;&lt;td width='1' bgColor='black'&gt;&lt;/td&gt;" +
       
   249 						  "&lt;td bgColor='#e0e0e0'&gt;" + repfunc( "" ) + "&lt;/td&gt;&lt;/tr&gt;";
       
   250 			}
       
   251 
       
   252 			// all lines ]lastB..matching[i][ --&gt; inserted
       
   253 			if ( i &lt; matching.length )
       
   254 				untilB = matching[i];
       
   255 			else
       
   256 				untilB = newlines.length;
       
   257 			for ( j = lastB + 1; j &lt; untilB; ++j ) {
       
   258 				output += "&lt;tr&gt;&lt;td bgColor='#e0e0e0'&gt;" + repfunc( "" ) + "&lt;/td&gt;&lt;td width='1' bgColor='black'&gt;&lt;/td&gt;" +
       
   259 						  "&lt;td bgColor='#a0e0a0'&gt;" + repfunc( newlines[j] ) + "&lt;/td&gt;&lt;/tr&gt;";
       
   260 			}
       
   261 
       
   262 			// matching line
       
   263 			if ( i &lt; matching.length ) {
       
   264 				if ( matchtype[i] == 0 ) {
       
   265 					output += "&lt;tr&gt;&lt;td&gt;" + repfunc( oldlines[i] ) + "&lt;/td&gt;&lt;td width='1' bgColor='black'&gt;&lt;/td&gt;" +
       
   266 							  "&lt;td&gt;" + repfunc( newlines[matching[i]] ) + "&lt;/td&gt;&lt;/tr&gt;";
       
   267 				}
       
   268 				else {
       
   269 					output += "&lt;tr&gt;&lt;td bgColor='#ffff80'&gt;" + repfunc( oldlines[i] ) + "&lt;/td&gt;&lt;td width='1' bgColor='black'&gt;&lt;/td&gt;" +
       
   270 							  "&lt;td bgColor='#ffff80'&gt;" + repfunc( newlines[matching[i]] ) + "&lt;/td&gt;&lt;/tr&gt;";
       
   271 				}
       
   272 				lastA = i;
       
   273 				lastB = matching[i];
       
   274 			}
       
   275 		}
       
   276 	}
       
   277 	output += "&lt;/table&gt;";
       
   278 
       
   279 	var backlink = document.getElementById("backlink");
       
   280 	if(backlink != null)
       
   281 	backlink.innerHTML = "Close diff view";
       
   282 	    
       
   283 	var titleconent = document.getElementById("title");
       
   284 	if(titleconent != null)
       
   285 	titleconent.innerHTML = "Viewing diff between  " + diffFileName1 + "  and   " + diffFileName2;
       
   286 	      
       
   287   var diffconent = document.getElementById("diff");
       
   288   if(diffconent != null)
       
   289 	diffconent.innerHTML = output;
       
   290 	     
       
   291   var backlink1 = document.getElementById("backlink1");
       
   292   if(backlink1 != null)
       
   293 	backlink1.innerHTML = "Close diff view";  
       
   294 	
       
   295 	if(backlink != null)
       
   296 	SetFocus(backlink);
       
   297 	  
       
   298 }
       
   299 
       
   300 function repfunc( str )
       
   301 {
       
   302 	if ( str.length &gt; 70 )
       
   303 		str = str.substring(0,69) + "..."
       
   304 	else if ( str.replace(/\s+/g,"").length == 0 )
       
   305 		str = "&amp;nbsp;";
       
   306 
       
   307 	return "&lt;nobr&gt;" + str.replace(/&lt;/g, "&amp;lt;").replace(/&gt;/g, "&amp;gt;").replace(/\s/g, "&amp;nbsp;") + "&lt;/nobr&gt;";
       
   308 }
       
   309 
       
   310 function diff( o, n )
       
   311 {
       
   312 	var olen = o.length;
       
   313 	var nlen = n.length;
       
   314 
       
   315 	var crcTable = new Array( 256 );
       
   316 	for ( i = 0; i &lt; 256; i++ ) {
       
   317 		crc = i;
       
   318 		for ( j = 8 ; j &gt; 0; j-- ) {
       
   319 			if ( crc &amp; 1 ) crc = ( crc &gt;&gt;&gt; 1 ) ^ 0xEDB88320;
       
   320 			else crc &gt;&gt;&gt;= 1;
       
   321 		}
       
   322 		crcTable[i] = crc;
       
   323 	}
       
   324 
       
   325 	var aHash = new Array( olen );
       
   326 	for ( i = 0; i &lt; olen; ++i ) {
       
   327 		str = o[i].replace(/^\s+/, "").replace(/\s+$/, "");
       
   328 		crc = 0xFFFFFFFF;
       
   329 		for ( k = 0; k &lt; str.length; ++k )
       
   330 			crc = crcTable[ ( crc &amp; 0xff ) ^ str.charCodeAt(k) ] ^ ( crc &gt;&gt;&gt; 8 );
       
   331 		aHash[i] = crc ^ 0xFFFFFFFF;
       
   332 	}
       
   333 
       
   334 	var bHash = new Array( nlen );
       
   335 	for ( i = 0; i &lt; nlen; ++i ) {
       
   336 		str = n[i].replace(/^\s+/, "").replace(/\s+$/, "");
       
   337 		crc = 0xFFFFFFFF;
       
   338 		for ( k = 0; k &lt; str.length; ++k )
       
   339 			crc = crcTable[ ( crc &amp; 0xff ) ^ str.charCodeAt(k) ] ^ ( crc &gt;&gt;&gt; 8 );
       
   340 		bHash[i] = crc ^ 0xFFFFFFFF;
       
   341 	}
       
   342 
       
   343 	matches = lcs( aHash, bHash, 0 ).matching;
       
   344 
       
   345 	for ( i = 0; i &lt; olen; ++i )
       
   346 		if ( matches[i] != -1 &amp;&amp; o[i].replace(/^\s+/, "").replace(/\s+$/, "") != n[matches[i]].replace(/^\s+/, "").replace(/\s+$/, "") )
       
   347 			matches[i] = -1;
       
   348 
       
   349 	matchtype = new Array ( olen );
       
   350 	for ( i = 0; i &lt; olen; ++i )
       
   351 		matchtype[i] = 0;
       
   352 
       
   353 	olast = -1;
       
   354 	nlast = -1;
       
   355 	for ( oline = 0; oline &lt;= olen; ++oline ) {
       
   356 		setProgress( 75 + ( oline + 1 ) * 25 / ( olen + 1 ) );
       
   357 		if ( oline == olen || matches[oline] != -1 ) {
       
   358 			if ( oline &lt; olen )
       
   359 				nline = matches[oline];
       
   360 			else
       
   361 				nline = nlen;
       
   362 			for ( ocurrent = olast + 1; ocurrent &lt; oline; ++ocurrent ) {
       
   363 				for ( ncurrent = nlast + 1; ncurrent &lt; nline; ++ncurrent ) {
       
   364 					str1 = o[ocurrent];
       
   365 					str2 = n[ncurrent];
       
   366 					if ( ( pos = str1.lastIndexOf( "//" ) ) != -1 ) str1 = str1.substring( 0, pos );
       
   367 					if ( ( pos = str2.lastIndexOf( "//" ) ) != -1 ) str2 = str2.substring( 0, pos );
       
   368 					str1 = str1.replace( /\s+/g, " " );
       
   369 					str2 = str2.replace( /\s+/g, " " );
       
   370 					if ( str1.length == 0 ) {
       
   371 						if ( str2.replace(/\s/g, "").length == 0 )
       
   372 							break;
       
   373 						else
       
   374 							continue;
       
   375 					}
       
   376 					else if ( str2.length == 0 ) {
       
   377 						if ( str1.replace( /\s/g, "" ).length == 0 )
       
   378 							break;
       
   379 						else
       
   380 							continue;
       
   381 					}
       
   382 					if ( str1.length &lt; str2.length / 3 || str2.length &lt; str1.length / 3 )
       
   383 						continue;
       
   384 					matchlen = lcs( str1, str2, 1 ).length;
       
   385 					if ( matchlen &gt;= str1.length * 4 / 5 || matchlen &gt;= str2.length * 4 / 5 )
       
   386 						break;
       
   387 				}
       
   388 				if ( ncurrent &lt; nline ) {
       
   389 					matches[ocurrent] = ncurrent;
       
   390 					matchtype[ocurrent] = 1;
       
   391 					nlast = ncurrent;
       
   392 				}
       
   393 			}
       
   394 			if ( oline &lt; olen ) {
       
   395 				olast = oline;
       
   396 				nlast = nline;
       
   397 				matchtype[oline] = 0;
       
   398 			}
       
   399 		}
       
   400 	}
       
   401 
       
   402 	return { matching: matches, matchtype: matchtype };
       
   403 }
       
   404 
       
   405 function lcs( A, B, valueType )
       
   406 {
       
   407 	m = A.length;
       
   408 	n = B.length;
       
   409 
       
   410 	V = new Array( n );
       
   411 	if ( valueType == 0 ) {
       
   412 		for ( i = 0; i &lt; n; ++i )
       
   413 			V[i] = { pos: i, value: B[i] };
       
   414 	}
       
   415 	else {
       
   416 		for ( i = 0; i &lt; n; ++i )
       
   417 			V[i] = { pos: i, value: B.charCodeAt(i) };
       
   418 	}
       
   419 	V.sort( sortByValue );
       
   420 
       
   421 	E = new Array( n + 1 );
       
   422 	E[0] = { pos: -1, last: true};
       
   423 	for ( i = 0; i &lt; n; ++i )
       
   424 		E[i+1] = { pos: V[i].pos, last: ( i == n-1 || V[i].value != V[i+1].value ) };
       
   425 
       
   426 	P = new Array( m );
       
   427 	for ( i = 0; i &lt; m; ++i ) {
       
   428 		var idx;
       
   429 		var val = ( valueType == 0 ? A[i] : A.charCodeAt(i) );
       
   430 		for ( min = 0, max = n-1, idx = ( n - 1 ) &gt;&gt; 1; true; idx = ( min + max ) &gt;&gt; 1 ) {
       
   431 			if ( val &lt; V[idx].value )
       
   432 				max = idx - 1;
       
   433 			else if ( val &gt; V[idx].value )
       
   434 				min = idx + 1;
       
   435 			else if ( !E[idx].last )
       
   436 				max = idx - 1;
       
   437 			else
       
   438 				break;
       
   439 			if ( min &gt; max )
       
   440 				break;
       
   441 		}
       
   442 		if ( val == V[idx].value &amp;&amp; E[idx].last )
       
   443 			P[i] = idx;
       
   444 		else
       
   445 			P[i] = -1;
       
   446 	}
       
   447 
       
   448 	K = new Array( Math.min( m, n ) + 2 );
       
   449 	K[0] = new candidate( -1, -1, null );
       
   450 	K[1] = new candidate( m, n, null );
       
   451 	k = 0;
       
   452 	for ( i = 0; i &lt; m; ++i ) {
       
   453 		if ( valueType == 0 )
       
   454 			setProgress( ( i + 1 ) * 75 / ( m + 1 ) );
       
   455 		if ( P[i] != -1 ) {
       
   456 			r = 0;
       
   457 			c = K[0];
       
   458 			p = P[i] + 1;
       
   459 			var s;
       
   460 
       
   461 			while ( true ) {
       
   462 				j = E[p].pos;
       
   463 				for ( min = r, max = k, s = ( r + k ) &gt;&gt; 1; true; s = ( min + max ) &gt;&gt; 1 ) {
       
   464 					if ( j &lt; K[s].b )
       
   465 						max = s - 1;
       
   466 					else if ( j &gt; K[s + 1].b )
       
   467 						min = s + 1;
       
   468 					else
       
   469 						break;
       
   470 					if ( min &gt; max )
       
   471 						break;
       
   472 				}
       
   473 
       
   474 				if ( j &gt; K[s].b &amp;&amp; j &lt; K[s + 1].b ) {
       
   475 					temp = new candidate( i, j, K[s] );
       
   476 					K[r] = c;
       
   477 					c = temp;
       
   478 					r = s + 1;
       
   479 					if ( s == k ) {
       
   480 						K[k + 2] = K[k + 1];
       
   481 						++k;
       
   482 						break;
       
   483 					}
       
   484 				}
       
   485 
       
   486 				if ( E[p].last )
       
   487 					break;
       
   488 				++p;
       
   489 			}
       
   490 
       
   491 			K[r] = c;
       
   492 		}
       
   493 	}
       
   494 
       
   495 	J = new Array( m );
       
   496 	len = 0;
       
   497 	for ( i = 0; i &lt; m; ++i )
       
   498 		J[i] = -1;
       
   499 	for ( c = K[k]; c.a != -1; c = c.previous, ++len ) {
       
   500 		J[c.a] = c.b;
       
   501 	}
       
   502 
       
   503 	return { matching: J, length: len };
       
   504 }
       
   505 
       
   506 function candidate( a, b, previous )
       
   507 {
       
   508   this.a = a;
       
   509   this.b = b;
       
   510   this.previous = previous;
       
   511 }
       
   512 
       
   513 function sortByValue( a, b )
       
   514 {
       
   515   ret = a.value - b.value;
       
   516   return ( ret != 0 ? ret : a.pos - b.pos );
       
   517 }
       
   518 
       
   519 function pw() {return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth}
       
   520 function mouseX(evt) {return evt.clientX ? evt.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) : evt.pageX;}
       
   521 function mouseY(evt) {return evt.clientY ? evt.clientY + (document.documentElement.scrollTop || document.body.scrollTop) : evt.pageY}
       
   522 function popUp(evt,oi) 
       
   523 {
       
   524 	if (document.getElementById)
       
   525 	{
       
   526 		var wp = pw();
       
   527 		dm = document.getElementById(oi);
       
   528 		ds = dm.style; st = ds.visibility;
       
   529 		if (dm.offsetWidth)
       
   530 			ew = dm.offsetWidth;
       
   531 		else if (dm.clip.width)
       
   532 			ew = dm.clip.width;
       
   533 		if (st == "visible" || st == "show")
       
   534 		{
       
   535 			ds.visibility = "hidden";
       
   536 		}
       
   537 		else
       
   538 		{
       
   539 			tv = mouseY(evt) - 40;
       
   540 			lv = mouseX(evt) + (ew/8);
       
   541 			if (2 > lv)
       
   542 				lv = 2;
       
   543 			else if (lv + ew > wp) lv -= ew/2;
       
   544 			lv += 'px';
       
   545 			tv += 'px'; 
       
   546 			ds.left = lv;
       
   547 			ds.top = tv;
       
   548 			ds.visibility = "visible";
       
   549 		}
       
   550 	}
       
   551 }
       
   552 
       
   553 function getIssueTableIdx( aRepBlock )
       
   554 {
       
   555 	var len = aRepBlock.getElementsByTagName("table").length;
       
   556 	if( len &gt; 0 ) {
       
   557 		var aTable = aRepBlock.getElementsByTagName("table");
       
   558 		for( i = 0; i &lt; len; i++) {
       
   559 			if( aTable[i].id == "issueTable" ) {
       
   560 				return i;
       
   561 			}
       
   562 		}
       
   563 	}
       
   564 	return -1;
       
   565 }
       
   566 
       
   567 function getSeverityColIdx(aVal, tdNodes)
       
   568 {
       
   569 	if( tdNodes.length &gt; 0 )
       
   570 	{
       
   571 		for( i = 0 ; i &lt; tdNodes.length; i++ ) {
       
   572 			if( tdNodes[i].id == aVal ) {
       
   573 			    return i;
       
   574 			}
       
   575 		}
       
   576 	}
       
   577 	return -1;
       
   578 }
       
   579 
       
   580 function showAllIssues( aRepBlock, n, tableIdx, x, y)
       
   581 {
       
   582 	for( i = 0; i &lt; n; i++ ) {
       
   583 		// getting row that displays information
       
   584 		aTr = aRepBlock[i].getElementsByTagName("table")[tableIdx].getElementsByTagName("tr");
       
   585 		nTr = aTr.length;
       
   586 		
       
   587 		for( j = 0; j &lt; nTr ; j++ ) {
       
   588 			aTr[j].style.display = ""; //unhide row
       
   589 			aTr[j].childNodes[x].style.display = ""; //unhide BC column
       
   590 			aTr[j].childNodes[y].style.display = ""; //unhide SC column
       
   591 		}
       
   592 		aRepBlock[i].style.display = ""; //unhide Report Block
       
   593 	}
       
   594 	return true;
       
   595 }
       
   596 
       
   597 function hideIssues(aRepBlock, n, tableIdx, x, y)
       
   598 {
       
   599 	var rtn = false;
       
   600 	for( i = 0; i &lt; n; i++ ) {
       
   601 		// getting row that displays information
       
   602 		aTr = aRepBlock[i].getElementsByTagName("table")[tableIdx].getElementsByTagName("tr");
       
   603 		nTr = aTr.length;
       
   604 		
       
   605 		// hiding header row
       
   606 		aTr[0].childNodes[x].style.display = "";
       
   607 		aTr[0].childNodes[y].style.display = "none";
       
   608 		
       
   609 		hideBlock = 1; // flag for hiding the report block
       
   610 		
       
   611 		for( j = 1; j &lt; nTr; j++ ) {
       
   612 			// hiding row if "None"
       
   613 			if( aTr[j].childNodes[x].innerHTML == "None" ) {
       
   614 				aTr[j].style.display = "none";
       
   615 			}
       
   616 			else {
       
   617 				// else hiding column only
       
   618 				aTr[j].childNodes[x].style.display = "";
       
   619 				aTr[j].childNodes[y].style.display = "none";
       
   620 				aTr[j].style.display = "";		// unhiding row if it was hidden
       
   621 				hideBlock = 0;
       
   622 			}
       
   623 		}
       
   624 	
       
   625 		if( hideBlock == 1 ) {
       
   626 			aRepBlock[i].style.display = "none";		// hiding entire "Report Block"
       
   627 		}
       
   628 		else {
       
   629 			aRepBlock[i].style.display = "";				// unhiding entire "Report Block"
       
   630 			rtn = true;
       
   631 		}
       
   632 	}
       
   633 	return rtn;
       
   634 }
       
   635 
       
   636 function isGrpNull(aNode) {
       
   637 	if( aNode.firstChild.firstChild.firstChild.innerHTML == null ) {
       
   638 		return true;
       
   639 	}
       
   640 	return false;
       
   641 }
       
   642 
       
   643 function isExpand(aNode)
       
   644 {
       
   645 	if (aNode.firstChild.firstChild.firstChild.innerHTML.charAt(0) == "-") {
       
   646 		return true;
       
   647 	}
       
   648 	return false;
       
   649 }
       
   650 
       
   651 function showGrp (aNode,bVal)
       
   652 {
       
   653 	if (bVal) {
       
   654 		if (!isGrpNull(aNode) &amp;&amp; isExpand(aNode)) {
       
   655 			aNode.nextSibling.style.display = "";
       
   656 		}
       
   657 		aNode.style.display = "";
       
   658 	}
       
   659 	else {
       
   660 		aNode.style.display = "none";
       
   661 		aNode.nextSibling.style.display = "none";
       
   662 	}
       
   663 }
       
   664 	
       
   665 function selectIssue2 (aRepBlock, aVal) {
       
   666 	if(aRepBlock ) {
       
   667 		if( aRepBlock.length > 0 ) {
       
   668 		
       
   669 			tableIdx = getIssueTableIdx(aRepBlock[0]);
       
   670 			if( tableIdx == -1 ) {
       
   671 				alert("Error: Table of issue details not found.\nPossibly change in HTML!");
       
   672 				return true;
       
   673 			}
       
   674 			
       
   675 			// these values are set considering BC Break as default
       
   676 			var bc = getSeverityColIdx("BCSeverity", aRepBlock[0].getElementsByTagName("table")[tableIdx].getElementsByTagName("tr")[0].childNodes),
       
   677 			    sc = getSeverityColIdx("SCSeverity", aRepBlock[0].getElementsByTagName("table")[tableIdx].getElementsByTagName("tr")[0].childNodes);
       
   678 			    
       
   679 			if( bc == -1 || sc == -1 ) {
       
   680 				alert("Error: BC/SC Severity column not found.\nPossibly change in HTML!");
       
   681 				return true;
       
   682 			}
       
   683 			
       
   684 			if ( aVal == "All" ) {
       
   685 			// if user selects All, show everything
       
   686 				return showAllIssues( aRepBlock, aRepBlock.length, tableIdx, bc, sc );
       
   687 			}
       
   688 			else {
       
   689 				// code if user selects BC or SC
       
   690 				
       
   691 				if ( aVal == "SC Break" ) {
       
   692 					return hideIssues(aRepBlock, aRepBlock.length, tableIdx, sc, bc); // changing rows id if its a SC Break
       
   693 				}
       
   694 				else {
       
   695 					return hideIssues(aRepBlock, aRepBlock.length, tableIdx, bc, sc);
       
   696 				}
       
   697 			}
       
   698 		}
       
   699 	}
       
   700 }
       
   701 
       
   702 function selectIssue( aVal ) {
       
   703 <xsl:if test="$paramSort=3">
       
   704 	if(aVal == 'BC Break')
       
   705 	{
       
   706 		var grps = document.getElementsByName("issBC");
       
   707 		var len = grps.length;
       
   708 		for ( var i = 0; i &lt; len; i++ ) {
       
   709 			showGrp(grps[i], true);
       
   710 		}
       
   711 		grps = document.getElementsByName("issSC");
       
   712 		len = grps.length;
       
   713 		for ( var i = 0; i &lt; len; i++ ) {
       
   714 			showGrp(grps[i], false);
       
   715 		}
       
   716 	}
       
   717 	else if(aVal == 'SC Break')
       
   718 	{
       
   719 		var grps = document.getElementsByName("issBC");
       
   720 		var len = grps.length;
       
   721 		for ( var i = 0; i &lt; len; i++ ) {
       
   722 			showGrp(grps[i], false);
       
   723 		}
       
   724 		grps = document.getElementsByName("issSC");
       
   725 		len = grps.length;
       
   726 		for ( var i = 0; i &lt; len; i++ ) {
       
   727 			showGrp(grps[i], true);
       
   728 		}
       
   729 	}
       
   730 	else
       
   731 	{
       
   732 		var grps = document.getElementsByName("issBC");
       
   733 		var len = grps.length;
       
   734 		for ( var i = 0; i &lt; len; i++ ) {
       
   735 			showGrp(grps[i], true);
       
   736 		}
       
   737 		grps = document.getElementsByName("issSC");
       
   738 		len = grps.length;
       
   739 		for ( var i = 0; i &lt; len; i++ ) {
       
   740 			showGrp(grps[i], true);
       
   741 		}
       
   742 	}
       
   743 	chkExpandAnc();
       
   744 </xsl:if>
       
   745 <xsl:if test="$paramSort=1 or $paramSort=2">
       
   746 	var grps = document.getElementsByName("issGrp");
       
   747 	for (var i = 0; i &lt; grps.length; i++) {
       
   748 		var divs = grps[i].nextSibling.firstChild.childNodes;
       
   749 		if (selectIssue2(divs, aVal)) {
       
   750 			grps[i].style.display = "";
       
   751 		}
       
   752 		else {
       
   753 			grps[i].style.display = "none";
       
   754 		}
       
   755 	}
       
   756 	chkExpandAnc();	
       
   757 </xsl:if>
       
   758 
       
   759 		// get "Report Blocks" in array
       
   760 		aRepBlock = document.getElementsByName(repBlk);
       
   761 		selectIssue2 (aRepBlock, aVal);
       
   762 }
       
   763 
       
   764 function isAllExpand(grpV) {
       
   765 	var grps = document.getElementsByName(grpV);
       
   766 	for( var i = 0; i &lt; grps.length; i++ ) {
       
   767 		if ( !isGrpNull(grps[i]) &amp;&amp; !isExpand(grps[i])) {
       
   768 			return false;
       
   769 		}
       
   770 	}
       
   771 	return true;
       
   772 }
       
   773 
       
   774 function expandGrp(aBool,grpV) {
       
   775 	
       
   776 	var grps = document.getElementsByName(grpV);
       
   777 	for( var i = 0; i &lt; grps.length; i++ ) {
       
   778 		if ( !isGrpNull(grps[i]) &amp;&amp; (aBool &amp;&amp; !isExpand(grps[i]) || !aBool &amp;&amp; isExpand(grps[i]))) {
       
   779 			toggleIWView2(grpV+(i+1));
       
   780 		}
       
   781 	}
       
   782 }
       
   783 
       
   784 function setExpandAnc(cn) {
       
   785 	if (cn) {
       
   786 		document.getElementById("expandAnc").innerHTML = "Expand All";
       
   787 	} else {
       
   788 		document.getElementById("expandAnc").innerHTML = "Collapse All";
       
   789 	}
       
   790 }
       
   791 
       
   792 function toggleExpand()
       
   793 {
       
   794 	var cn = document.getElementById("expandAnc").innerHTML == "Expand All";
       
   795 	
       
   796 <xsl:if test="$paramSort=3">
       
   797 	if (document.getElementById("issueDropD").value != "SC Break") {
       
   798 		expandGrp(cn,"issBC");
       
   799 	}
       
   800 	if (document.getElementById("issueDropD").value != "BC Break") {
       
   801 		expandGrp(cn,"issSC");
       
   802 	}
       
   803 </xsl:if>
       
   804 <xsl:if test="$paramSort!=3">
       
   805 		expandGrp(cn,"issGrp");
       
   806 </xsl:if>
       
   807 
       
   808 	setExpandAnc(!cn);
       
   809 }
       
   810 
       
   811 function toggleIWView2(aVal)
       
   812 {
       
   813 	if( document.getElementById(aVal+"dtl").style.display == "none" ) {
       
   814 		document.getElementById(aVal).innerHTML = "- "+document.getElementById(aVal).innerHTML.substring(2);
       
   815 		document.getElementById(aVal+"dtl").style.display = "";
       
   816 	}
       
   817 	else {
       
   818 		document.getElementById(aVal).innerHTML = "+ "+document.getElementById(aVal).innerHTML.substring(2);
       
   819 		document.getElementById(aVal+"dtl").style.display = "none";
       
   820 	}
       
   821 }
       
   822 
       
   823 function chkExpandAnc() {
       
   824 <xsl:if test="$paramSort=3">
       
   825 		var cn = false;
       
   826 		if (document.getElementById("issueDropD").value != "SC Break") {
       
   827 			cn = !isAllExpand("issBC");
       
   828 		}
       
   829 		if (document.getElementById("issueDropD").value != "BC Break") {
       
   830 			if (!cn) {
       
   831 				cn = !isAllExpand("issSC");
       
   832 			}
       
   833 		}
       
   834 </xsl:if>
       
   835 <xsl:if test="$paramSort!=3">
       
   836 		var cn = !isAllExpand("issGrp");
       
   837 </xsl:if>
       
   838 	setExpandAnc(cn);
       
   839 }
       
   840 
       
   841 function toggleIWView(aVal)
       
   842 {
       
   843 
       
   844 	toggleIWView2(aVal);
       
   845 	chkExpandAnc();
       
   846 }
       
   847 
       
   848 function changeSort()
       
   849 {
       
   850 	loadXML();
       
   851 }
       
   852 
       
   853 function loadXML() {
       
   854 
       
   855 	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x;
       
   856 	
       
   857 		var objXSLT = new ActiveXObject("MSXML2.FreeThreadedDomDocument");
       
   858 		objXSLT.async = false;
       
   859 		objXSLT.load("BBCResults.xsl");
       
   860 		
       
   861 		var objCompiled = new ActiveXObject("MSXML2.XSLTemplate");
       
   862 		objCompiled.stylesheet = objXSLT.documentElement;
       
   863 		
       
   864 		var objXSLProc = objCompiled.createProcessor();
       
   865 		
       
   866 		var objXML = new ActiveXObject("MSXML2.FreeThreadedDomDocument");
       
   867 		objXML.async = false;
       
   868 		objXML.load(document.URL);
       
   869 		
       
   870 		objXSLProc.input = objXML;
       
   871 		
       
   872 		eval(objXSLProc.addParameter("paramSort", document.getElementById("sortDropD").value));
       
   873 <!--
       
   874 		eval(objXSLProc.addParameter("paramIssu",document.getElementById("issueDropD").value));
       
   875 		if( document.getElementById('sd').style.display != "none" ) {
       
   876 			eval(objXSLProc.addParameter("paramShowOk", "1"));
       
   877 		}
       
   878 -->
       
   879 		
       
   880 		objXSLProc.transform();
       
   881 		
       
   882 		document.write(objXSLProc.output);
       
   883 		document.close();
       
   884 	}
       
   885 	else if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox 
       
   886 		var oXmlDom = document.implementation.createDocument("", "", null);
       
   887 		oXmlDom.async = false;
       
   888 		var oXslDom = document.implementation.createDocument("", "", null);
       
   889 		oXslDom.async = false;
       
   890 
       
   891 		oXmlDom.load(document.URL);
       
   892 		oXslDom.load("BBCResults.xsl");
       
   893 		
       
   894 		var oProcessor = new XSLTProcessor()
       
   895 		oProcessor.importStylesheet(oXslDom);
       
   896 		
       
   897 		oProcessor.setParameter(null, "paramSort", document.getElementById("sortDropD").value);
       
   898 <!--
       
   899 		oProcessor.setParameter(null, "paramIssu",document.getElementById("issueDropD").value);
       
   900 		if( document.getElementById('sd').style.display != "none" ) {
       
   901 			oProcessor.setParameter(null, "paramShowOk", "1");
       
   902 		}
       
   903 -->
       
   904 
       
   905 		var oResultDom = oProcessor.transformToDocument(oXmlDom);
       
   906 		
       
   907 		var serializer = new XMLSerializer();
       
   908 		var xml = serializer.serializeToString(oResultDom);
       
   909 		
       
   910 		document.write(xml.replace(/&amp;gt;/g,"&gt;").replace(/&amp;lt;/g,"&lt;").replace(/&amp;amp;/g,"&amp;"));
       
   911 		document.close();
       
   912 	}
       
   913 	else {
       
   914 		alert("Un supported browser");
       
   915 	}
       
   916 }
       
   917 
       
   918 function init()
       
   919 {
       
   920 	document.getElementById("sortDropD").value = "<xsl:value-of select='$paramSort' />";
       
   921 	document.getElementById("issueDropD").value = "<xsl:value-of select='$paramIssu' />";
       
   922 
       
   923 	if( document.getElementById("issueDropD").value != 'All' ) {
       
   924 		selectIssue( document.getElementById("issueDropD").value );
       
   925 	}
       
   926 <!--
       
   927 	<xsl:if test="$paramShowOk = 1">switchMenu('sd');</xsl:if>
       
   928 -->
       
   929 }
       
   930 </script>
       
   931 
       
   932 <style type="text/css">
       
   933                     div.tip {font:12px/14px
       
   934                     Arial,Helvetica,sans-serif; border:solid 1px
       
   935                     #666666; width:270px; padding:1px;
       
   936                     position:absolute; z-index:100;
       
   937                     visibility:hidden; color:#333333; top:20px;
       
   938                     left:90px; background-color:#ffffcc;
       
   939                     layer-background-color:#ffffcc;}
       
   940 </style>
       
   941 </HEAD>
       
   942 
       
   943 	<BODY bgColor="#f8f8f8" onLoad="init();">
       
   944 		<font size="4"><a id ="backlink" onclick="switchBacklink('dl');" href=""></a></font><BR/>
       
   945 	    <ul id="dl" style="display:none">	
       
   946 	      <a name="back"></a>
       
   947 	    </ul>
       
   948 	    	          
       
   949 	  <font size="4"><a id ="title"></a></font>
       
   950 	    <ul id="dl" style="display:none">	
       
   951 	      <a name="title"></a>
       
   952 	    </ul>
       
   953 	          
       
   954 	  <font size="2"><a id ="diff"></a></font>
       
   955 	    <ul id="dl" style="display:none">	
       
   956 	      <a name="diff"></a>
       
   957 	    </ul>	          
       
   958 	          
       
   959     <font size="4"><a id ="backlink1" onclick="switchBacklink('dl');" href=""></a></font><BR/>
       
   960 	    <ul id="dl" style="display:none">	
       
   961 	      <a name="back"></a>
       
   962 	    </ul>
       
   963 	
       
   964 		<font size="5">Binary Compatibility Open Issues</font><HR/>
       
   965 		<xsl:if test="$reporttype!='NON'">
       
   966 			<table border="0" width="100%"><tr><td>
       
   967 					<table border="0">
       
   968 						<tr><td><b>Sort by</b></td>
       
   969 						<td>
       
   970 							<select id="sortDropD" onchange="changeSort()">
       
   971 								<option value="0">
       
   972 									<xsl:choose>
       
   973 								<xsl:when test="$reporttype='HDR'">Header Names</xsl:when>
       
   974 								<xsl:otherwise>Library Names</xsl:otherwise>
       
   975 								</xsl:choose></option>
       
   976 				<xsl:if test="$show_API = 1">
       
   977 								<option value="1">API Name</option>
       
   978 								<option value="2">Category Name</option>
       
   979 				</xsl:if>
       
   980 								<option value="3">Issue Severity</option>
       
   981 							</select>
       
   982 						</td></tr>
       
   983 						<tr><td><b>Issue Type</b></td>
       
   984 						<td><select id="issueDropD" onchange="selectIssue(this.value)">
       
   985 								<option value="All">All</option>
       
   986 								<option value="BC Break">BC Break</option>
       
   987 								<option value="SC Break">SC Break</option>
       
   988 							</select>
       
   989 						</td></tr>
       
   990 					</table>
       
   991 				</td><td align="right" valign="bottom">
       
   992 					<xsl:attribute name="style">display:<xsl:if test="$paramSort=0">none</xsl:if></xsl:attribute>
       
   993 					<font size="3"><a id="expandAnc" onclick="toggleExpand();return false;" href="#expandAnc">Expand All</a></font>
       
   994 				</td></tr>
       
   995 			</table>
       
   996 			<HR/>
       
   997 			<br/>
       
   998 		</xsl:if>
       
   999 		<xsl:if test="$reporttype='NON'">
       
  1000 			<i>There are no issues.</i>
       
  1001 		</xsl:if>	
       
  1002 	<xsl:choose>
       
  1003 		<xsl:when test="$paramSort=0">
       
  1004 			
       
  1005 		  <xsl:if test="$reporttype='LIB'">
       
  1006 		    <xsl:if test="count(bbcresults/issuelist/library[issue[(count(status)=0 or status!='OK') and typeid!=2 and typeid!=7 and typeid!=14]]) = 0">
       
  1007 		      <i>There are no issues.</i><BR/>
       
  1008 		    </xsl:if>
       
  1009 	    	<xsl:for-each select="bbcresults/issuelist/library[issue[(count(status)=0 or status!='OK') and typeid!=2 and typeid!=7 and typeid!=14]]">
       
  1010 				<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1011 					<xsl:call-template name="LIBNotOK" />
       
  1012 				</xsl:for-each>
       
  1013 		  </xsl:if>
       
  1014 		  <xsl:if test="$reporttype='HDR'">
       
  1015 		    <xsl:if test="count(bbcresults/issuelist/headerfile[status!='OK']) = 0">
       
  1016 		      <i>There are no issues.</i><BR/>
       
  1017 		    </xsl:if>
       
  1018 	    	<xsl:for-each select="bbcresults/issuelist/headerfile[status!='OK']">
       
  1019 				<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1020 					<xsl:call-template name="HDRNotOK" />
       
  1021 				</xsl:for-each>
       
  1022 		  </xsl:if>
       
  1023 			
       
  1024 		</xsl:when>
       
  1025 		<xsl:when test="$paramSort=1 or $paramSort=2">
       
  1026 			
       
  1027 	  <xsl:if test="$reporttype='LIB'">
       
  1028 	  	<xsl:choose>
       
  1029 	    <xsl:when test="count(bbcresults/issuelist/library[issue[(count(status)=0 or status!='OK') and typeid!=2 and typeid!=7 and typeid!=14]]) = 0">
       
  1030 	      <i>There are no issues.</i><BR/>
       
  1031 	    </xsl:when>
       
  1032 	    <xsl:otherwise>
       
  1033 	  
       
  1034 			  <table width="100%">
       
  1035 		
       
  1036 		    	<xsl:for-each select="//library[issue[(count(status) = 0 or status!='OK') and typeid!=2 and typeid!=7 and typeid!=14] and (($paramSort=1 and not(api/@name=preceding::api/@name)) or ($paramSort=2 and not(api/@category=preceding::api/@category)))]">
       
  1037 					<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1038 						<xsl:variable name="lbl">
       
  1039 							<xsl:if test="$paramSort=1"><xsl:value-of select="api/@name"/></xsl:if>
       
  1040 							<xsl:if test="$paramSort=2"><xsl:value-of select="api/@category"/></xsl:if>  </xsl:variable>
       
  1041 						<xsl:variable name="grId">issGrp<xsl:value-of select="position()" /></xsl:variable>
       
  1042 				
       
  1043 						<tr name="issGrp" id="issGrp"><td><font size="4"> <a><xsl:attribute name="onclick">toggleIWView('<xsl:value-of select="$grId"/>');return false;</xsl:attribute>
       
  1044 							<xsl:attribute name="id"><xsl:value-of select="$grId"/></xsl:attribute>
       
  1045 							<xsl:attribute name="href">#<xsl:value-of select="$grId"/></xsl:attribute>+ <xsl:value-of select="$lbl"/></a></font></td></tr>
       
  1046 						<tr style="display:none"><xsl:attribute name="id"><xsl:value-of select="$grId"/>dtl</xsl:attribute> <td>
       
  1047 					   	<xsl:for-each select="//library[(issue[(count(status) = 0 or status!='OK') and typeid!=2 and typeid!=7 and typeid!=14]) and (($paramSort=1 and api/@name=$lbl) or ($paramSort=2 and api/@category=$lbl))]">
       
  1048 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1049 									<xsl:call-template name="LIBNotOK">
       
  1050 										<xsl:with-param name="issBCSC" select="'3'" />
       
  1051 									</xsl:call-template>
       
  1052 								</xsl:for-each>
       
  1053 						</td></tr>
       
  1054 					
       
  1055 					</xsl:for-each>
       
  1056 					
       
  1057 				</table>
       
  1058 				
       
  1059 	   	</xsl:otherwise>
       
  1060 	  	</xsl:choose>
       
  1061 		</xsl:if>
       
  1062 	
       
  1063 	  <xsl:if test="$reporttype='HDR'">
       
  1064 	  	<xsl:choose>
       
  1065 	    <xsl:when test="count(bbcresults/issuelist/headerfile[status!='OK']) = 0">
       
  1066 	      <i>There are no issues.</i><BR/>
       
  1067 	    </xsl:when>
       
  1068 	    <xsl:otherwise>
       
  1069 	  
       
  1070 			  <table width="100%">
       
  1071 		
       
  1072 		    	<xsl:for-each select="//headerfile[status!='OK' and (($paramSort=1 and not(api/@name=preceding::api/@name)) or ($paramSort=2 and not(api/@category=preceding::api/@category)))]">
       
  1073 					<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1074 						<xsl:variable name="lbl">
       
  1075 							<xsl:if test="$paramSort=1"><xsl:value-of select="api/@name"/></xsl:if>
       
  1076 							<xsl:if test="$paramSort=2"><xsl:value-of select="api/@category"/></xsl:if>  </xsl:variable>
       
  1077 						<xsl:variable name="grId">issGrp<xsl:value-of select="position()" /></xsl:variable>
       
  1078 				
       
  1079 						<tr name="issGrp" id="issGrp"><td><font size="4"> <a><xsl:attribute name="onclick">toggleIWView('<xsl:value-of select="$grId"/>');return false;</xsl:attribute>
       
  1080 							<xsl:attribute name="id"><xsl:value-of select="$grId"/></xsl:attribute>
       
  1081 							<xsl:attribute name="href">#<xsl:value-of select="$grId"/></xsl:attribute>+ <xsl:value-of select="$lbl"/></a></font></td></tr>
       
  1082 						<tr style="display:none"><xsl:attribute name="id"><xsl:value-of select="$grId"/>dtl</xsl:attribute> <td>
       
  1083 					   	<xsl:for-each select="//headerfile[status!='OK' and (($paramSort=1 and api/@name=$lbl) or ($paramSort=2 and api/@category=$lbl))]">
       
  1084 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1085 									<xsl:call-template name="HDRNotOK" />
       
  1086 								</xsl:for-each>
       
  1087 						</td></tr>
       
  1088 					
       
  1089 					</xsl:for-each>
       
  1090 					
       
  1091 				</table>
       
  1092 				
       
  1093 	  	</xsl:otherwise>
       
  1094 	  	</xsl:choose>
       
  1095 		</xsl:if>
       
  1096 	</xsl:when>
       
  1097 	
       
  1098 	<xsl:when test="$paramSort=3">
       
  1099 
       
  1100 	  <xsl:if test="$reporttype='LIB'">
       
  1101 	  <xsl:choose>
       
  1102 	    <xsl:when test="count(bbcresults/issuelist/library[issue[(count(status)=0 or status!='OK') and typeid!=2]]) = 0">
       
  1103 	      <i>There are no issues.</i><BR/>
       
  1104 	    </xsl:when>
       
  1105 	    <xsl:otherwise>
       
  1106 	    	
       
  1107 				<table width="100%">
       
  1108 					
       
  1109 							<tr name="issBC" id="issBC"><td><font size="4"><a onclick="toggleIWView('issBC1');return false;" id="issBC1" href="#issBC1">+ BBC Break</a></font></td></tr>
       
  1110 							<tr id="issBC1dtl" style="display:none"><td>
       
  1111 					    	<xsl:for-each select="bbcresults/issuelist/library[issue[(count(status) = 0 or status!='OK') and typeid!=2 and bc_severity='BBC Break']]">
       
  1112 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1113 									<xsl:call-template name="LIBNotOK" >
       
  1114 										<xsl:with-param name="issTyp" select="'BBC Break'" />
       
  1115 										<xsl:with-param name="issBCSC" select="'1'" />
       
  1116 									</xsl:call-template>
       
  1117 								</xsl:for-each>
       
  1118 							</td></tr>
       
  1119 						
       
  1120 							<tr name="issBC" id="issBC"><td><font size="4"><a onclick="toggleIWView('issBC2');return false;" id="issBC2" href="#issBC2">+ FC Break</a></font></td></tr>
       
  1121 							<tr id="issBC2dtl" style="display:none"><td>
       
  1122 					    	<xsl:for-each select="bbcresults/issuelist/library[issue[(count(status) = 0 or status!='OK') and typeid!=2 and bc_severity='FC Break']]">
       
  1123 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1124 									<xsl:call-template name="LIBNotOK" >
       
  1125 										<xsl:with-param name="issTyp" select="'FC Break'" />
       
  1126 										<xsl:with-param name="issBCSC" select="'1'" />
       
  1127 									</xsl:call-template>
       
  1128 								</xsl:for-each>
       
  1129 							</td></tr>
       
  1130 						
       
  1131 							<tr name="issSC" id="issSC"><td><font size="4"><a onclick="toggleIWView('issSC1');return false;" id="issSC1" href="#issSC1">+ SC Break</a></font></td></tr>
       
  1132 							<tr id="issSC1dtl" style="display:none"><td>
       
  1133 					    	<xsl:for-each select="bbcresults/issuelist/library[issue[(count(status) = 0 or status!='OK') and typeid!=2 and sc_severity='SC Break']]">
       
  1134 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1135 									<xsl:call-template name="LIBNotOK" >
       
  1136 										<xsl:with-param name="issTyp" select="'SC Break'" />
       
  1137 										<xsl:with-param name="issBCSC" select="'2'" />
       
  1138 									</xsl:call-template>
       
  1139 								</xsl:for-each>
       
  1140 							</td></tr>
       
  1141 						
       
  1142 							<tr name="issBC" id="issBC"><td><font size="4"><a onclick="toggleIWView('issBC3');return false;" id="issBC3" href="#issBC3">+ Possible BBC Break</a></font></td></tr>
       
  1143 							<tr id="issBC3dtl" style="display:none"><td>
       
  1144 					    	<xsl:for-each select="bbcresults/issuelist/library[issue[(count(status) = 0 or status!='OK') and typeid!=2 and bc_severity='Possible BBC Break']]">
       
  1145 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1146 									<xsl:call-template name="LIBNotOK" >
       
  1147 										<xsl:with-param name="issTyp" select="'Possible BBC Break'" />
       
  1148 										<xsl:with-param name="issBCSC" select="'1'" />
       
  1149 									</xsl:call-template>
       
  1150 								</xsl:for-each>
       
  1151 							</td></tr>
       
  1152 						
       
  1153 							<tr name="issBC" id="issBC"><td><font size="4"><a onclick="toggleIWView('issBC4');return false;" id="issBC4" href="#issBC4">+ Possible FC Break</a></font></td></tr>
       
  1154 							<tr id="issBC4dtl" style="display:none"><td>
       
  1155 					    	<xsl:for-each select="bbcresults/issuelist/library[issue[(count(status) = 0 or status!='OK') and typeid!=2 and bc_severity='Possible FC Break']]">
       
  1156 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1157 									<xsl:call-template name="LIBNotOK" >
       
  1158 										<xsl:with-param name="issTyp" select="'Possible FC Break'" />
       
  1159 										<xsl:with-param name="issBCSC" select="'1'" />
       
  1160 									</xsl:call-template>
       
  1161 								</xsl:for-each>
       
  1162 							</td></tr>
       
  1163 						
       
  1164 							<tr name="issSC" id="issSC"><td><font size="4"><a onclick="toggleIWView('issSC2');return false;" id="issSC2" href="#issSC2">+ Possible SC Break</a></font></td></tr>
       
  1165 							<tr id="issSC2dtl" style="display:none"><td>
       
  1166 					    	<xsl:for-each select="bbcresults/issuelist/library[issue[(count(status) = 0 or status!='OK') and typeid!=2 and sc_severity='Possible SC Break']]">
       
  1167 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1168 									<xsl:call-template name="LIBNotOK" >
       
  1169 										<xsl:with-param name="issTyp" select="'Possible SC Break'" />
       
  1170 										<xsl:with-param name="issBCSC" select="'2'" />
       
  1171 									</xsl:call-template>
       
  1172 								</xsl:for-each>
       
  1173 							</td></tr>
       
  1174 						
       
  1175 							<tr name="issBC" id="issBC"><td><font size="4"><a onclick="toggleIWView('issBC5');return false;" id="issBC5" href="#issBC5">+ BC Informative</a></font></td></tr>
       
  1176 							<tr id="issBC5dtl" style="display:none"><td>
       
  1177 					    	<xsl:for-each select="bbcresults/issuelist/library[issue[(count(status) = 0 or status!='OK') and typeid!=2 and bc_severity='Informative']]">
       
  1178 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1179 									<xsl:call-template name="LIBNotOK" >
       
  1180 										<xsl:with-param name="issTyp" select="'Informative'" />
       
  1181 										<xsl:with-param name="issBCSC" select="'1'" />
       
  1182 									</xsl:call-template>
       
  1183 								</xsl:for-each>
       
  1184 							</td></tr>
       
  1185 						
       
  1186 							<tr name="issSC" id="issSC"><td><font size="4"><a onclick="toggleIWView('issSC3');return false;" id="issSC3" href="#issSC3">+ SC Informative</a></font></td></tr>
       
  1187 							<tr id="issSC3dtl" style="display:none"><td>
       
  1188 					    	<xsl:for-each select="bbcresults/issuelist/library[issue[(count(status) = 0 or status!='OK') and typeid!=2 and sc_severity='Informative']]">
       
  1189 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1190 									<xsl:call-template name="LIBNotOK" >
       
  1191 										<xsl:with-param name="issTyp" select="'Informative'" />
       
  1192 										<xsl:with-param name="issBCSC" select="'2'" />
       
  1193 									</xsl:call-template>
       
  1194 								</xsl:for-each>
       
  1195 							</td></tr>
       
  1196 
       
  1197 				</table>
       
  1198 			</xsl:otherwise>
       
  1199 		</xsl:choose>
       
  1200 		
       
  1201 		</xsl:if>
       
  1202 
       
  1203 	  <xsl:if test="$reporttype='HDR'">
       
  1204 	    <xsl:if test="count(bbcresults/issuelist/headerfile[status!='OK']) = 0">
       
  1205 	      <i>There are no issues.</i><BR/>
       
  1206 	    </xsl:if>
       
  1207 	    <xsl:if test="count(bbcresults/issuelist/headerfile[status!='OK']) &gt; 0">
       
  1208 				<table id="iwTable" name="iwTable" width="100%">
       
  1209 					
       
  1210 							<tr name="issBC" id="issBC"><td><font size="4"><a onclick="toggleIWView('issBC1');return false;" id="issBC1" href="#issBC1">+ BBC Break</a></font></td></tr>
       
  1211 							<tr id="issBC1dtl" style="display:none"><td>
       
  1212 					    	<xsl:for-each select="bbcresults/issuelist/headerfile[status!='OK' and issue/severity/typestring='BBC Break']">
       
  1213 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1214 									<xsl:call-template name="HDRNotOK" >
       
  1215 										<xsl:with-param name="issTyp" select="'BBC Break'" />
       
  1216 										<xsl:with-param name="issBCSC" select="'1'" />
       
  1217 									</xsl:call-template>
       
  1218 								</xsl:for-each>
       
  1219 							</td></tr>
       
  1220 						
       
  1221 							<tr name="issBC" id="issBC"><td><font size="4"><a onclick="toggleIWView('issBC2');return false;" id="issBC2" href="#issBC2">+ FC Break</a></font></td></tr>
       
  1222 							<tr id="issBC2dtl" style="display:none"><td>
       
  1223 					    	<xsl:for-each select="bbcresults/issuelist/headerfile[status!='OK' and issue/severity/typestring='FC Break']">
       
  1224 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1225 									<xsl:call-template name="HDRNotOK" >
       
  1226 										<xsl:with-param name="issTyp" select="'FC Break'" />
       
  1227 										<xsl:with-param name="issBCSC" select="'1'" />
       
  1228 									</xsl:call-template>
       
  1229 								</xsl:for-each>
       
  1230 							</td></tr>
       
  1231 						
       
  1232 							<tr name="issSC" id="issSC"><td><font size="4"><a onclick="toggleIWView('issSC1');return false;" id="issSC1" href="#issSC1">+ SC Break</a></font></td></tr>
       
  1233 							<tr id="issSC1dtl" style="display:none"><td>
       
  1234 					    	<xsl:for-each select="bbcresults/issuelist/headerfile[status!='OK' and issue/scseverity/typestring='SC Break']">
       
  1235 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1236 									<xsl:call-template name="HDRNotOK" >
       
  1237 										<xsl:with-param name="issTyp" select="'SC Break'" />
       
  1238 										<xsl:with-param name="issBCSC" select="'2'" />
       
  1239 									</xsl:call-template>
       
  1240 								</xsl:for-each>
       
  1241 							</td></tr>
       
  1242 						
       
  1243 							<tr name="issBC" id="issBC"><td><font size="4"><a onclick="toggleIWView('issBC3');return false;" id="issBC3" href="#issBC3">+ Possible BBC Break</a></font></td></tr>
       
  1244 							<tr id="issBC3dtl" style="display:none"><td>
       
  1245 					    	<xsl:for-each select="bbcresults/issuelist/headerfile[status!='OK' and issue/severity/typestring='Possible BBC Break']">
       
  1246 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1247 									<xsl:call-template name="HDRNotOK" >
       
  1248 										<xsl:with-param name="issTyp" select="'Possible BBC Break'" />
       
  1249 										<xsl:with-param name="issBCSC" select="'1'" />
       
  1250 									</xsl:call-template>
       
  1251 								</xsl:for-each>
       
  1252 							</td></tr>
       
  1253 						
       
  1254 							<tr name="issBC" id="issBC"><td><font size="4"><a onclick="toggleIWView('issBC4');return false;" id="issBC4" href="#issBC4">+ Possible FC Break</a></font></td></tr>
       
  1255 							<tr id="issBC4dtl" style="display:none"><td>
       
  1256 					    	<xsl:for-each select="bbcresults/issuelist/headerfile[status!='OK' and issue/severity/typestring='Possible FC Break']">
       
  1257 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1258 									<xsl:call-template name="HDRNotOK" >
       
  1259 										<xsl:with-param name="issTyp" select="'Possible FC Break'" />
       
  1260 										<xsl:with-param name="issBCSC" select="'1'" />
       
  1261 									</xsl:call-template>
       
  1262 								</xsl:for-each>
       
  1263 							</td></tr>
       
  1264 						
       
  1265 							<tr name="issSC" id="issSC"><td><font size="4"><a onclick="toggleIWView('issSC2');return false;" id="issSC2" href="#issSC2">+ Possible SC Break</a></font></td></tr>
       
  1266 							<tr id="issSC2dtl" style="display:none"><td>
       
  1267 					    	<xsl:for-each select="bbcresults/issuelist/headerfile[status!='OK' and issue/scseverity/typestring='Possible SC Break']">
       
  1268 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1269 									<xsl:call-template name="HDRNotOK" >
       
  1270 										<xsl:with-param name="issTyp" select="'Possible SC Break'" />
       
  1271 										<xsl:with-param name="issBCSC" select="'2'" />
       
  1272 									</xsl:call-template>
       
  1273 								</xsl:for-each>
       
  1274 							</td></tr>
       
  1275 						
       
  1276 							<tr name="issBC" id="issBC"><td><font size="4"><a onclick="toggleIWView('issBC5');return false;" id="issBC5" href="#issBC5">+ BC Informative</a></font></td></tr>
       
  1277 							<tr id="issBC5dtl" style="display:none"><td>
       
  1278 					    	<xsl:for-each select="bbcresults/issuelist/headerfile[status!='OK' and issue/severity/typestring='Informative']">
       
  1279 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1280 									<xsl:call-template name="HDRNotOK" >
       
  1281 										<xsl:with-param name="issTyp" select="'Informative'" />
       
  1282 										<xsl:with-param name="issBCSC" select="'1'" />
       
  1283 									</xsl:call-template>
       
  1284 								</xsl:for-each>
       
  1285 							</td></tr>
       
  1286 						
       
  1287 							<tr name="issSC" id="issSC"><td><font size="4"><a onclick="toggleIWView('issSC3');return false;" id="issSC3" href="#issSC3">+ SC Informative</a></font></td></tr>
       
  1288 							<tr id="issSC3dtl" style="display:none"><td>
       
  1289 					    	<xsl:for-each select="bbcresults/issuelist/headerfile[status!='OK' and issue/scseverity/typestring='Informative']">
       
  1290 								<xsl:sort select="*[name()=$sort1]/@name | *[name()=$sort2]/@category | *[name()=$sort0]" />
       
  1291 									<xsl:call-template name="HDRNotOK" >
       
  1292 										<xsl:with-param name="issTyp" select="'Informative'" />
       
  1293 										<xsl:with-param name="issBCSC" select="'2'" />
       
  1294 									</xsl:call-template>
       
  1295 								</xsl:for-each>
       
  1296 							</td></tr>
       
  1297 
       
  1298 				</table>
       
  1299 			</xsl:if>
       
  1300 		</xsl:if>
       
  1301 	</xsl:when>
       
  1302 	</xsl:choose>
       
  1303 <hr/>
       
  1304 
       
  1305 </BODY>
       
  1306 </HTML>
       
  1307 </xsl:template>
       
  1308 
       
  1309 	<xsl:template name="HDRNotOK" >
       
  1310 		<xsl:param name="issTyp" select="-1" />
       
  1311 		<xsl:param name="issBCSC" select="'0'" />
       
  1312 		<div id="repBlock" name="repBlock">
       
  1313 			<table width="100%" cellspacing="0" cellpadding="0" border="0" style="visibility:visible">
       
  1314 			<tr>
       
  1315 				<td>
       
  1316 			<table cellspacing="0" cellpadding="0" border="0" style="visibility:visible">
       
  1317 			<tr>
       
  1318 				<td colspan="3">
       
  1319 			  	<xsl:choose>
       
  1320 		  			<xsl:when test="$paramSort = 0 and $show_API=1"><font size="4"><b><xsl:value-of select="shortname"/></b></font></xsl:when>
       
  1321 		  			<xsl:otherwise><font size="4"><xsl:value-of select="shortname"/></font></xsl:otherwise>
       
  1322 			  	</xsl:choose>
       
  1323 			  </td>
       
  1324 			</tr>
       
  1325 		<xsl:if test="$show_API=1">
       
  1326 			<tr>
       
  1327 				<td>
       
  1328 			  	<xsl:choose>
       
  1329 		  			<xsl:when test="$paramSort = 1"><font size="4"><b><i><xsl:value-of select="api/@name"/></i></b></font></xsl:when>
       
  1330 		  			<xsl:otherwise><font size="3"><i><xsl:value-of select="api/@name"/></i></font></xsl:otherwise>
       
  1331 			  	</xsl:choose>
       
  1332 			  </td>
       
  1333 			  <td width="30" align="center"><font size="3"><b>:</b></font></td>
       
  1334 				<td>
       
  1335 			  	<xsl:choose>
       
  1336 		  			<xsl:when test="$paramSort = 2"><font size="4"><b><i><xsl:value-of select="api/@category"/></i></b></font></xsl:when>
       
  1337 		  			<xsl:otherwise><font size="3"><i><xsl:value-of select="api/@category"/></i></font></xsl:otherwise>
       
  1338 			  	</xsl:choose>
       
  1339 			  </td>
       
  1340 			</tr>
       
  1341 		</xsl:if>
       
  1342 		</table>
       
  1343 				</td>
       
  1344 			  <td valign="bottom" align="right">
       
  1345 						<A>
       
  1346 							<xsl:attribute name="href">
       
  1347 							  javascript:showFile( '<xsl:value-of select="translate(filename, '\\', '/')"/>', null );
       
  1348 							</xsl:attribute>
       
  1349 							<xsl:if test="filename != ''">baseline</xsl:if>
       
  1350 						</A>		
       
  1351 			<xsl:if test="filename = ''"><font color="#808080">baseline</font></xsl:if>
       
  1352 
       
  1353 			<font size="3"> . </font>
       
  1354 		
       
  1355 						<A>
       
  1356 							<xsl:attribute name="href">
       
  1357 							  javascript:showFile( null, '<xsl:value-of select="translate(comparefilename, '\\', '/')"/>' );
       
  1358 							</xsl:attribute>
       
  1359 							<xsl:if test="comparefilename != ''">current</xsl:if>
       
  1360 						</A>
       
  1361 				
       
  1362 			<xsl:if test="comparefilename = ''"><font color="#808080">current</font></xsl:if>
       
  1363 
       
  1364 			<font size="3"> . </font>
       
  1365 
       
  1366 			<xsl:choose>
       
  1367 			  <xsl:when test="filename != '' and comparefilename != ''">
       
  1368 			    <A>
       
  1369 						<xsl:attribute name="href">
       
  1370 							javascript:showDiff( '<xsl:value-of select="translate(shortname, '\\', '/')"/>', '<xsl:value-of select="translate(filename, '\\', '/')"/>', '<xsl:value-of select="translate(comparefilename, '\\', '/')"/>' );
       
  1371 						</xsl:attribute>
       
  1372 						diff
       
  1373 			    </A>
       
  1374 			  </xsl:when>
       
  1375 				<xsl:otherwise>
       
  1376 			    <font color="#808080">diff</font>
       
  1377 				</xsl:otherwise>
       
  1378 			</xsl:choose>
       
  1379 			
       
  1380 			</td></tr>
       
  1381 			</table>
       
  1382 			<table border="0" cellpadding="2" cellspacing="0" bgColor="black" width = "100%">
       
  1383 			<TR><TD><table border="0" cellspacing="0" cellpadding="3" width = "100%">
       
  1384 
       
  1385 			<TR>
       
  1386          <xsl:attribute name="bgColor">
       
  1387 			    <xsl:choose>
       
  1388 			      <xsl:when test="status = 'OK'">#a8d098</xsl:when>
       
  1389 			      <xsl:otherwise>#d0c8c0</xsl:otherwise>
       
  1390 			    </xsl:choose>
       
  1391 			  </xsl:attribute>
       
  1392 			<TD align="left">
       
  1393 			<xsl:choose>
       
  1394 			    <xsl:when test="status = 'NOK'"><b>This header contains changes that cause incompatibility. It must be fixed.</b></xsl:when>
       
  1395 			    <xsl:when test="status = 'MOK'"><b>This header contains changes that cannot be verified automatically; they must be investigated manually.</b></xsl:when>
       
  1396 			    <xsl:when test="status = 'OK'"><b>This header is known to be ok.</b></xsl:when>
       
  1397 			    <xsl:when test="status = 'IOK'"><b>This issue is known to be ok. But the header contains other unrelated changes.</b></xsl:when>
       
  1398 				<xsl:otherwise><b>This header contains changes that may cause incompatibility. It must be analysed by an expert.</b></xsl:otherwise>
       
  1399 			</xsl:choose>
       
  1400 
       
  1401 			<xsl:choose>
       
  1402 			    <xsl:when test="status = 'NOK' or status = 'MOK' or status = 'OK' or status = 'IOK'">
       
  1403 			      <HR/><xsl:value-of select="comment"/>
       
  1404 				</xsl:when>
       
  1405 			</xsl:choose>
       
  1406 			</TD></TR>
       
  1407 
       
  1408 			</table>
       
  1409 
       
  1410 				<table width="100%" cellpadding="0" cellspacing="0" bgColor="black" height="1"><tr><td/></tr></table>
       
  1411 				<table width = "100%" cellpadding="0" cellspacing="0" bgColor="#b0a8a0">
       
  1412 				<tr><td><table width = "100%" cellpadding="3" cellspacing="1"  id="issueTable">
       
  1413 				<tr bgcolor="#f0e8e0">
       
  1414 				<TH align="left" width = "350"><B>Problem description</B></TH>
       
  1415 				<TH align="left"><B>Cause</B></TH>
       
  1416 				<TH align="left" width = "150" id="BCSeverity">
       
  1417 					<xsl:if test="$issBCSC=2"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if>
       
  1418 					<B>BC Severity</B></TH>
       
  1419 				<xsl:if test="count(issue/scseverity) &gt; 0">	
       
  1420 				  <TH align="left" width = "150" id="SCSeverity">
       
  1421 				  	<xsl:if test="$issBCSC=1"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if>
       
  1422 				  	<B>SC Severity</B></TH>		
       
  1423 				</xsl:if>
       
  1424 				<TH align="center" width="100"><B>Date added</B></TH>
       
  1425 				<TH align="center" width="100"><B>Bugzilla id</B></TH>
       
  1426 				<TH align="center" width="100"><B>Status</B></TH>
       
  1427 				</tr>
       
  1428 
       
  1429 				<xsl:choose>
       
  1430 					<xsl:when test="$issBCSC='0'">
       
  1431 						<xsl:for-each select="issue">
       
  1432 							<xsl:call-template name="issHDRNotOK" />
       
  1433 						</xsl:for-each>
       
  1434 					</xsl:when>
       
  1435 					<xsl:when test="$issBCSC='1'">
       
  1436 						<xsl:for-each select="issue[severity/typestring=$issTyp]">
       
  1437 							<xsl:call-template name="issHDRNotOK">
       
  1438 								<xsl:with-param name="issBCSC" select="$issBCSC" />
       
  1439 							</xsl:call-template>
       
  1440 						</xsl:for-each>
       
  1441 					</xsl:when>
       
  1442 					<xsl:when test="$issBCSC='2'">
       
  1443 						<xsl:for-each select="issue[scseverity/typestring=$issTyp]">
       
  1444 							<xsl:call-template name="issHDRNotOK">
       
  1445 								<xsl:with-param name="issBCSC" select="$issBCSC" />
       
  1446 							</xsl:call-template>
       
  1447 						</xsl:for-each>
       
  1448 					</xsl:when>
       
  1449 				</xsl:choose>
       
  1450 				</table></td></tr></table>
       
  1451 			</TD></TR></table>
       
  1452 			<BR/>
       
  1453 			</div>
       
  1454 		</xsl:template>
       
  1455 
       
  1456 	<xsl:template name="issHDRNotOK" >
       
  1457 		<xsl:param name="issBCSC" select="'0'" />
       
  1458 				<xsl:variable name="bccellbgcolour">
       
  1459 				<xsl:choose>
       
  1460 				<xsl:when test="count(scseverity) &gt; 0">	
       
  1461 				  <xsl:choose>
       
  1462 					  <xsl:when test="severity/typeid = 1 or severity/typeid = 4"><xsl:text>#ffb880</xsl:text></xsl:when>			   
       
  1463 					  <xsl:when test="severity/typeid = 2 or severity/typeid = 5"><xsl:text>#ffffa0</xsl:text></xsl:when>			  
       
  1464 				    <xsl:otherwise><xsl:text>White</xsl:text></xsl:otherwise>
       
  1465 				  </xsl:choose>
       
  1466 				</xsl:when>			  
       
  1467 				<xsl:otherwise>
       
  1468 				  <xsl:choose>
       
  1469 				    <xsl:when test="severity/typeid = 0"><xsl:text>#ffb880</xsl:text></xsl:when>			   
       
  1470 				    <xsl:when test="severity/typeid = 1"><xsl:text>#ffffa0</xsl:text></xsl:when>			  
       
  1471 				    <xsl:otherwise><xsl:text>White</xsl:text></xsl:otherwise>
       
  1472 				  </xsl:choose>
       
  1473 				</xsl:otherwise> 
       
  1474 				</xsl:choose> 
       
  1475 				</xsl:variable>
       
  1476 				    
       
  1477 				<xsl:variable name="sccellbgcolour">		
       
  1478 				  <xsl:choose>
       
  1479 				    <xsl:when test="scseverity/typeid = 1"><xsl:text>#ffb880</xsl:text></xsl:when>
       
  1480 					  <xsl:when test="scseverity/typeid = 2"><xsl:text>#ffffa0</xsl:text></xsl:when>
       
  1481 					  <xsl:otherwise><xsl:text>White</xsl:text></xsl:otherwise>
       
  1482 				  </xsl:choose>				
       
  1483 				</xsl:variable>				
       
  1484          
       
  1485 		        <TR bgcolor= "White">
       
  1486 			    <xsl:variable name = "notSpecified">
       
  1487 					<xsl:text>Not specified</xsl:text>
       
  1488 				</xsl:variable>	
       
  1489 				<xsl:variable name = "valueFromDocument">					
       
  1490 					<xsl:value-of select="documentation" />					
       
  1491 				</xsl:variable>
       
  1492 				<xsl:variable name="global">
       
  1493 					<xsl:value-of select="identitydescription"/>
       
  1494 					<xsl:text> </xsl:text>
       
  1495 					<xsl:value-of select="typestring"/>										
       
  1496 				</xsl:variable>				
       
  1497 				<TD><xsl:value-of select="$global"/></TD>
       
  1498 			
       
  1499 				<xsl:choose>
       
  1500 					<xsl:when test = "typeid = 13 and identityid = 13">
       
  1501 					
       
  1502 						<xsl:variable name="compErrID">
       
  1503 							<xsl:text>err</xsl:text><xsl:value-of select="issueid" />							
       
  1504 						</xsl:variable>
       
  1505 					
       
  1506 						<TD>
       
  1507 							<div>
       
  1508 								<xsl:attribute name="id"><xsl:value-of select="$compErrID" /></xsl:attribute>
       
  1509 								<xsl:attribute name="class">tip</xsl:attribute>
       
  1510 								<xsl:value-of select="compilationerror"/>
       
  1511 							</div>
       
  1512 							
       
  1513 							<a>
       
  1514 								<xsl:attribute name="href">#</xsl:attribute>
       
  1515 								<xsl:attribute name="onmouseout">popUp(event,'<xsl:value-of select="$compErrID"/>')</xsl:attribute>
       
  1516 								<xsl:attribute name="onmouseover">popUp(event,'<xsl:value-of select="$compErrID"/>')</xsl:attribute>
       
  1517 								<xsl:attribute name="onclick">return false</xsl:attribute>
       
  1518 								<font color="#FF0000">Compilation Error</font>
       
  1519 							</a>
       
  1520 						</TD>
       
  1521 					</xsl:when>
       
  1522 					<xsl:when test = "contains($valueFromDocument, $notSpecified)">
       
  1523 						<TD><xsl:value-of select="cause"/></TD>
       
  1524 					</xsl:when>
       
  1525 					<xsl:otherwise>
       
  1526 						<TD> <A><xsl:attribute name="href"><xsl:value-of select="documentation" /></xsl:attribute><xsl:value-of select="cause"/></A></TD>
       
  1527 					</xsl:otherwise>
       
  1528 				</xsl:choose>
       
  1529             
       
  1530 	    		<TD bgcolor= "{$bccellbgcolour}">
       
  1531 	    			<xsl:if test="$issBCSC=2"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if>
       
  1532 	    			<xsl:value-of select="severity/typestring"/></TD>
       
  1533 	    		<xsl:if test="count(scseverity) &gt; 0">	
       
  1534 	    		<TD bgcolor= "{$sccellbgcolour}">
       
  1535 	    			<xsl:if test="$issBCSC=1"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if>
       
  1536 	    			<xsl:value-of select="scseverity/typestring"/></TD>
       
  1537 	    		</xsl:if>
       
  1538 				<TD align="center"><xsl:value-of select="date-added"/></TD>
       
  1539 				<TD align="center"><xsl:value-of select="bugzilla-id"/></TD>
       
  1540 				<TD align="center"><xsl:value-of select="bc-status"/></TD>
       
  1541 				</TR>
       
  1542 	</xsl:template>
       
  1543 
       
  1544 	<xsl:template name="LIBNotOK">
       
  1545 		<xsl:param name="issTyp" select="-1" />
       
  1546 		<xsl:param name="issBCSC" select="'0'" />
       
  1547 			<!--
       
  1548 			<xsl:if test="(count(issue[status='NOK'and typeid!=2 and typeid!=7 and typeid!=14]) &gt; 0 or count(issue[count(status) = 0 and typeid!=2 and typeid!=7 and typeid!=14]) &gt; 0) ">
       
  1549 			-->
       
  1550 			<!-- Added by maciejs (6 lines)-->
       
  1551 			<xsl:variable name="isHdrRef">
       
  1552 				<xsl:choose>
       
  1553 					<xsl:when test="count(issue/refheaderfile) &gt; 0">true</xsl:when>
       
  1554 					<xsl:otherwise>false</xsl:otherwise>
       
  1555 			    </xsl:choose>
       
  1556 			</xsl:variable>
       
  1557 			<div id="repBlock" name="repBlock">
       
  1558 			 <table border="0" cellpadding="2" cellspacing="0" width = "100%">
       
  1559 			<TR>
       
  1560 				<td>
       
  1561 			 <table border="0" cellpadding="2" cellspacing="0">
       
  1562 			<tr>
       
  1563 				<td colspan="3">
       
  1564 			  	<xsl:choose>
       
  1565 		  			<xsl:when test="$show_API = 1 and $paramSort = 0"><font size="4"><b>
       
  1566 		  				<xsl:if test="count(shortname) &gt; 0"><xsl:value-of select="shortname"/></xsl:if>
       
  1567 						  <xsl:if test="count(shortname) = 0"><xsl:value-of select="name"/></xsl:if>
       
  1568 		  			</b></font></xsl:when>
       
  1569 		  			<xsl:otherwise><font size="4">
       
  1570 		  				<xsl:if test="count(shortname) &gt; 0"><xsl:value-of select="shortname"/></xsl:if>
       
  1571 						  <xsl:if test="count(shortname) = 0"><xsl:value-of select="name"/></xsl:if>
       
  1572 		  			</font></xsl:otherwise>
       
  1573 			  	</xsl:choose>
       
  1574 			  </td>
       
  1575 			</tr>
       
  1576 		<xsl:if test="$show_API=1">
       
  1577 			<tr>
       
  1578 				<td>
       
  1579 			  	<xsl:choose>
       
  1580 		  			<xsl:when test="$paramSort = 1"><font size="4"><b><i><xsl:value-of select="api/@name"/></i></b></font></xsl:when>
       
  1581 		  			<xsl:otherwise><font size="3"><i><xsl:value-of select="api/@name"/></i></font></xsl:otherwise>
       
  1582 			  	</xsl:choose>
       
  1583 			  </td>
       
  1584 			  <td width="30" align="center"><font size="3"><b>:</b></font></td>
       
  1585 				<td>
       
  1586 			  	<xsl:choose>
       
  1587 		  			<xsl:when test="$paramSort = 2"><font size="4"><b><i><xsl:value-of select="api/@category"/></i></b></font></xsl:when>
       
  1588 		  			<xsl:otherwise><font size="3"><i><xsl:value-of select="api/@category"/></i></font></xsl:otherwise>
       
  1589 			  	</xsl:choose>
       
  1590 			  </td>
       
  1591 			 </tr>
       
  1592 		</xsl:if>
       
  1593 		</table>
       
  1594 				</td>
       
  1595 			  <TD align="right" valign="bottom">
       
  1596 						<A>
       
  1597 							<xsl:attribute name="href">
       
  1598 							  javascript:openPath( '<xsl:value-of select="translate(name, '\\', '/')"/>' );
       
  1599 							</xsl:attribute>
       
  1600 							<xsl:if test="name != ''">baseline</xsl:if>
       
  1601 						</A>		
       
  1602 			<xsl:if test="name = ''"><font color="#808080">baseline</font></xsl:if>
       
  1603 			<font size="3"> . </font>
       
  1604 		
       
  1605 						<A>
       
  1606 							<xsl:attribute name="href">
       
  1607 							  javascript:openPath( '<xsl:value-of select="translate(comparefilename, '\\', '/')"/>' );
       
  1608 							</xsl:attribute>
       
  1609 							<xsl:if test="comparefilename != ''">current</xsl:if>
       
  1610 						</A>
       
  1611 				
       
  1612 			<xsl:if test="comparefilename = ''"><font color="#808080">current</font></xsl:if>
       
  1613 			<font size="3"> . </font> 
       
  1614 			
       
  1615 			</TD></TR>
       
  1616      </table>
       
  1617      <table>
       
  1618 			  <xsl:choose>
       
  1619 			    <xsl:when test="count(baseplatform) &gt; 0 and count(currentplatform) &gt; 0 ">
       
  1620 			      <tr>
       
  1621 			      <td>
       
  1622 			      <xsl:choose>
       
  1623 					    <xsl:when test="baseplatform!=''"><font size="2">base platform: <xsl:value-of select="baseplatform"/></font></xsl:when>
       
  1624 					    <xsl:otherwise><font size="2">base platform: Unknown</font></xsl:otherwise>
       
  1625 					  </xsl:choose>
       
  1626 					  </td>
       
  1627 					  <xsl:if test="comparefilename != ''">
       
  1628 					  <td/><td/><td/><td/><td/>
       
  1629 					  <td>
       
  1630 					  <xsl:choose>
       
  1631 					    <xsl:when test="currentplatform!=''"><font size="2">current platform: <xsl:value-of select="currentplatform"/></font></xsl:when>
       
  1632 					    <xsl:otherwise><font size="2">current platform: Unknown</font></xsl:otherwise>
       
  1633 					  </xsl:choose>
       
  1634 					  </td>
       
  1635 					  </xsl:if>
       
  1636 					  </tr>
       
  1637 				 </xsl:when>
       
  1638 			 </xsl:choose>
       
  1639 			</table>
       
  1640 			 
       
  1641 			<table border="0" cellpadding="2" cellspacing="0" bgColor="black" width = "100%">
       
  1642 			<TR><TD><table border="0" cellspacing="0" cellpadding="3" width = "100%">
       
  1643 
       
  1644 			<TR>
       
  1645               <xsl:attribute name="bgColor">
       
  1646 			    <xsl:choose>
       
  1647 			      <xsl:when test="status = 'OK'">#a8d098</xsl:when>
       
  1648 			      <xsl:otherwise>#d0c8c0</xsl:otherwise>
       
  1649 			    </xsl:choose>
       
  1650 			  </xsl:attribute>
       
  1651 			<TD align="left">
       
  1652 			<xsl:choose>
       
  1653 			    <xsl:when test="count(issue[status='NOK']) &gt; 0"><b>This library contains changes that cause incompatibility. It must be fixed.</b></xsl:when>
       
  1654 				  <xsl:otherwise><b>This library contains changes that may cause incompatibility. It must be analysed by an expert.</b></xsl:otherwise>
       
  1655 			</xsl:choose>
       
  1656 			</TD></TR>
       
  1657 
       
  1658 			</table>
       
  1659 				<table width="100%" cellpadding="0" cellspacing="0" bgColor="black" height="1"><tr><td/></tr></table>
       
  1660 				<table width = "100%" cellpadding="0" cellspacing="0" bgColor="#b0a8a0">
       
  1661 				<tr><td><table width = "100%" cellpadding="3" cellspacing="1" id="issueTable">
       
  1662 				<tr bgcolor="#f0e8e0">
       
  1663 				<TH align="center" width="70"><B>Change</B></TH>
       
  1664 				<TH align="center" width="70"><B>Pos</B></TH>
       
  1665 				<TH align="left"><B>Details</B></TH>
       
  1666 				<!-- Added by maciejs (3 lines) -->
       
  1667 				<xsl:if test="$isHdrRef = 'true'">
       
  1668 					<TH align="left" width="200"><B>Header reference</B></TH>
       
  1669 				</xsl:if>
       
  1670 				<TH align="left" width="130" id="BCSeverity">
       
  1671 					<xsl:if test="$issBCSC=2"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if>
       
  1672 					<B>BC Severity</B></TH>
       
  1673 				<xsl:if test="count(issue/sc_severity) &gt; 0">
       
  1674 				<TH align="left" width="130" id="SCSeverity">
       
  1675 					<xsl:if test="$issBCSC=1"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if>
       
  1676 					<B>SC Severity</B></TH>
       
  1677 				</xsl:if>
       
  1678 				<TH align="center" width="100"><B>Date added</B></TH>
       
  1679 				<TH align="center" width="100"><B>Bugzilla id</B></TH>
       
  1680 				<TH align="center" width="100"><B>Status</B></TH>
       
  1681 				</tr>
       
  1682 
       
  1683 				<xsl:choose>
       
  1684 				<xsl:when test="$issBCSC='0'">
       
  1685 					<xsl:for-each select="issue[(count(status)=0 or status!='OK') and typeid!=2 and typeid!=7 and typeid!=14 ]">
       
  1686 						<xsl:call-template name="issLIBNotOK">
       
  1687 							<!-- Added by maciejs (2 lines) -->
       
  1688 							<xsl:with-param name="isHdrRef" select="$isHdrRef" />
       
  1689 						</xsl:call-template>
       
  1690 					</xsl:for-each>
       
  1691 				</xsl:when>
       
  1692 				<xsl:when test="$issBCSC='3'">
       
  1693 					<xsl:for-each select="issue[(count(status)=0 or status!='OK') and typeid!=2 and typeid!=7 and typeid!=14]">
       
  1694 						<xsl:call-template name="issLIBNotOK">
       
  1695 							<!-- Added by maciejs (2 lines) -->
       
  1696 							<xsl:with-param name="isHdrRef" select="$isHdrRef" />
       
  1697 						</xsl:call-template>
       
  1698 					</xsl:for-each>
       
  1699 				</xsl:when>
       
  1700 				<xsl:when test="$issBCSC='1'">
       
  1701 					<xsl:for-each select="issue[(count(status)=0 or status!='OK') and typeid!=2 and bc_severity=$issTyp]">
       
  1702 						<xsl:call-template name="issLIBNotOK">
       
  1703 							<xsl:with-param name="issBCSC" select="$issBCSC" />
       
  1704 							<!-- Added by maciejs (1 line) -->
       
  1705 							<xsl:with-param name="isHdrRef" select="$isHdrRef" />
       
  1706 						</xsl:call-template>
       
  1707 					</xsl:for-each>
       
  1708 				</xsl:when>
       
  1709 				<xsl:when test="$issBCSC='2'">
       
  1710 					<xsl:for-each select="issue[(count(status)=0 or status!='OK') and typeid!=2 and sc_severity=$issTyp]">
       
  1711 						<xsl:call-template name="issLIBNotOK">
       
  1712 							<xsl:with-param name="issBCSC" select="$issBCSC" />
       
  1713 							<!-- Added by maciejs (1 line) -->
       
  1714 							<xsl:with-param name="isHdrRef" select="$isHdrRef" />
       
  1715 						</xsl:call-template>
       
  1716 					</xsl:for-each>
       
  1717 				</xsl:when>
       
  1718 				</xsl:choose>
       
  1719 
       
  1720 				</table></td></tr></table>
       
  1721 			</TD></TR></table>
       
  1722 			<BR/>
       
  1723 			</div>
       
  1724 			<!--
       
  1725 			</xsl:if>
       
  1726 			-->
       
  1727 		</xsl:template>
       
  1728 
       
  1729 		<xsl:template name="issLIBNotOK">
       
  1730 			<xsl:param name="issBCSC" select="'0'" />
       
  1731 			<xsl:param name="isHdrRef" select="'false'" />
       
  1732 				
       
  1733 				<xsl:if test="(count(status) = 0) or status!='OK'">
       
  1734  				<xsl:variable name="bccellbgcolour">
       
  1735 				<xsl:choose>
       
  1736 				<xsl:when test="count(bc_severity) &gt; 0">	
       
  1737 				  <xsl:choose>
       
  1738 					  <xsl:when test="bc_severity = 'BBC Break'"><xsl:text>#ffb880</xsl:text></xsl:when>			   
       
  1739 					  <xsl:when test="bc_severity = 'Possible BBC Break' or bc_severity = 'Informative'"><xsl:text>#ffffa0</xsl:text></xsl:when>			  
       
  1740 				    <xsl:otherwise><xsl:text>White</xsl:text></xsl:otherwise>
       
  1741 				  </xsl:choose>
       
  1742 				</xsl:when>			   
       
  1743 				</xsl:choose> 
       
  1744 				</xsl:variable>
       
  1745 				    
       
  1746 				<xsl:variable name="sccellbgcolour">		
       
  1747 				  <xsl:choose>
       
  1748 				    <xsl:when test="sc_severity = 'SC Break'"><xsl:text>#ffb880</xsl:text></xsl:when>
       
  1749 					  <xsl:when test="sc_severity = 'Possible SC Break' or sc_severity = 'Informative'"><xsl:text>#ffffa0</xsl:text></xsl:when>
       
  1750 					  <xsl:otherwise><xsl:text>White</xsl:text></xsl:otherwise>
       
  1751 				  </xsl:choose>				
       
  1752 				</xsl:variable>	
       
  1753  				<xsl:variable name="sevdesc">
       
  1754 					<xsl:choose>
       
  1755 					  <xsl:when test="typeid=7">Informative</xsl:when>					  
       
  1756 					  <xsl:when test="status='NOK'">BBC Break</xsl:when>
       
  1757 				  	<xsl:when test="status='OK'">Informative</xsl:when>
       
  1758 				  	<xsl:otherwise>Possible BBC Break</xsl:otherwise>
       
  1759 					</xsl:choose>
       
  1760 				</xsl:variable>
       
  1761 				<xsl:variable name="sTxtColor">
       
  1762 					<xsl:choose>
       
  1763 						<xsl:when test="count(status) = 0 or normalize-space(status) = ''">#6611ff</xsl:when>
       
  1764 						<xsl:otherwise>Black</xsl:otherwise>
       
  1765 					</xsl:choose>
       
  1766 				</xsl:variable>
       
  1767 
       
  1768 		    <TR bgcolor= "White">
       
  1769 				  <xsl:choose>
       
  1770 				    <xsl:when test="typeid=1">
       
  1771 				      <TD align="center"><font color="{$sTxtColor}"><i>removed</i></font></TD>
       
  1772 				      <TD align="center" bgcolor="#f4f4f4"><font color="{$sTxtColor}"><i>-</i></font></TD>
       
  1773 				      <TD ><font color="{$sTxtColor}">Library is no longer available</font></TD>
       
  1774 				    </xsl:when>
       
  1775 				    <xsl:when test="typeid=3">
       
  1776 				      <TD align="center"><font color="{$sTxtColor}"><i>moved</i></font></TD>
       
  1777 				      <TD align="center" bgcolor="#f4f4f4"><font color="{$sTxtColor}"><b><xsl:value-of select="funcpos"/> <font size="2"> =&gt; </font> <xsl:value-of select="newfuncpos"/></b></font></TD>
       
  1778 				      <TD><font color="{$sTxtColor}"><xsl:value-of select="funcname"/></font></TD>
       
  1779 				    </xsl:when>
       
  1780 				    <xsl:when test="typeid=4">
       
  1781 				      <TD align="center"><font color="{$sTxtColor}"><i>deleted</i></font></TD>
       
  1782 				      <TD align="center" bgcolor="#f4f4f4"><font color="{$sTxtColor}"><b><xsl:value-of select="funcpos"/></b></font></TD>
       
  1783 				      <TD><font color="{$sTxtColor}"><xsl:value-of select="funcname"/></font></TD>
       
  1784 				    </xsl:when>
       
  1785 				    <xsl:when test="typeid=5">
       
  1786 				      <TD align="center"><font color="{$sTxtColor}"><i>inserted</i></font></TD>
       
  1787 				      <TD align="center" bgcolor="#f4f4f4"><font color="{$sTxtColor}"><b><xsl:value-of select="newfuncpos"/></b></font></TD>
       
  1788 				      <TD><font color="{$sTxtColor}"><xsl:value-of select="newfuncname"/></font></TD>
       
  1789 				    </xsl:when>
       
  1790 				    <xsl:when test="typeid=6">
       
  1791 				      <TD align="center"><font color="{$sTxtColor}"><i>modified</i></font></TD>
       
  1792 				      <TD align="center" bgcolor="#f4f4f4"><font color="{$sTxtColor}"><b><xsl:value-of select="funcpos"/></b></font></TD>
       
  1793 				      <TD><font color="{$sTxtColor}"><b><i>was </i></b><xsl:value-of select="funcname"/><br/>
       
  1794 				          <b><i>now </i></b><xsl:value-of select="newfuncname"/></font></TD>
       
  1795 				    </xsl:when>
       
  1796 				    <xsl:when test="typeid=7">
       
  1797 				      <TD align="center"><font color="{$sTxtColor}"><i>added</i></font></TD>
       
  1798 				      <TD align="center" bgcolor="#f8f8f8"><font color="{$sTxtColor}"><b><xsl:value-of select="newfuncpos"/></b></font></TD>
       
  1799 				      <TD><font color="{$sTxtColor}"><xsl:value-of select="newfuncname"/></font></TD>
       
  1800 				    </xsl:when>
       
  1801 				    <xsl:when test="typeid=8">
       
  1802 				      <TD align="center"><font color="{$sTxtColor}"><i>modified</i></font></TD>
       
  1803 				      <TD align="center" bgcolor="#f4f4f4"><font color="{$sTxtColor}"><i>-</i></font></TD>
       
  1804 				      <TD><font color="{$sTxtColor}"><xsl:value-of select="typeinfo"/></font></TD>
       
  1805 				    </xsl:when>
       
  1806 				    <xsl:when test="typeid=9">
       
  1807 				      <TD align="center"><font color="{$sTxtColor}"><i>modified</i></font></TD>
       
  1808 				      <TD align="center" bgcolor="#f4f4f4"><font color="{$sTxtColor}"><i>-</i></font></TD>
       
  1809 				      <TD><font color="{$sTxtColor}"><xsl:value-of select="typeinfo"/></font></TD>
       
  1810 				    </xsl:when>
       
  1811 				    <xsl:when test="typeid=10">
       
  1812 				      <TD align="center"><font color="{$sTxtColor}"><i>modified</i></font></TD>
       
  1813 				      <TD align="center" bgcolor="#f4f4f4"><font color="{$sTxtColor}"><i>-</i></font></TD>
       
  1814 				      <TD><font color="{$sTxtColor}"><xsl:value-of select="typeinfo"/></font></TD>
       
  1815 				    </xsl:when>
       
  1816 				    <xsl:when test="typeid=11">
       
  1817 				      <TD align="center"><font color="{$sTxtColor}"><i>modified</i></font></TD>
       
  1818 				      <TD align="center" bgcolor="#f4f4f4"><font color="{$sTxtColor}"><i>-</i></font></TD>
       
  1819 				      <TD><font color="{$sTxtColor}"><xsl:value-of select="typeinfo"/></font></TD>
       
  1820 				    </xsl:when>
       
  1821 				    <xsl:when test="typeid=12">
       
  1822 				      <TD align="center"><font color="{$sTxtColor}"><i>modified</i></font></TD>
       
  1823 				      <TD align="center" bgcolor="#f4f4f4"><font color="{$sTxtColor}"><i>-</i></font></TD>
       
  1824 				      <TD><font color="{$sTxtColor}"><xsl:value-of select="typeinfo"/></font></TD>
       
  1825 				    </xsl:when>
       
  1826 				    <xsl:when test="typeid=13">
       
  1827 				      <TD align="center"><font color="{$sTxtColor}"><i>removed</i></font></TD>
       
  1828 				      <TD align="center" bgcolor="#f4f4f4"><font color="{$sTxtColor}"><i>-</i></font></TD>
       
  1829 				      <TD><font color="{$sTxtColor}"><xsl:value-of select="typeinfo"/></font></TD>
       
  1830 				    </xsl:when>
       
  1831 				    <xsl:when test="typeid=14">
       
  1832 				      <TD align="center"><font color="{$sTxtColor}"><i>not available</i></font></TD>
       
  1833 				      <TD align="center" bgcolor="#f8f8f8"><font color="{$sTxtColor}"><i>-</i></font></TD>
       
  1834 				      <TD><font color="{$sTxtColor}"><xsl:value-of select="typeinfo"/></font></TD>
       
  1835 				    </xsl:when>
       
  1836 				   </xsl:choose>
       
  1837 				   <!-- Added by maciejs (3 lines) -->
       
  1838 				   <xsl:if test="$isHdrRef = 'true'">
       
  1839 					   <TD><xsl:value-of select="refheaderfile"/></TD>
       
  1840 				   </xsl:if>
       
  1841 				
       
  1842 				  <xsl:choose>
       
  1843 				    <xsl:when test="count(bc_severity) = 0">
       
  1844 				      <TD bgcolor="{$bccellbgcolour}"><xsl:value-of select="$sevdesc"/></TD>
       
  1845 				    </xsl:when>
       
  1846 				    <xsl:otherwise>
       
  1847 		          <TD bgcolor="{$bccellbgcolour}">
       
  1848 		          	<xsl:if test="$issBCSC=2"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if>
       
  1849 		          	<xsl:value-of select="bc_severity"/></TD>
       
  1850 		          <TD bgcolor="{$sccellbgcolour}">
       
  1851 		          	<xsl:if test="$issBCSC=1"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if>
       
  1852 		          	<xsl:value-of select="sc_severity"/></TD>
       
  1853 		        </xsl:otherwise>
       
  1854 		      </xsl:choose>
       
  1855 			      <TD align="center"><xsl:value-of select="date-added"/></TD>
       
  1856 				  <TD align="center"><xsl:value-of select="bugzilla-id"/></TD>
       
  1857 				  <TD align="center"><xsl:value-of select="bc-status"/></TD>
       
  1858 				</TR>
       
  1859 				</xsl:if>
       
  1860 		</xsl:template>
       
  1861 </xsl:stylesheet>