<div xmlns="http://www.w3.org/1999/xhtml" xmlns:b="http://www.backbase.com/b" xmlns:s="http://www.backbase.com/s" xmlns:doc="http://www.trimm.nl/doc" xmlns:nxp="http://www.nxp.com/nxp" style="display:none;"><s:loading><div style="display:none;" /></s:loading><div xmlns:trimm="http://www.trimm.nl/trimm" id="trimm-framework" ><s:event b:on="start" ><s:task b:action="msg" b:value="=== START FRAMEWORK ===" /><s:task b:action="trigger" b:event="init" b:target="id('trimm-ConfigurationController')" /><s:choose><s:when b:test="string-length($bpc_bookmark) lt 1"><s:task b:action="trigger" b:event="loadEventHandler" b:target="id('trimm-MainController')" /></s:when><s:otherwise><s:variable b:name="bookmark" b:select="$bpc_bookmark" b:scope="local" /><s:task b:action="trigger" b:event="resolveBookmark" b:target="id('trimm-BookmarkResolver')" b:test="string-length($bookmark) gt 0" /></s:otherwise></s:choose></s:event><div><s:htmlstructure b:name="trimm:EventHandlerLoader" b:behavior="trimm-EventHandlerLoader" ><div style="display:none;"><s:innercontent /></div></s:htmlstructure><s:behavior b:name="trimm-EventHandlerLoader" ><s:initatt id="trimm-EventHandlerLoader" /><s:event b:on="loadDefinition" b:action="load" b:test="not(id(concat($name,'-def')))" b:url="{@trimm:root,$name,'/',$name,'.xml'}" b:destination="." b:mode="aslastchild" b:showloading="false" /><s:event b:on="unloadDefinition" b:acion="remove" b:target="id(concat($name,'-def'))" /></s:behavior></div><trimm:EventHandlerLoader trimm:root="/eventhandlers/" /><div><s:htmlstructure b:name="trimm:ConfigurationController" b:behavior="trimm-ConfigurationController" ><div style="display:none;" /></s:htmlstructure><s:behavior b:name="trimm-ConfigurationController" ><s:initatt id="trimm-ConfigurationController" /><s:event b:on="init" ><s:variable b:name="_configuration" b:scope="global" /><s:variable b:name="configurationFile" b:select="./@trimm:configfile" /><s:task b:action="trigger" b:event="loadConfiguration" /></s:event><s:event b:on="loadConfiguration" ><s:task b:action="load" b:url="{$configurationFile}" b:destination="$_configuration" b:showloading="false" /><s:task b:action="string2xml" b:variable="$_configuration" /></s:event><s:event b:on="getConfiguration" b:action="assign" b:target="$configuration" b:select="xpath(concat('$_configuration/config/', $section))" /></s:behavior></div><trimm:ConfigurationController trimm:configfile="/config/config.xml" /><div><s:htmlstructure b:name="trimm:EventHandler" b:behavior="trimm-EventHandler" ><div style="display:none;" /></s:htmlstructure><s:behavior b:name="trimm-EventHandler" ><s:initatt id="trimm-EventHandler" /></s:behavior></div><trimm:EventHandler /><div><s:htmlstructure b:name="trimm:EventMonitor" b:behavior="trimm-EventMonitor" ><div /></s:htmlstructure><s:behavior b:name="trimm-EventMonitor" ><s:initatt id="trimm-EventMonitor" /><s:event b:on="construct" ><s:script>//<![CDATA[// // _udn="none" ; _ulink=1; _uacct = "UA-352656-6"; // ////]]></s:script></s:event><s:event b:on="LogClick" ><s:script>//<![CDATA[// // if(typeof logClick == 'function' && _vars['bookmarkResolve'][0] == false) { var logString = ""; var breadCrumb = new String(_vars['breadcrumbString'][0]); breadCrumb = breadCrumb.replace(/\.\.\.\//, ""); if (typeof _vars['event'] == 'object') { switch(_vars['event'][0]) { case 'applicationFamilySelected': case 'productFamilySelected': logString = breadCrumb; break case 'applicationSelected': case 'productSelected': logString = breadCrumb + "/pip/" + _vars['selectedName'][0]['nodeValue']; break case 'showProductFamilyPreview': case 'showProductPreview': case 'showApplicationFamilyPreview': case 'showApplicationPreview': logString = breadCrumb + "/pip/" + _vars['selectedName'][0] + "/preview"; break; case 'showProductFamilyDetails': case 'showProductDetails': case 'showApplicationFamilyDetails': case 'showApplicationDetails': logString = breadCrumb + "/pip/" + _vars['selectedName'][0] + "/detailed"; break; default: logString = "/nolabel/" + _vars['event'][0] + "/" + breadCrumb; } } if (typeof _vars['logClickEvent'] == 'object') { switch(_vars['logClickEvent'][0]) { case 'homepageLoaded': logString = "/homepage"; break; case 'newsItem-prev': logString = "/ua/newsItem-prev"; break; case 'newsItem-next': logString = "/ua/newsItem-next"; break; } } logClick(logString); } // ////]]></s:script></s:event></s:behavior></div><trimm:EventMonitor trimm:uacct="UA-352656-6" /><div><s:htmlstructure b:name="trimm:MainController" b:behavior="trimm-MainController" ><div style="display:none;" /></s:htmlstructure><s:behavior b:name="trimm-MainController" ><s:initatt id="trimm-MainController" /><s:event b:on="construct" ><s:variable b:name="bookmarkResolve" b:scope="global" /><s:variable b:name="bookmarkUpdate" b:scope="global" /><s:variable b:name="interfaceEffects" b:scope="global" /><s:variable b:name="currentBreadcrumbPath" b:scope="global" /><s:variable b:name="currentEventHandler" b:scope="tag" /><s:task b:action="assign" b:target="$currentEventHandler" b:select="id('trimm-EventHandler')" b:scope="tag" /><s:task b:action="assign" b:target="$bookmarkResolve" b:select="true()" b:scope="global" /><s:task b:action="assign" b:target="$bookmarkUpdate" b:select="false()" b:scope="global" /><s:task b:action="assign" b:target="$interfaceEffects" b:select="false()" b:scope="global" /></s:event><s:event b:on="handleEvent" ><s:lock b:target="/*"><s:task b:action="msg" b:value="{concat('MainController::handleEvent - event == ',$event)}" /><s:task b:action="trigger" b:event="{$event}" b:target="$currentEventHandler" /></s:lock><s:task b:action="trigger" b:event="LogClick" b:target="id('trimm-EventMonitor')" /></s:event><s:event b:on="loadEventHandler" ><s:lock b:target="/*"><s:variable b:name="name" /><s:variable b:name="bookmarkConfig" /><s:choose><s:when b:test="$currentEventHandler/@b:behavior = $eventHandler"><s:task b:action="msg" b:value="{concat('MainController::loadEventHandler - eventHandler == ',$eventHandler,' [NOT LOADING AS EVENTHANDLER ALREADY ACTIVE]')}" /></s:when><s:otherwise><s:task b:action="msg" b:value="{concat('MainController::loadEventHandler - eventHandler == ',$eventHandler)}" /><s:task b:action="trigger" b:event="unload" b:target="$currentEventHandler" /><s:task b:action="assign" b:target="$name" b:select="$eventHandler" /><s:task b:action="trigger" b:event="loadDefinition" b:target="id('trimm-EventHandlerLoader')" /><s:task b:action="set" b:target="$currentEventHandler/@b:behavior" b:value="{$eventHandler}" /><s:task b:action="trigger" b:event="loadBookmarkConfig" b:target="$currentEventHandler" /><s:task b:action="trigger" b:event="init" b:target="$currentEventHandler" /><s:if b:test="not(declared($bookmark))"><s:variable b:name="bookmark" /></s:if><s:choose><s:when b:test="string-length($bookmark) gt 0"><s:task b:action="assign" b:target="$bookmarkConfig" b:select="$currentEventHandler/$bookmarkConfig" /><s:task b:action="trigger" b:event="parseBookmark" b:target="id('trimm-BookmarkResolver')" /></s:when><s:otherwise><s:task b:action="assign" b:target="$bookmarkResolve" b:select="false()" b:scope="global" /><s:task b:action="assign" b:target="$bookmarkUpdate" b:select="true()" b:scope="global" /><s:task b:action="assign" b:target="$interfaceEffects" b:select="true()" b:scope="global" /></s:otherwise></s:choose></s:otherwise></s:choose><s:task b:action="trigger" b:event="{$event}" b:target="$currentEventHandler" b:test="declared($event)" /></s:lock></s:event><s:event b:on="getBookmarkSection" b:action="assign" b:target="$bookmarkSection" b:select="string(./$currentEventHandler/$bookmarkConfig//section[@cid=$id]/@params)" /><s:event b:on="createComponent" ><s:if b:test="not(id($id))"><s:script>//<![CDATA[// // var name = _vars['componentName']; var id = _vars['id']; var content = _vars['content']; var att = _vars['att']; var destination = _vars['destination'][0]; var mode = _vars['mode']; if (content) { var sXML = '<' + name + ' x' + 'mlns:nxp="http://www.nxp.com/nxp" ' + (id ? ' id="' + id + '"' : '') + (att ? ' ' + att + ' ' : '') + '>' + content + '</' + name + '>'; } else { var sXML = '<' + name + ' x' + 'mlns:nxp="http://www.nxp.com/nxp" ' + (id ? ' id="' + id + '"' : '') + ' />'; } bpc.setVariable('sXML', [sXML], 'local'); // ////]]></s:script><s:if b:test="not(declared($mode))"><s:variable b:name="mode" b:select="'aslastchild'" /></s:if><s:choose><s:when b:test="$mode = 'after'"><s:task b:action="move" b:source="$sXML" b:destination="$destination" b:mode="after" /></s:when><s:otherwise><s:task b:action="move" b:source="$sXML" b:destination="$destination" b:mode="aslastchild" /></s:otherwise></s:choose><s:lock b:target="/*"><s:task b:action="msg" b:value="{concat('MainController::createComponent - init == id(''',$id,''')')}" /><s:task b:action="trigger" b:event="init" b:target="id($id)" /></s:lock></s:if></s:event><s:event b:on="removeComponent" b:action="remove" b:target="$target" /><s:event b:on="showBreadcrumb" ><s:task b:action="trigger" b:event="showMe" b:target="id('nxp-BreadcrumbBar')" /><s:if b:test="declared($breadcrumbNodes)"><s:for-each b:target="$breadcrumbNodes/nodes/node | $breadcrumbNodes/node"><s:task b:action="trigger" b:event="_breadcrumbAddNode" /></s:for-each></s:if></s:event><s:event b:on="_breadcrumbAddNode" ><s:lock><s:variable b:name="nodeLevel" /><s:variable b:name="nodeCaption" /><s:variable b:name="nodeAction" /><s:variable b:name="nodeActionTarget" /><s:variable b:name="nodeActionArgs" /><s:variable b:name="nodeFinal" /><s:task b:action="assign" b:target="$nodeLevel" b:select="string($_target/@level)" /><s:task b:action="assign" b:target="$nodeCaption" b:select="string($_target/@caption)" /><s:task b:action="assign" b:target="$nodeAction" b:select="string($_target/@action)" /><s:task b:action="assign" b:target="$nodeActionTarget" b:select="string($_target/@actionTarget)" /><s:task b:action="assign" b:target="$nodeActionArgs" b:select="string($_target/@actionArgs)" /><s:choose><s:when b:test="$_target/@final"><s:task b:action="assign" b:target="$nodeFinal" b:select="string($_target/@final)" /></s:when><s:otherwise><s:task b:action="assign" b:target="$nodeFinal" b:select="'false'" /></s:otherwise></s:choose><s:task b:action="trigger" b:event="addNode" b:target="id('nxp-BreadcrumbBar')" /></s:lock></s:event><s:event b:on="resetBreadcrumb" b:action="trigger" b:event="reset" b:target="id('nxp-BreadcrumbBar')" /></s:behavior></div><trimm:MainController /></div><div xmlns:trimm="http://www.trimm.nl/trimm" xmlns:lang="http://www.trimm.nl/lang" ><s:htmlstructure b:name="trimm:Button" ><div class="trimm-Button" ><div class="trimm-Button-left" ><div class="trimm-Button-right" ><div class="trimm-Button-center" ><div class="trimm-Button-text" ><s:innercontent /></div></div></div></div></div></s:htmlstructure></div><div xmlns:lang="http://www.trimm.nl/lang" xmlns:trimm="http://www.trimm.nl/trimm" ><s:behavior b:name="trimm-ScrollTo" ><s:event b:on="construct" ><s:setstyle b:cursor="pointer" /><s:variable b:name="scrollTo" b:select="substring-after(@href, '#')" b:scope="tag" /><s:task b:action="remove" b:target="@href" /></s:event><s:event b:on="command" b:action="scrollto" b:target="id($scrollTo)" b:animate="true" /></s:behavior></div><div xmlns:trimm="http://www.trimm.nl/trimm" ><s:behavior b:name="nxp-Panel" ><s:initatt nxp:hidden="false" /><s:event b:on="construct" ><s:if b:test="$bpc_browser='moz'"><s:if b:test="not(@nxp:transparent)"><s:task b:action="addclass" b:value="nxp-PanelSolid" /></s:if></s:if></s:event><s:event b:on="showMe" ><s:if b:test="@nxp:hidden='true'"><s:task b:action="show" /><s:choose><s:when b:test="$interfaceEffects=true()"><s:fxstyle b:height="{concat(@nxp:origheight, 'px')}" b:mode="exp" b:time="1000" /></s:when><s:otherwise><s:setstyle b:height="{concat(@nxp:origheight, 'px')}" /></s:otherwise></s:choose><s:task b:action="removeclass" b:value="hidable" /><s:task b:action="set" b:value="false" b:target="@nxp:hidden" /></s:if></s:event><s:event b:on="hideMe" ><s:script b:test="not(@nxp:origheight)">//<![CDATA[// // var mySizes = bpc.getSize(_current, 'content'); bpc.setBXMLAttribute('nxp:origheight', [mySizes['h']], _current); // ////]]></s:script><s:if b:test="@nxp:hidden='false'"><s:task b:action="addclass" b:value="hidable" /><s:choose><s:when b:test="$interfaceEffects=true()"><s:fxstyle b:height="1px" b:mode="exp" b:time="1000" /></s:when><s:otherwise><s:setstyle b:height="1px" /></s:otherwise></s:choose><s:task b:action="hide" /><s:task b:action="set" b:value="true" b:target="@nxp:hidden" /></s:if></s:event></s:behavior><s:behavior b:name="nxp-PanelHeader" ><s:event b:on="construct" ><s:if b:test="@nxp:local"><s:script>//<![CDATA[// // var localText = _page.text[bpc.xpath('string(@nxp:local)', _current)]; bpc.setVariable('localText', [localText], 'local'); // ////]]></s:script><s:task b:action="settext" b:value="{$localText}" /></s:if></s:event></s:behavior><s:htmlstructure b:name="nxp:PanelHeader" b:behavior="nxp-PanelHeader" ><div class="nxp-PanelHeader" ><div class="nxp-PanelHeaderLeft" ><div class="nxp-PanelHeaderRight" ><div class="nxp-PanelHeaderCenter" ><span><s:innercontent /></span></div></div></div></div></s:htmlstructure><s:htmlstructure b:name="nxp:PanelBody" ><div class="nxp-PanelBody" ><div class="nxp-PanelBodyLeft" ><div class="nxp-PanelBodyRight" ><div class="nxp-PanelBodyCenter" ><s:innercontent /></div></div></div></div></s:htmlstructure><s:htmlstructure b:name="nxp:PanelFooter" ><div class="nxp-PanelBodyBottom" ><div class="nxp-PanelBottomLeft" ><div class="nxp-PanelBottomRight" ><div class="nxp-PanelBottomCenter" ><span /></div></div></div></div></s:htmlstructure><s:htmlstructure b:name="nxp:PanelList" ><dl class="nxp-PanelList" ><s:innercontent /></dl></s:htmlstructure><s:htmlstructure b:name="nxp:PanelListItem" ><dt><a shape="rect" ><s:attribute b:name="href" b:value="{@nxp:src}" /><s:innercontent /></a></dt></s:htmlstructure><s:htmlstructure b:name="nxp:Panel" b:behavior="nxp-Panel" ><div class="nxp-Panel" ><s:innercontent /></div></s:htmlstructure></div><div xmlns:lang="http://www.trimm.nl/lang" xmlns:trimm="http://www.trimm.nl/trimm" ><s:htmlstructure b:name="nxp:BreadcrumbBar" b:behavior="nxp-BreadcrumbBar" ><div class="nxp-BreadcrumbBar" /></s:htmlstructure><s:behavior b:name="nxp-BreadcrumbBar" ><s:initatt id="nxp-BreadcrumbBar" /><s:event b:on="construct" ><s:variable b:name="breadcrumbString" b:scope="global" /><s:variable b:name="currentBreadcrumbPath" b:scope="global" /><s:task b:action="hide" /></s:event><s:event b:on="init" ><s:task b:action="msg" b:value="BreadcrumbBar::init" /><s:task b:action="set" b:value="nxp-BreadcrumbBar" b:target="./@class" /><s:task b:action="addclass" b:value="{$visualType}" /><s:task b:action="show" /><s:task b:action="trigger" b:event="createSections" /></s:event><s:event b:on="reset" ><s:variable b:name="breadcrumbView" b:select="'home'" /><s:variable b:name="breadcrumbType" b:select="@nxp:type" /><s:task b:action="msg" b:value="{concat('BreadcrumbBar::reset - breadcrumbView == ',$breadcrumbView, ' - breadcrumbType == ',$breadcrumbType)}" /><s:task b:action="trigger" b:event="showMe" /></s:event><s:event b:on="createSections" ><s:variable b:name="initial" b:scope="tag" /><s:task b:action="msg" b:value="BreadcrumbBar::createSections" /><s:task b:action="move" b:source="$sections" b:destination="." b:mode="replacechildren" /><s:for-each b:target=".//nxp:BreadcrumbBarSection" ><s:task b:action="assign" b:target="$initial" b:select="true()" b:scope="tag" /><s:task b:action="trigger" b:event="addNode" /></s:for-each><s:task b:action="assign" b:target="$initial" b:select="false()" b:scope="tag" /></s:event><s:event b:on="addNode" ><s:variable b:name="visualClass" /><s:variable b:name="_node" /><s:if b:test="not(declared($nodeCaption))"><s:variable b:name="nodeCaption" b:select="string($_target/@nxp:caption)" /><s:variable b:name="nodeAction" b:select="string($_target/@nxp:action)" /><s:variable b:name="nodeActionTarget" b:select="string($_target/@nxp:actionTarget)" /><s:variable b:name="nodeActionArgs" b:select="string($_target/@nxp:actionArgs)" /><s:variable b:name="nodeFinal" b:select="'false'" /></s:if><s:script>//<![CDATA[// // if (_vars['nodeCaption']) { var nodeCaption = _vars['nodeCaption'][0]; nodeCaption = nodeCaption.replace('&', '&amp;'); nodeCaption = nodeCaption.replace('<', '&lt;'); nodeCaption = nodeCaption.replace('>', '&gt;'); bpc.setVariable('tmpNodeCaption', [nodeCaption], 'local'); } if (_vars['nodeActionArgs']) { var nodeActionArgs = _vars['nodeActionArgs'][0]; nodeActionArgs = nodeActionArgs.replace('&', '&amp;'); nodeActionArgs = nodeActionArgs.replace('<', '&lt;'); nodeActionArgs = nodeActionArgs.replace('>', '&gt;'); bpc.setVariable('tmpNodeActionArgs', [nodeActionArgs], 'local'); } // ////]]></s:script><s:task b:action="assign" b:target="$nodeCaption" b:select="$tmpNodeCaption" b:test="declared($tmpNodeCaption)" /><s:task b:action="assign" b:target="$nodeActionArgs" b:select="$tmpNodeActionArgs" b:test="declared($tmpNodeActionArgs)" /><s:task b:action="msg" b:value="{concat('BreadcrumbBar::addNode - caption == ', $nodeCaption, ' - action == ', $nodeAction, ' - actiontarget == ', $nodeActionTarget, ' - actionargs == ', $nodeActionArgs)}" /><s:if b:test="not(declared($_target))"><s:variable b:name="_target" b:select=".//nxp:BreadcrumbBarSection[1]" /></s:if><s:if b:test="not(declared($nodeFinal))"><s:variable b:name="nodeFinal" b:select="'false'" /></s:if><s:choose><s:when b:test="$_target/@nxp:type='button'"><s:task b:action="assign" b:target="$visualClass" b:select="'nxp-BreadcrumbBarButtonNode'" /></s:when><s:otherwise><s:task b:action="assign" b:target="$visualClass" b:select="'nxp-BreadcrumbBarNode'" /></s:otherwise></s:choose><s:task b:action="assign" b:target="$_node" b:select="concat('&lt;nxp:BreadcrumbBarNode xmlns:nxp=&quot;http://www.nxp.com/nxp&quot; ', 'class=&quot;', $visualClass, '&quot; ', 'nxp:action=&quot;', $nodeAction, '&quot; ', 'nxp:actionTarget=&quot;', $nodeActionTarget, '&quot; ', 'nxp:final=&quot;', $nodeFinal, '&quot; ', 'nxp:actionArgs=&quot;', $nodeActionArgs, '&quot;&gt;', $nodeCaption, '&lt;/nxp:BreadcrumbBarNode&gt;')" /><s:choose><s:when b:test="$initial=true()"><s:task b:action="move" b:source="$_node" b:destination="$_target" b:mode="aslastchild" /><s:if b:test="$_target/@nxp:type='bar'"><s:task b:action="assign" b:target="$_node" b:select="concat('&lt;nxp:BreadcrumbBarNode xmlns:nxp=&quot;http://www.nxp.com/nxp&quot; ', 'class=&quot;', $visualClass, '&quot; ', 'style=&quot;display: none; cursor: pointer;&quot; ', 'nxp:ignore=&quot;1&quot;&gt;', '...', '&lt;/nxp:BreadcrumbBarNode&gt;')" /><s:task b:action="move" b:source="$_node" b:destination="$_target" b:mode="aslastchild" /></s:if></s:when><s:otherwise><s:if b:test=".//nxp:BreadcrumbBarSection[1]/nxp:BreadcrumbBarNode[position() &gt; ($nodeLevel + 1)]"><s:task b:action="remove" b:target=".//nxp:BreadcrumbBarSection[1]/nxp:BreadcrumbBarNode[position() &gt; ($nodeLevel + 1)]" /></s:if><s:task b:action="move" b:source="$_node" b:destination=".//nxp:BreadcrumbBarSection[1]" b:mode="aslastchild" /></s:otherwise></s:choose><s:task b:action="trigger" b:event="refreshNodes" /></s:event><s:event b:on="refreshNodes" ><s:variable b:name="nodeCount" /><s:variable b:name="nodeHideAfter" /><s:variable b:name="nodeHideTriggerCount" /><s:script>//<![CDATA[// // var _nodes = bpc.xpath('.//nxp:BreadcrumbBarSection[1]/nxp:BreadcrumbBarNode', _current); var breadcrumbString = ''; for (var i = 0; i < _nodes.length; i++) { if (i != 1) { breadcrumbString = breadcrumbString + '/' + bpc.xpath('string(./text())', _nodes[i]); } } bpc.setVariable('breadcrumbString', [breadcrumbString], 'global'); // ////]]></s:script><s:with b:target=".//nxp:BreadcrumbBarSection[1]/nxp:BreadcrumbBarNode"><s:setstyle b:display="block" /></s:with><s:with b:target=".//nxp:BreadcrumbBarSection[1]/nxp:BreadcrumbBarNode[2]"><s:setstyle b:display="none" /></s:with><s:task b:action="assign" b:target="$nodeCount" b:select="count(.//nxp:BreadcrumbBarSection[1]/nxp:BreadcrumbBarNode)" /><s:choose><s:when b:test="@nxp:type = 'product'"><s:task b:action="assign" b:target="$nodeHideAfter" b:select="$nodeCount - 1" /><s:task b:action="assign" b:target="$nodeHideTriggerCount" b:select="'4'" /></s:when><s:when b:test="@nxp:type = 'application'"><s:task b:action="assign" b:target="$nodeHideAfter" b:select="$nodeCount - 1" /><s:task b:action="assign" b:target="$nodeHideTriggerCount" b:select="'4'" /></s:when><s:otherwise><s:task b:action="assign" b:target="$nodeHideAfter" b:select="$nodeCount - 2" /><s:task b:action="assign" b:target="$nodeHideTriggerCount" b:select="'5'" /></s:otherwise></s:choose><s:if b:test="$nodeCount &gt; $nodeHideTriggerCount"><s:with b:target=".//nxp:BreadcrumbBarSection[1]/nxp:BreadcrumbBarNode[position() &lt; $nodeHideAfter]"><s:setstyle b:display="none" /></s:with><s:with b:target=".//nxp:BreadcrumbBarSection[1]/nxp:BreadcrumbBarNode[position() &lt; 3]"><s:setstyle b:display="block" /></s:with></s:if><s:with b:target=".//nxp:BreadcrumbBarSection[1]/nxp:BreadcrumbBarNode"><s:setstyle b:font-weight="normal" /></s:with><s:with b:target=".//nxp:BreadcrumbBarSection[1]/nxp:BreadcrumbBarNode"><s:setstyle b:cursor="pointer" /></s:with><s:with b:target=".//nxp:BreadcrumbBarSection[1]/nxp:BreadcrumbBarNode[last()]"><s:setstyle b:font-weight="bold" /><s:setstyle b:cursor="default" /></s:with><s:task b:action="assign" b:target="$currentBreadcrumbPath" b:select="concat(string(@nxp:type), ',')" b:scope="global" /><s:variable b:name="tmpActionArgs" /><s:for-each b:target=".//nxp:BreadcrumbBarSection[1]/nxp:BreadcrumbBarNode[position() gt 2]" b:test=".//nxp:BreadcrumbBarSection[1]/nxp:BreadcrumbBarNode[position() gt 2]"><s:task b:action="trigger" b:event="_rebuildCurrentBreadcrumbPath" /></s:for-each></s:event><s:event b:on="_rebuildCurrentBreadcrumbPath" ><s:lock><s:if b:test="@nxp:type != 'other'"><s:task b:action="assign" b:target="$tmpActionArgs" b:select="string($_target/@nxp:actionArgs)" /><s:script>//<![CDATA[// // var id = _vars['tmpActionArgs'][0].split(',')[2].split('=')[1]; bpc.setVariable('nodeId', [id], 'local'); // ////]]></s:script><s:choose><s:when b:test="$_target/@nxp:final='false'"><s:task b:action="assign" b:target="$currentBreadcrumbPath" b:select="concat($currentBreadcrumbPath, '/', $nodeId)" b:scope="global" /></s:when><s:otherwise><s:task b:action="assign" b:target="$currentBreadcrumbPath" b:select="concat($currentBreadcrumbPath, ',', $nodeId)" b:scope="global" /></s:otherwise></s:choose></s:if></s:lock></s:event><s:event b:on="showMe" ><s:variable b:name="_sections" b:scope="tag" /><s:variable b:name="visualType" /><s:choose><s:when b:test="$breadcrumbView = 'home'"><s:task b:action="assign" b:target="$visualType" b:select="'nxp-BreadcrumbBarHome'" /></s:when><s:otherwise><s:task b:action="assign" b:target="$visualType" b:select="'nxp-BreadcrumbBarFull'" /></s:otherwise></s:choose><s:choose><s:when b:test="$breadcrumbType = 'product' and not(id('nxp-BreadcrumbBar')/@nxp:type='product')"><s:variable b:name="sections" ><div><nxp:BreadcrumbBarPopup /><nxp:BreadcrumbBarSection id="nxp-BreadcrumbBarSectionProducts" class="nxp-BreadcrumbBarSectionActive" nxp:type="bar" nxp:caption="Products" nxp:action="handleEvent" nxp:actionTarget="trimm-MainController" nxp:actionArgs="event=breadcrumbRestore,activePanel=home" /><nxp:BreadcrumbBarSection id="nxp-BreadcrumbBarSectionApplications" class="nxp-BreadcrumbBarSectionInactive" nxp:type="button" nxp:caption="Applications" nxp:action="handleEvent" nxp:actionTarget="trimm-MainController" nxp:actionArgs="event=breadcrumbRestore,activePanel=home" /><nxp:BreadcrumbBarSection id="nxp-BreadcrumbBarSectionOther" class="nxp-BreadcrumbBarSectionInactive" nxp:type="button" nxp:caption="Looking for" nxp:action="handleEvent" nxp:actionTarget="trimm-MainController" nxp:actionArgs="event=breadcrumbRestore,activePanel=keepcurrent" /></div></s:variable><s:task b:action="assign" b:target="$_sections" b:select="$sections" /><s:task b:action="set" b:value="product" b:target="id('nxp-BreadcrumbBar')/@nxp:type" /><s:task b:action="trigger" b:event="init" b:target="id('nxp-BreadcrumbBar')" /></s:when><s:when b:test="$breadcrumbType = 'application' and not(id('nxp-BreadcrumbBar')/@nxp:type='application')"><s:variable b:name="sections" ><div><nxp:BreadcrumbBarPopup /><nxp:BreadcrumbBarSection id="nxp-BreadcrumbBarSectionApplications" class="nxp-BreadcrumbBarSectionActive" nxp:type="bar" nxp:caption="Applications" nxp:action="handleEvent" nxp:actionTarget="trimm-MainController" nxp:actionArgs="event=breadcrumbRestore,activePanel=home" /><nxp:BreadcrumbBarSection id="nxp-BreadcrumbBarSectionProducts" class="nxp-BreadcrumbBarSectionInactive" nxp:type="button" nxp:caption="Products" nxp:action="handleEvent" nxp:actionTarget="trimm-MainController" nxp:actionArgs="event=breadcrumbRestore,activePanel=home" /><nxp:BreadcrumbBarSection id="nxp-BreadcrumbBarSectionOther" class="nxp-BreadcrumbBarSectionInactive" nxp:type="button" nxp:caption="Looking for" nxp:action="handleEvent" nxp:actionTarget="trimm-MainController" nxp:actionArgs="event=breadcrumbRestore,activePanel=keepcurrent" /></div></s:variable><s:task b:action="assign" b:target="$_sections" b:select="$sections" /><s:task b:action="trigger" b:event="init" b:target="id('nxp-BreadcrumbBar')" /><s:task b:action="set" b:value="application" b:target="id('nxp-BreadcrumbBar')/@nxp:type" /></s:when><s:when b:test="$breadcrumbType = 'other' and not(id('nxp-BreadcrumbBar')/@nxp:type='other')"><s:variable b:name="sections" ><div><nxp:BreadcrumbBarPopup /><nxp:BreadcrumbBarSection id="nxp-BreadcrumbBarSectionOther" class="nxp-BreadcrumbBarSectionActive" nxp:type="bar" nxp:caption="Home" nxp:action="redirect" nxp:actionTarget="nxp-BreadcrumbBar" nxp:actionArgs="url=/" /><nxp:BreadcrumbBarSection id="nxp-BreadcrumbBarSectionProducts" class="nxp-BreadcrumbBarSectionInactive" nxp:type="button" nxp:caption="Products" nxp:action="redirect" nxp:actionTarget="nxp-BreadcrumbBar" nxp:actionArgs="url=/" /><nxp:BreadcrumbBarSection id="nxp-BreadcrumbBarSectionApplications" class="nxp-BreadcrumbBarSectionInactive" nxp:type="button" nxp:caption="Applications" nxp:action="redirect" nxp:actionTarget="nxp-BreadcrumbBar" nxp:actionArgs="url=/" /></div></s:variable><s:task b:action="assign" b:target="$_sections" b:select="$sections" /><s:task b:action="trigger" b:event="init" b:target="id('nxp-BreadcrumbBar')" /><s:task b:action="set" b:value="other" b:target="id('nxp-BreadcrumbBar')/@nxp:type" /></s:when></s:choose><s:task b:action="show" /></s:event><s:event b:on="hideMe" b:action="hide" /><s:event b:on="redirect" ><s:script>//<![CDATA[// document.location = _vars['url'][0]; ////]]></s:script></s:event></s:behavior><s:htmlstructure b:name="nxp:BreadcrumbBarSection" ><div class="nxp-BreadcrumbBarSection" ><div class="nxp-BreadCrumbBarSectionLeft" ><div class="nxp-BreadCrumbBarSectionRight" ><div class="nxp-BreadCrumbBarSectionCenter" ><s:innercontent /></div></div></div></div></s:htmlstructure><s:htmlstructure b:name="nxp:BreadcrumbBarNode" b:behavior="nxp-BreadcrumbBarNode" ><div><s:innercontent /></div></s:htmlstructure><s:behavior b:name="nxp-BreadcrumbBarNode" ><s:event b:on="command" ><s:variable b:name="nodeAction" /><s:variable b:name="nodeActionTarget" /><s:variable b:name="nodeActionArgs" /><s:if b:test="not(declared($commandSource))"><s:variable b:name="commandSource" b:select="''" /></s:if><s:choose><s:when b:test="@popupnode = 'true'"><s:variable b:name="popupPosition" b:select="position() + 2" /><s:task b:action="trigger" b:event="command" b:target="ancestor::nxp:BreadcrumbBar/*/nxp:BreadcrumbBarSection[1]/nxp:BreadcrumbBarNode[position() = $popupPosition]" /></s:when><s:when b:test="(not(@nxp:ignore) and position() != last()) or position() = 1 or $commandSource = 'internal'"><s:task b:action="assign" b:target="$nodeAction" b:select="string(@nxp:action)" /><s:task b:action="assign" b:target="$nodeActionTarget" b:select="string(@nxp:actionTarget)" /><s:task b:action="assign" b:target="$nodeActionArgs" b:select="string(@nxp:actionArgs)" /><s:task b:action="msg" b:value="{concat('BreadcrumbBarNode::command - action == ', $nodeAction, ' - actiontarget == ', $nodeActionTarget, ' - actionargs == ', $nodeActionArgs)}" /><s:script>//<![CDATA[// var actionArgs = bpc.getBXMLAttribute('nxp:actionArgs', _current).split(','); for (iActionArgs = 0; iActionArgs < actionArgs.length; iActionArgs++) { var actionArg = actionArgs[iActionArgs].split('='); bpc.setVariable(actionArg[0], [actionArg[1]], 'local'); } ////]]></s:script><s:task b:action="remove" b:target="following-sibling::nxp:BreadcrumbBarNode[not(@nxp:ignore)]" /><s:task b:action="trigger" b:event="refreshNodes" b:target="ancestor::nxp:BreadcrumbBar" /><s:task b:action="trigger" b:event="{$nodeAction}" b:target="id($nodeActionTarget)" /></s:when><s:when b:test="@nxp:ignore"><s:task b:action="remove" b:target="ancestor::nxp:BreadcrumbBar/*/nxp:BreadcrumbBarPopup/*" /><s:for-each b:target="ancestor::nxp:BreadcrumbBarSection//nxp:BreadcrumbBarNode[position() &gt; 2 and position() &lt;= (last() - 2)]"><s:task b:action="copy" b:source="$_target" b:destination="ancestor::nxp:BreadcrumbBar/*/nxp:BreadcrumbBarPopup" b:mode="aslastchild" /></s:for-each><s:task b:action="show" b:target="ancestor::nxp:BreadcrumbBar/*/nxp:BreadcrumbBarPopup/nxp:BreadcrumbBarNode" /><s:task b:action="set" b:target="ancestor::nxp:BreadcrumbBar/*/nxp:BreadcrumbBarPopup/nxp:BreadcrumbBarNode/@popupnode" b:value="true" /><s:task b:action="trigger" b:event="showMe" b:target="ancestor::nxp:BreadcrumbBar/*/nxp:BreadcrumbBarPopup" /></s:when></s:choose>&gt; </s:event></s:behavior><s:htmlstructure b:name="nxp:BreadcrumbBarPopup" b:behavior="nxp-BreadcrumbBarPopup" ><div><s:innercontent /></div></s:htmlstructure><s:behavior b:name="nxp-BreadcrumbBarPopup" ><s:initatt id="nxp-BreadcrumbBarPopup" /><s:event b:on="showMe" ><s:task b:action="show" /><s:task b:action="position" b:type="place" b:position="at-pointer" /><s:task b:action="hide" /><s:fxstyle b:left="~-3px" b:top="~-3px" b:time="1" /><s:task b:action="show" /></s:event><s:event b:on="hideMe" b:action="hide" /><s:event b:on="command" b:action="trigger" b:event="hideMe" /><s:event b:on="mouseleave" b:action="trigger" b:event="hideMe" /></s:behavior></div><div xmlns:trimm="http://www.trimm.nl/trimm" xmlns:lang="http://www.trimm.nl/lang" ><script type="text/javascript" xml:space="preserve" >//<![CDATA[// function nxp_BookmarkBar_followScroll(id){ var delay=parseInt(bpc.getBXMLAttribute('nxp:delay',document.getElementById(id))); var statement="bpc.trigger('moveIt',document.getElementById('"+id+"'));"; setTimeout(statement,delay); } function nxp_BookmarkBar_addToFavorite(title,url){ if (_vars['bpc_browser']=='moz') { // Mozilla Firefox Bookmark window.sidebar.addPanel(document.title, url,""); } else if( window.external ) { // IE Favorite window.external.AddFavorite(url, document.title); } } function nxp_BookmarkBar_copyToClipboard(txt,alert_text) { if(window.clipboardData) { window.clipboardData.clearData(); window.clipboardData.setData("Text", txt); } else if(navigator.userAgent.indexOf("Opera") != -1) { window.location = txt; } else if (window.netscape) { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); } catch (e) { if(alert_text){ alert(alert_text); } return false; } var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard); if (!clip) return; var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable); if (!trans) return; trans.addDataFlavor('text/unicode'); var str = new Object(); var len = new Object(); var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString); var copytext = txt; str.data = copytext; trans.setTransferData("text/unicode",str,copytext.length*2); var clipid = Components.interfaces.nsIClipboard; if (!clip) return false; clip.setData(trans,null,clipid.kGlobalClipboard); } } function nxp_BookmarkBarSetCaretPosition(ctrl, pos) { var field=ctrl; if (field.createTextRange) { var range = field.createTextRange(); range.collapse(true); range.moveEnd('character', pos); range.moveStart('character', pos); range.select(); } else if (field.selectionEnd) { field.selectionEnd = pos; } } ////]]></script><s:htmlstructure b:name="nxp:BookmarkBar" b:behavior="nxp-BookmarkBar" ><div class="nxp-BookmarkBar" ><s:innercontent /></div></s:htmlstructure><s:behavior b:name="nxp-BookmarkBar" ><s:initatt nxp:delay="300" nxp:minTop="430" /><s:event b:on="command" ><s:with b:target="nxp:BookmarkPanel" ><s:choose><s:when b:test="@nxp:activated='true'"><s:task b:action="trigger" b:event="deactivate" /></s:when><s:otherwise><s:task b:action="trigger" b:event="activate" /></s:otherwise></s:choose></s:with></s:event><s:event b:on="construct" ><s:task b:action="trigger" b:event="moveIt" /><s:variable b:name="final" b:select="'&lt;img src=&quot;/bbimages/final.gif&quot; /&gt;'" /><s:task b:action="move" b:source="$final" b:target="." b:mode="aslastchild" /></s:event><s:event b:on="moveIt" ><s:lock><s:choose><s:when b:test="id('nxp-Body')/@class='nxp-BodyHome'"><s:fxstyle b:top="{concat(($bpc_scrollTop + 428),'px')}" b:motion="log" /><s:task b:action="set" b:target="@nxp:minTop" b:value="{@nxp:minTop}" /></s:when><s:otherwise><s:fxstyle b:top="{concat(($bpc_scrollTop + 164),'px')}" b:motion="log" /><s:task b:action="set" b:target="@nxp:minTop" b:value="{@nxp:minTop}" /></s:otherwise></s:choose></s:lock></s:event></s:behavior><s:htmlstructure b:name="nxp:BookmarkPanel" b:behavior="nxp-BookmarkPanel" ><div class="nxp-BookmarkPanel" ><div class="nxp-BookmarkPanel-title" >Bookmark</div><input readonly="readonly" class="nxp-BookmarkPanel-textfield" type="text" /><div class="nxp-BookmarkPanel-btns-container" ><s:innercontent /></div></div></s:htmlstructure><div id="nxp-BookmarkBar-copyLinkBtnAlert" style="display:none;">For future compatibility we advise to use the bookmark url for links in other websites, copy it by using Ctrl + C.</div><s:behavior b:name="nxp-BookmarkPanel" ><s:initatt nxp:activated="false" nxp:bookmarklink="" nxp:bookmarktitle="" nxp:translatorURL="/php/bookmark.php" /><s:event b:on="inactive" doc:access="private" b:action="trigger" b:event="deactivate" /><s:event b:on="activate" ><s:variable b:name="hashed_url" /><s:variable b:name="data" /><s:variable b:name="title" /><s:variable b:name="link" /><s:script>//<![CDATA[// // //We need the hashed URL so that the backend can transform it to the to be indexed url var hashed_url = 'hashed_url=' + document.location.href; //setVariable expects an array as the second parameter! bpc.setVariable('hashed_url', [hashed_url], 'local/tag/global'); logClick('/ua/bookmark_tab'); // ////]]></s:script><s:task b:action="load" b:url="{@nxp:translatorURL}" b:data="{$hashed_url}" b:method="post" b:destination="$data" b:showloading="false" /><s:script>//<![CDATA[// // //We need the hashed URL so that the backend can transform it to the to be indexed url var linkData = new String( bpc.getVariable('data') ); //Be sure to make it a string! (For string operations) var arrLinkAndTitle = new Array(); arrLinkAndTitle = linkData.split('||'); //setVariable expects an array as the second parameter! bpc.setVariable('link', [arrLinkAndTitle[0]], 'local/tag/global'); bpc.setVariable('title', [arrLinkAndTitle[1]], 'local/tag/global'); // ////]]></s:script><s:task b:action="set" b:target="html()/input[1]/@value" b:value="{$link}" /><s:task b:action="set" b:target="@nxp:bookmarklink" b:value="{$link}" /><s:task b:action="set" b:target="@nxp:bookmarktitle" b:value="{$title}" /><s:task b:action="addclass" b:target="ancestor::nxp:BookmarkBar" b:value="nxp-BookmarkBarActive" /><s:setstyle b:width="1px" /><s:task b:action="show" /><s:fxstyle b:width="187px" b:motion="exp" /><s:task b:action="set" b:target="@nxp:activated" b:value="true" /><s:task b:action="focus" /><s:task b:action="trigger" b:event="selectAllURL" /></s:event><s:event b:on="deactivate" ><s:setstyle b:width="187px" /><s:fxstyle b:width="1px" b:motion="linear" b:time="150" /><s:task b:action="hide" /><s:task b:action="set" b:target="@nxp:activated" b:value="false" /><s:task b:action="removeclass" b:target="ancestor::nxp:BookmarkBar" b:value="nxp-BookmarkBarActive" /></s:event><s:event b:on="getBookmark" ><s:variable b:name="bookmarklink" /><s:variable b:name="bookmarktitle" /><s:task b:action="assign" b:target="bookmarklink" b:select="@nxp:bookmarklink" /><s:task b:action="assign" b:target="bookmarktitle" b:select="@nxp:bookmarktitle" /><s:script>//<![CDATA[// // nxp_BookmarkBar_addToFavorite(_vars['bookmarktitle'][0],_vars['bookmarklink'][0]); // ////]]></s:script></s:event><s:event b:on="selectAllURL" ><s:script>//<![CDATA[// // var input=bpc.xpath("html()/input[1]",_current)[0]; //alert(input.value.length); //nxp_BookmarkBarSetCaretPosition(input,input.value.length); input.focus(); input.select(); logClick('/ua/bookmark_bookmark'); // ////]]></s:script></s:event><s:event b:on="copyLink" ><s:script>//<![CDATA[// // // var text=bpc.xpath("html()/input[1]",_current)[0].value; // var alert_text=bpc.xpath("string(html()/div[last()]/text())",_current)[0]; // nxp_BookmarkBar_copyToClipboard(text,alert_text); logClick('/ua/bookmark_copylink'); var alert_text=document.getElementById('nxp-BookmarkBar-copyLinkBtnAlert').innerHTML; alert(alert_text); // ////]]></s:script><s:task b:action="trigger" b:event="selectAllURL" /></s:event><s:event b:on="command" b:bubble="false" /></s:behavior></div><div xmlns:trimm="http://www.trimm.nl/trimm" ><s:htmlstructure b:name="nxp:NavigationPanel" b:behavior="nxp-NavigationPanel" ><div class="nxp-NavigationPanel" ><s:innercontent /></div></s:htmlstructure><s:htmlstructure b:name="nxp:NavBranch" b:behavior="nxp-NavBranch" ><div class="nxp-NavBranch-level-1" ><div class="nxp-NavBranch-title" ><div class="nxp-NavBranch-devider" ><span /></div><div class="nxp-NavBranch-title-img" ><div event-source="true" class="nxp-NavBranch-title-text" ><s:value-of b:select="{@nxp:label}" /></div></div></div><div class="nxp-NavBranch-subitem-container" ><s:innercontent /></div></div></s:htmlstructure><s:behavior b:name="nxp-NavBranch" ><s:event b:on="mouseenter" ><s:variable b:name="div" /><s:task b:action="assign" b:target="$div" b:select="html()/div[1]/div[2]/div[1]" b:scope="local" /><s:choose><s:when b:test="ends-with(@class,'nxp-NavBranch-level-1')"><s:task b:action="set" b:target="html()/div[1]/style::background" b:value="#C1DAF7 url(/bbimages/nxp-NavigationPanel/item_active.jpg) repeat-x 0 0" /></s:when><s:when b:test="ends-with(@class,'nxp-NavBranch-level-2')"><s:script>//<![CDATA[// // _vars['div'][0].style.textDecoration='underline'; // ////]]></s:script></s:when><s:when b:test="ends-with(@class,'nxp-NavBranch-level-3')"><s:script>//<![CDATA[// // _vars['div'][0].style.textDecoration='underline'; // ////]]></s:script></s:when></s:choose></s:event><s:event b:on="mouseleave" ><s:variable b:name="div" /><s:task b:action="assign" b:target="$div" b:select="html()/div[1]/div[2]/div[1]" b:scope="local" /><s:choose><s:when b:test="ends-with(@class,'nxp-NavBranch-level-1')"><s:task b:action="set" b:target="html()/div[1]/style::background" b:value="" /></s:when><s:when b:test="ends-with(@class,'nxp-NavBranch-level-2')"><s:script>//<![CDATA[// // _vars['div'][0].style.textDecoration='none'; // ////]]></s:script></s:when><s:when b:test="ends-with(@class,'nxp-NavBranch-level-3')"><s:script>//<![CDATA[// // _vars['div'][0].style.textDecoration='none'; // ////]]></s:script></s:when></s:choose></s:event><s:event b:on="command" b:bubble="false" ><s:script b:test="$_mouseElement/@event-source='true'">//<![CDATA[// // document.location=bpc.getBXMLAttribute('nxp:href',_current); // ////]]></s:script></s:event></s:behavior><s:htmlstructure b:name="nxp:NavLeaf" b:behavior="nxp-NavLeaf" ><div class="nxp-NavLeaf-level-1" ><div class="nxp-NavLeaf-title" ><div class="nxp-NavLeaf-devider" ><span /></div><div class="nxp-NavLeaf-title-img" ><div event-source="true" class="nxp-NavLeaf-title-text" ><s:value-of b:select="{@nxp:label}" /></div></div></div></div></s:htmlstructure><s:behavior b:name="nxp-NavLeaf" ><s:event b:on="mouseenter" ><s:variable b:name="div" /><s:task b:action="assign" b:target="$div" b:select="html()/div[1]/div[2]/div[1]" b:scope="local" /><s:choose><s:when b:test="ends-with(@class,'nxp-NavLeaf-level-1')"><s:task b:action="set" b:target="html()/div[1]/style::background" b:value="#C1DAF7 url(/bbimages/nxp-NavigationPanel/item_active.jpg) repeat-x 0 0" /></s:when><s:when b:test="ends-with(@class,'nxp-NavLeaf-level-2')"><s:script>//<![CDATA[// // _vars['div'][0].style.textDecoration='underline'; // ////]]></s:script></s:when><s:when b:test="ends-with(@class,'nxp-NavLeaf-level-3')"><s:script>//<![CDATA[// // _vars['div'][0].style.textDecoration='underline'; // ////]]></s:script></s:when></s:choose></s:event><s:event b:on="mouseleave" ><s:variable b:name="div" /><s:task b:action="assign" b:target="$div" b:select="html()/div[1]/div[2]/div[1]" b:scope="local" /><s:choose><s:when b:test="ends-with(@class,'nxp-NavLeaf-level-1')"><s:task b:action="set" b:target="html()/div[1]/style::background" b:value="" /></s:when><s:when b:test="ends-with(@class,'nxp-NavLeaf-level-2')"><s:script>//<![CDATA[// // _vars['div'][0].style.textDecoration='none'; // ////]]></s:script></s:when><s:when b:test="ends-with(@class,'nxp-NavLeaf-level-3')"><s:script>//<![CDATA[// // _vars['div'][0].style.textDecoration='none'; // ////]]></s:script></s:when></s:choose></s:event><s:event b:on="command" b:bubble="false" ><s:script b:test="$_mouseElement/@event-source='true'">//<![CDATA[// // document.location=bpc.getBXMLAttribute('nxp:href',_current); // ////]]></s:script></s:event></s:behavior><s:behavior b:name="nxp-NavigationPanel" ><s:event b:on="construct" doc:access="private" b:action="trigger" b:event="init" /><s:initatt id="nxp-NavigationPanel" /><s:event b:on="init" ><s:variable b:name="sel-id" /><s:variable b:name="branch-xml" /><s:variable b:name="selected" /><s:variable b:name="level-1-ancestor" /><s:variable b:name="level-2-ancestor" /><s:variable b:name="sXML" /><s:if b:test="string-length(@nxp:selected) gt 0"><s:task b:action="assign" b:target="$sel-id" b:select="@nxp:selected" /><s:task b:action="load" b:url="{concat('/data/local/bxml/navigation/',@nxp:nav-branch,'.bxml')}" b:destination="$branch-xml" /><s:task b:action="string2xml" b:variable="$branch-xml" /><s:task b:action="assign" b:target="$selected" b:select="$branch-xml//*[@nxp:id=$sel-id][1]" /><s:task b:action="assign" b:target="$displayedItems" b:select="$selected/ancestor-or-self::*" /><s:choose><s:when b:test="$selected/name()='nxp:NavBranch'"><s:choose><s:when b:test="$selected/parent::*/parent::*"><s:task b:action="assign" b:target="level-1-ancestor" b:select="$selected/.." /><s:task b:action="set" b:target="$level-1-ancestor/preceding-sibling::nxp:NavBranch/@class | $level-1-ancestor/following-sibling::nxp:NavBranch/@class" b:value="nxp-NavBranch-level-1" /><s:task b:action="set" b:target="$level-1-ancestor/preceding-sibling::nxp:NavLeaf/@class | $level-1-ancestor/following-sibling::nxp:NavLeaf/@class" b:value="nxp-NavLeaf-level-1" /><s:task b:action="set" b:target="$level-1-ancestor/@class" b:value="nxp-NavBranch-level-1-sel" /><s:task b:action="remove" b:target="$level-1-ancestor/preceding-sibling::nxp:NavBranch/* | $level-1-ancestor/following-sibling::nxp:NavBranch/*" /><s:task b:action="set" b:target="$level-1-ancestor/nxp:NavBranch/@class" b:value="nxp-NavBranch-level-2" /><s:task b:action="set" b:target="$level-1-ancestor/nxp:NavLeaf/@class" b:value="nxp-NavLeaf-level-2" /><s:task b:action="set" b:target="$selected/@class" b:value="nxp-NavBranch-level-2-sel" /><s:task b:action="set" b:target="$level-1-ancestor/*[1]/@class" b:value="{concat('first ',$level-1-ancestor/*[1]/@class)}" /><s:task b:action="remove" b:target="$selected/preceding-sibling::nxp:NavBranch/* | $selected/following-sibling::nxp:NavBranch/*" /><s:task b:action="set" b:target="$selected/nxp:NavBranch/@class" b:value="nxp-NavBranch-level-3" /><s:task b:action="set" b:target="$selected/nxp:NavLeaf/@class" b:value="nxp-NavLeaf-level-3" /><s:task b:action="remove" b:target="$selected/nxp:NavBranch/*" /><s:task b:action="remove" b:target="./*" /><s:for-each b:target="$level-1-ancestor/preceding-sibling::* | $level-1-ancestor | $level-1-ancestor/following-sibling::*"><s:task b:action="xml2string" b:source="$_target" b:variable="$sXML" /><s:task b:action="move" b:source="$sXML" b:destination="." b:mode="aslastchild" /></s:for-each></s:when><s:when b:test="$selected/parent::*"><s:task b:action="assign" b:target="$level-1-ancestor" b:select="$selected/.." /><s:task b:action="set" b:target="$level-1-ancestor/@class" b:value="nxp-NavBranch-level-1-sel" /><s:task b:action="set" b:target="$level-1-ancestor/nxp:NavBranch/@class" b:value="nxp-NavBranch-level-2" /><s:task b:action="set" b:target="$level-1-ancestor/nxp:NavLeaf/@class" b:value="nxp-NavLeaf-level-2" /><s:task b:action="set" b:target="$selected/@class" b:value="nxp-NavBranch-level-2-sel" /><s:task b:action="set" b:target="$level-1-ancestor/*[1]/@class" b:value="{concat('first ',$level-1-ancestor/*[1]/@class)}" /><s:task b:action="remove" b:target="$level-1-ancestor/nxp:NavBranch[not(@nxp:id=$selected/@nxp:id)]/*" /><s:task b:action="set" b:target="$selected/nxp:NavBranch/@class" b:value="nxp-NavBranch-level-3" /><s:task b:action="set" b:target="$selected/nxp:NavLeaf/@class" b:value="nxp-NavLeaf-level-3" /><s:task b:action="remove" b:target="$level-1-ancestor/nxp:NavBranch/nxp:NavBranch/*" /><s:task b:action="xml2string" b:variable="$level-1-ancestor" /><s:task b:action="move" b:source="$level-1-ancestor" b:destination="./nxp:NavBranch[@nxp:id=current()/@nxp:nav-branch]" b:mode="replace" /></s:when><s:otherwise><s:task b:action="set" b:target="$selected/@class" b:value="nxp-NavBranch-level-1-sel" /><s:task b:action="set" b:target="$selected/nxp:NavBranch/@class" b:value="nxp-NavBranch-level-2" /><s:task b:action="set" b:target="$selected/nxp:NavLeaf/@class" b:value="nxp-NavLeaf-level-2" /><s:task b:action="set" b:target="$selected/*[1]/@class" b:value="{concat('first ',$selected/*[1]/@class)}" /><s:task b:action="remove" b:target="$selected/nxp:NavBranch/*" /><s:task b:action="remove" b:target="$selected/nxp:NavBranch/*" /><s:task b:action="xml2string" b:variable="$selected" /><s:task b:action="move" b:source="$selected" b:destination="./nxp:NavBranch[@nxp:id=$sel-id]" b:mode="replace" /></s:otherwise></s:choose></s:when><s:otherwise><s:choose><s:when b:test="$selected/parent::*/parent::*/parent::*"><s:task b:action="assign" b:target="$level-1-ancestor" b:select="$selected/../.." /><s:task b:action="assign" b:target="$level-2-ancestor" b:select="$selected/.." /><s:task b:action="set" b:target="$level-1-ancestor/preceding-sibling::nxp:NavBranch/@class | $level-1-ancestor/following-sibling::nxp:NavBranch/@class" b:value="nxp-NavBranch-level-1" /><s:task b:action="set" b:target="$level-1-ancestor/preceding-sibling::nxp:NavLeaf/@class | $level-1-ancestor/following-sibling::nxp:NavLeaf/@class" b:value="nxp-NavLeaf-level-1" /><s:task b:action="set" b:target="$level-1-ancestor/@class" b:value="nxp-NavBranch-level-1-sel" /><s:task b:action="remove" b:target="$level-1-ancestor/preceding-sibling::nxp:NavBranch/* | $level-1-ancestor/following-sibling::nxp:NavBranch/*" /><s:task b:action="set" b:target="$level-2-ancestor/preceding-sibling::nxp:NavBranch/@class | $level-2-ancestor/following-sibling::nxp:NavBranch/@class" b:value="nxp-NavBranch-level-2" /><s:task b:action="set" b:target="$level-2-ancestor/preceding-sibling::nxp:NavLeaf/@class | $level-2-ancestor/following-sibling::nxp:NavLeaf/@class" b:value="nxp-NavLeaf-level-2" /><s:task b:action="set" b:target="$level-2-ancestor/@class" b:value="nxp-NavBranch-level-2-sel" /><s:task b:action="set" b:target="$level-1-ancestor/*[1]/@class" b:value="{concat('first ',$level-1-ancestor/*[1]/@class)}" /><s:task b:action="remove" b:target="$level-2-ancestor/preceding-sibling::nxp:NavBranch/* | $level-2-ancestor/following-sibling::nxp:NavBranch/*" /><s:task b:action="set" b:target="$selected/preceding-sibling::nxp:NavBranch/@class | $selected/following-sibling::nxp:NavBranch/@class" b:value="nxp-NavBranch-level-3" /><s:task b:action="set" b:target="$selected/preceding-sibling::nxp:NavLeaf/@class | $selected/following-sibling::nxp:NavLeaf/@class" b:value="nxp-NavLeaf-level-3" /><s:task b:action="set" b:target="$selected/@class" b:value="nxp-NavLeaf-level-3-sel" /><s:task b:action="remove" b:target="$selected/preceding-sibling::nxp:NavBranch/* | $selected/following-sibling::nxp:NavBranch/*" /><s:task b:action="remove" b:target="./*" /><s:for-each b:target="$level-1-ancestor/preceding-sibling::* | $level-1-ancestor | $level-1-ancestor/following-sibling::*"><s:task b:action="xml2string" b:variable="$sXML" b:source="$_target" /><s:task b:action="move" b:source="$sXML" b:destination="." b:mode="aslastchild" /></s:for-each></s:when><s:when b:test="$selected/parent::*/parent::*"><s:task b:action="assign" b:target="$level-1-ancestor" b:select="$selected/../.." /><s:task b:action="assign" b:target="$level-2-ancestor" b:select="$selected/.." /><s:task b:action="set" b:target="$level-1-ancestor/@class" b:value="nxp-NavBranch-level-1-sel" /><s:task b:action="set" b:target="$level-1-ancestor/nxp:NavBranch/@class" b:value="nxp-NavBranch-level-2" /><s:task b:action="set" b:target="$level-1-ancestor/nxp:NavLeaf/@class" b:value="nxp-NavLeaf-level-2" /><s:task b:action="set" b:target="$level-2-ancestor/@class" b:value="nxp-NavBranch-level-2-sel" /><s:task b:action="set" b:target="$level-1-ancestor/*[1]/@class" b:value="{concat('first ',$level-1-ancestor/*[1]/@class)}" /><s:task b:action="remove" b:target="$level-2-ancestor/preceding-sibling::nxp:NavBranch/* | $level-2-ancestor/following-sibling::nxp:NavBranch/*" /><s:task b:action="set" b:target="$selected/preceding-sibling::nxp:NavBranch/@class | $selected/following-sibling::nxp:NavBranch/@class" b:value="nxp-NavBranch-level-3" /><s:task b:action="set" b:target="$selected/preceding-sibling::nxp:NavLeaf/@class | $selected/following-sibling::nxp:NavLeaf/@class" b:value="nxp-NavLeaf-level-3" /><s:task b:action="set" b:target="$selected/@class" b:value="nxp-NavLeaf-level-3-sel" /><s:task b:action="remove" b:target="$selected/preceding-sibling::nxp:NavBranch/* | $selected/following-sibling::nxp:NavBranch/*" /><s:task b:action="xml2string" b:variable="$level-1-ancestor" /><s:task b:action="move" b:source="$level-1-ancestor" b:destination="./nxp:NavBranch[@nxp:id=current()/@nxp:nav-branch]" b:mode="replace" /></s:when><s:when b:test="$selected/parent::*"><s:task b:action="assign" b:target="$level-1-ancestor" b:select="$selected/.." /><s:task b:action="set" b:target="$level-1-ancestor/@class" b:value="nxp-NavBranch-level-1-sel" /><s:task b:action="set" b:target="$level-1-ancestor/nxp:NavBranch/@class" b:value="nxp-NavBranch-level-2" /><s:task b:action="set" b:target="$level-1-ancestor/nxp:NavLeaf/@class" b:value="nxp-NavLeaf-level-2" /><s:task b:action="set" b:target="$selected/@class" b:value="nxp-NavLeaf-level-2-sel" /><s:task b:action="remove" b:target="$level-1-ancestor/nxp:NavBranch/*" /><s:task b:action="set" b:target="$level-1-ancestor/*[1]/@class" b:value="{concat('first ',$level-1-ancestor/*[1]/@class)}" /><s:task b:action="xml2string" b:variable="$level-1-ancestor" /><s:task b:action="move" b:source="$level-1-ancestor" b:destination="./nxp:NavBranch[@nxp:id=current()/@nxp:nav-branch]" b:mode="replace" /></s:when><s:otherwise><s:task b:action="set" b:target="./nxp:NavLeaf[@nxp:id=$selected/@nxp:id]/@class" b:value="nxp-NavLeaf-level-1-sel" /></s:otherwise></s:choose></s:otherwise></s:choose></s:if></s:event><s:event b:on="informMainController" ><s:variable b:name="paths" /><s:variable b:name="event" /><s:variable b:name="sourceElement" /><s:task b:action="assign" b:target="$paths" b:select="nxp:NavPath" /><s:task b:action="assign" b:target="$event" b:select="'navigationPanelInitialized'" /><s:task b:action="assign" b:target="$sourceElement" b:select="." /><s:task b:action="trigger" b:event="handleEvent" b:target="id('trimm-MainController')" /></s:event></s:behavior><s:htmlstructure b:name="nxp:NavPath" ><div style="display:none;"><s:innercontent /></div></s:htmlstructure></div></div>


Select site:

English
<div id="nxp-Breadcrumb" class="nxp-BreadcrumbBarFull"> <nxp:BreadcrumbBar /> <s:execute> <s:variable b:name="breadcrumbView" b:select="'full'" /> <s:variable b:name="breadcrumbType" b:select="'other'" /> <s:task b:action="trigger" b:event="showBreadcrumb" b:target="id('trimm-MainController')" /> <s:variable b:name="eventHandler" b:select="'nxp-MPIEventHandler'" /> <s:task b:action="trigger" b:event="start" b:target="id('trimm-framework')" /> </s:execute> </div>
I2C specifications

<nxp:NavigationPanel xmlns:nxp="http://www.nxp.com/nxp" xmlns="http://www.w3.org/1999/xhtml" nxp:nav-branch="1822" nxp:selected="1822"><nxp:NavPath nxp:href="/news/index.html" nxp:label="News"/> <nxp:NavPath nxp:href="/news/backgrounders/index.html" nxp:label="Backgrounders"/> <nxp:NavBranch xmlns:nxp="http://www.nxp.com/nxp" xmlns="http://www.w3.org/1999/xhtml" nxp:href="/news/pressreleases/index.html" nxp:label="Press releases" nxp:id="2529"/><nxp:NavLeaf xmlns:nxp="http://www.nxp.com/nxp" xmlns="http://www.w3.org/1999/xhtml" nxp:href="/news/speeches/index.html" nxp:label="Speeches &amp; presentations" nxp:id="4530"/><nxp:NavLeaf xmlns:nxp="http://www.nxp.com/nxp" xmlns="http://www.w3.org/1999/xhtml" nxp:href="/news/backgrounders/index.html" nxp:label="Backgrounders" nxp:id="1822"/><nxp:NavLeaf xmlns:nxp="http://www.nxp.com/nxp" xmlns="http://www.w3.org/1999/xhtml" nxp:href="/news/events/index.html" nxp:label="Shows &amp; Events" nxp:id="1287"/><nxp:NavBranch xmlns:nxp="http://www.nxp.com/nxp" xmlns="http://www.w3.org/1999/xhtml" nxp:href="/news/successes/index.html" nxp:label="Vibrant Successes" nxp:id="4853"/><nxp:NavLeaf xmlns:nxp="http://www.nxp.com/nxp" xmlns="http://www.w3.org/1999/xhtml" nxp:href="/news/receive/index.html" nxp:label="Receive news updates" nxp:id="3945"/><nxp:NavLeaf xmlns:nxp="http://www.nxp.com/nxp" xmlns="http://www.w3.org/1999/xhtml" nxp:href="/news/search/index.html" nxp:label="Search press releases" nxp:id="2117"/><nxp:NavLeaf xmlns:nxp="http://www.nxp.com/nxp" xmlns="http://www.w3.org/1999/xhtml" nxp:href="/news/contacts/index.html" nxp:label="Press contacts" nxp:id="1363"/> </nxp:NavigationPanel>
Backgrounders
<span id="myAltBlock"></span>


There is a strong drive worldwide to reduce supply voltages below 5 V for new IC devices. Already, 3.3 V is used widely and even lower voltages will be employed in the future. However, 5 V devices are still very common today and will continue to be used for some time yet, because of the sheer number and variety of 5 V devices available, as well as the increasing need to incorporate 'higher voltage' analog and power I/O into systems. This need to mix supply voltages can complicate the design of new systems significantly.


When mixing devices with different supply voltages within one design, a standard solution is to use level-shifters. However, in the case of the I²C-bus standard level-shifters cannot be used, because signals are bi-directional and there is no 'direction' indication signal on the bus. But in designing a level-shifting solution for the I²C-bus, Philips wanted to preserve the elegance and simplicity that made the I²C-bus the de-facto standard it is today.


The bi-directional level-shifter consists of an N-channel enhancement MOSFET which interconnects two sections of an I²C-bus system, each section with a different supply voltage and different logic levels. Referring to figure 1, three states have to be considered:


  1. No device is pulling down the bus line; the bus line of the 'lower voltage' section is pulled up by its pull-up resistors to 3.3 V and the bus line of the 'higher voltage' section is pulled up to 5 V. The MOSFET is not conducting.
  2. A 3.3 V device pulls down the bus line to a LOW level; the MOSFET becomes conducting and the bus line of the 'higher voltage' section is also pulled down.
  3. A 5 V device pulls down the bus line to a LOW level; in first instance the diode and then the MOSFET become conducting and the bus line of the 'lower voltage' section is also pulled down.

In each case, a simple analysis of the circuit shows that the logic levels are transferred in both directions of the bus system, independent of the driving section.


Figure 1. Bi-directional level-shifter circuit connects two different voltage sections of an I²C-bus system.


Depending on the MOSFET parameters, the level-shifter can cover a wide range of supply voltages - from as low as 2 V and higher than 5 V if desired. The values of pull-up resistors (and possible series resistors between I/O pins and bus lines) depend on worst case values of the supply voltages and logic levels, the length and load of the bus lines, and rise and fall time requirements. These have to be calculated for each bus system separately. Their values must be chosen in such a way that there is sufficient noise margin at both HIGH and LOW levels.


This approach not only provides a level-shifting function for the I²C-bus for all voltage and logic levels, it also provides two additional functions. First, the 'lower voltage' section can be powered-down, effectively removing it from the bus system and allowing the powered 'higher voltage' section to operate normally. Second, it provides a high level of protection to the 'lower voltage' section against voltage spikes produced at the 'higher voltage' section, as long as the MOSFET itself can withstand these spikes.


By simply adding another MOSFET on each bus line (see figure 2), an extended power- down structure is achieved. Additional sections with a higher, lower or similar supply voltage can be added by simply connecting them via additional MOSFETs to the common drain terminals. Each individual section can be isolated from the rest of the bus system when its supply voltage is switched off, while level-shifting between all other sections remains operational. VDD3 and the dotted pull-up resistors, which establish a defined level at the common drain connections, are optional.


Figure 2. I²C-bus system in which the 'higher voltage' section is isolated at power-off.


In addition, the present I²C-bus specification has been extended to cover lower supply voltages and the I²C-bus can now be used for all new devices operating below 2.7 V. Using the low-cost level-shifting solution, these new devices can be kept 100% compatible with devices working at different supply voltages. In fact, in systems relying only on the I²C-bus for inter-IC communication, only two transistors are needed for each separate supply to keep wiring to the absolute minimum (two wires per device). This further enhances the advantage of the I²C-bus over solutions with more signals or random direct connections, because not only is the wiring itself less complex but also substantially fewer level-shifting components are needed. This ensures that I²C-bus applications will continue to expand into the next century.


Philips BSN10, Product info on BSN20 BSN20 and Product info on BSS83 BSS83 MOSFETs are all suitable for this level-shifting function.


Download PDF File I²C-bus specification 3.0