
(function(){if("ishares"in window){var marketData=ishares.marketData||{};if(!marketData.list){var list=(function(){var by="fundNm",order="ascending",arrow,directions={},version=0;var parentElement,sourceElement,clonedElement;var notificationURL="/fund/sort_listener.jsp";var data,dataIDs,ajax;var filters=(function(){return{};})();var sorters=(function(){var usd=String.fromCharCode(36),eur=String.fromCharCode(8364),gbp=String.fromCharCode(163);var variant1,variant2,value1,value2,weight1,weight2,currencyCode1,currencyCode2;function defaultSorter(object1,object2){var by=getBy(),order=getOrder();variant1=object1[by];variant2=object2[by];value1=(typeof variant1==="string")?variant1.toLowerCase():((variant1=variant1.value)&&(typeof variant1==="string"))?variant1.toLowerCase():variant1;value2=(typeof variant2==="string")?variant2.toLowerCase():((variant2=variant2.value)&&(typeof variant2==="string"))?variant2.toLowerCase():variant2;if(value1>value2){return 1;}
if(value1<value2){return-1;}
return 0;}
function fundNm(object1,object2){value1=object1.fundNm.toLowerCase().replace(usd,String.fromCharCode(36)).replace(eur,String.fromCharCode(37)).replace(gbp,String.fromCharCode(38));value2=object2.fundNm.toLowerCase().replace(usd,String.fromCharCode(36)).replace(eur,String.fromCharCode(37)).replace(gbp,String.fromCharCode(38));if(value1>value2){return 1;}
if(value1<value2){return-1;}
return 0;}
function exchange(object1,object2){value1=object1.exchangeCd;value2=object2.exchangeCd;if(value1>value2){return 1;}
if(value1<value2){return-1;}
return 0;}
function ticker(object1,object2){value1=object1.exchangeTicker;value2=object2.exchangeTicker;if(value1>value2){return 1;}
if(value1<value2){return-1;}
return 0;}
function lastPrice(object1,object2){currencyCode1=object1.currencyCd;currencyCode2=object2.currencyCd;if(currencyCode1>currencyCode2){return 1;}
if(currencyCode1<currencyCode2){return-1;}
variant1=object1.lastPrice;variant2=object2.lastPrice;value1=((value1=variant1.value)&&(typeof value1!=="object"))?value1:0;value2=((value2=variant2.value)&&(typeof value2!=="object"))?value2:0;if(value1>value2){return 1;}
if(value1<value2){return-1;}
return 0;}
function priceTime(object1,object2){value1=object1.lastPriceTms.value;value2=object2.lastPriceTms.value;if(value1>value2){return 1;}
if(value1<value2){return-1;}
return 0;}
function daysMove(object1,object2){variant1=object1.daysMovePercent;variant2=object2.daysMovePercent;value1=((value1=variant1.value)&&(typeof value1!=="object"))?value1:0;value2=((value2=variant2.value)&&(typeof value2!=="object"))?value2:0;if(value1>value2){return 1;}
if(value1<value2){return-1;}
return 0;}
function tradedVolume(object1,object2){currencyCode1=object1.currencyCd;currencyCode2=object2.currencyCd;if(currencyCode1>currencyCode2){return 1;}
if(currencyCode1<currencyCode2){return-1;}
variant1=object1.tradedVolume;variant2=object2.tradedVolume;value1=((value1=variant1.value)&&(typeof value1!=="object"))?value1:0;value2=((value2=variant2.value)&&(typeof value2!=="object"))?value2:0;if(value1>value2){return 1;}
if(value1<value2){return-1;}
return 0;}
return{fundNm:fundNm,exchange:exchange,ticker:ticker,lastPrice:lastPrice,priceTime:priceTime,daysMove:daysMove,tradedVolume:tradedVolume,defaultSorter:defaultSorter};})();var decorators=(function(){var directions={VERY_STRONG:"moveUP",STRONG:"moveHalfUP",NEUTRAL:"moveFlat",WEAK:"moveHalfDN",VERY_WEAK:"moveDN"};function dataNodeContent(dataNode,columnID){var variant=dataNode[columnID];if(typeof variant==="string"){return variant;}
return((variant&&typeof variant==="object")?variant.label:null)||ishares.marketData.list.messages["user.labels.na"]||"N/A";}
function insertText(element,text){insertText=("innerText"in element)?function(element,text){element.innerText=text;return true;}:function(element,text){element.textContent=text;return true;};return insertText(element,text);}
function appendTextNode(element,text){var textNode=document.createTextNode(text);while(element.lastChild){element.removeChild(element.lastChild);}
element.appendChild(textNode);return true;}
function defaultDecorator(parentElement,dataNode,columnID){if(parentElement){var element=parentElement.firstChild,text=dataNodeContent(dataNode,columnID);return insertText(element,text);}
return false;}
function fundNm(parentElement,dataNode,columnID){if(parentElement&&dataNode){var v1=dataNode.fundId,v2=dataNode.fundNm,href="/funds/"+dataNode.exchangeTicker,element=parentElement.firstChild,anchor=element.firstChild;anchor.href=href;return insertText(anchor,v2);}
return false;}
function exchange(parentElement,dataNode,columnID){if(parentElement&&dataNode){var element=parentElement.firstChild,text=dataNode.exchangeCd;return insertText(element,text);}
return false;}
function ticker(parentElement,dataNode,columnID){if(parentElement&&dataNode){var element=parentElement.firstChild,text=dataNode.exchangeTicker;return insertText(element,text);}
return false;}
function lastPrice(parentElement,dataNode,columnID){if(parentElement&&dataNode){var c1=parentElement.firstChild,c2=parentElement.lastChild,v1=dataNodeContent(dataNode,columnID),v2=dataNode.currencyCd;insertText(c1,v1);insertText(c2,v2);return true;}
return false;}
function priceTime(parentElement,dataNode,columnID){if(parentElement&&dataNode){var element=parentElement.firstChild,text=(dataNode.showTimeOnly)?dataNode.lastPriceTms.label:dataNode.lastPriceDt.label;insertText(element,text);return true;}
return false;}
function daysMove(parentElement,dataNode,columnID){if(parentElement&&dataNode){var direction=dataNode.priceChange,percent=dataNode.daysMovePercent;var c1=parentElement.firstChild,c2=parentElement.lastChild,v1=dataNode.daysMove.label,v2=(percent.label)?String.fromCharCode(40)+percent.label+String.fromCharCode(41):String.fromCharCode(32),className=directions[direction];c1.className=(className)?"col c1 "+className:"col c1";insertText(c1,v1);insertText(c2,v2);return true;}
return false;}
function tradedVolume(parentElement,dataNode,columnID){if(parentElement&&dataNode){var c1=parentElement.firstChild,c2=parentElement.lastChild,v1=dataNode.tradedVolume.value,v2=dataNode.tradedVolume.label,v3=dataNode.currencyCd;if(v1!=null&&v1!=""){insertText(c1,v2);insertText(c2,v3);}else{insertText(c1,ishares.marketData.list.messages["user.labels.na"]);}
return true;}
return false;}
return{fundNm:fundNm,exchange:exchange,ticker:ticker,lastPrice:lastPrice,priceTime:priceTime,daysMove:daysMove,tradedVolume:tradedVolume,defaultDecorator:defaultDecorator};})();function getBy(){return by;}
function setBy(value){by=value;return true;}
function getOrder(){return order;}
function setOrder(value){order=value;return true;}
function performSort(by){var current=directions.current,previous=directions[by];data=(by===previous||(current&&by===current.by))?data.reverse():data.sort(sorters[by]||sorters.defaultSorter);return true;}
function performAjax(by,order){ajax=$.ajax({url:notificationURL,type:"GET",data:{by:by,order:order},success:function(){ajax=null;}})
return true;}
function changeDirection(by){if(by){var current=directions.current,previous=directions[by];var src,className;if(current){arrow=$("#arrow_"+(current.by||"fundNm")).get(0);if(arrow){className=arrow.className;if(typeof className==="string"){if(className.indexOf("show")>=0){arrow.className=className.replace("show","hide");}}}}
arrow=$("#arrow_"+by).get(0);if(arrow){if(previous){src=arrow.src;if(typeof src==="string"){arrow.src=(src.indexOf("up")>=0)?src.replace("up","down"):(src.indexOf("down")>=0)?src.replace("down","up"):src;}}
className=arrow.className;if(typeof className==="string"){if(className.indexOf("hide")>=0){arrow.className=className.replace("hide","show");}}}
order=(previous==="ascending")?"descending":"ascending";directions[by]=order;directions.current={by:by,order:order};return true;}
return false;}
function removeLayout(){if(parentElement){while(parentElement.lastChild){parentElement.removeChild(parentElement.lastChild);}
return true;}
return false;}
function updateLayout(by){var i=0,j=data.length,dataNode,element;for(i=i;i<j;i++){dataNode=data[i];element=(dataNode)?dataNode.element:null;if(element){element.className=(i%2)?"grid_row odd":"grid_row even";parentElement.appendChild(parentElement.removeChild(element));}}
return true;}
function createLayout(by,order,version){if(!data||!dataIDs){return false;}
var i=0,j=data.length,n,m;var id,dataNode,elements,element,decorator;for(i=i;i<j;i++){clonedElement=sourceElement.cloneNode(true);clonedElement.id="rows["+i+"]";clonedElement.className=(i%2)?"grid_row odd":"grid_row even";dataNode=data[i];elements=clonedElement.getElementsByTagName("div");n=0;m=elements.length;for(n=n;n<m;n++){element=elements[n];id=dataIDs[n];decorator=decorators[id]||decorators.defaultDecorator;if(decorator){decorator.call(this,element,dataNode,id);}}
dataNode.element=parentElement.appendChild(clonedElement);}
return true;}
function filter(){}
function sorter(){}
function reorder(by){if(by){performSort(by);changeDirection(by);performAjax(by,order);updateLayout(by);return true;}
return false;}
function refresh(){ishares.stopSpinner("data");data=ishares.marketData.list.data||[];dataIDs=ishares.marketData.list.dataIDs||[];performSort(by);removeLayout();createLayout(by,order,version);return true;}
function initialize(instance){function click(id){return function(event){ishares.marketData.list.reorder(id);event.stopPropagation();return true;};}
function selectstart(event){event.stopPropagation();return true;}
data=ishares.marketData.list.data||[];dataIDs=ishares.marketData.list.dataIDs||[];var i=0,j=dataIDs.length;var id,element,firstChild,parentNode;for(i=i;i<j;i++){id=dataIDs[i];element=$("#"+id).get(0);if(element){parentNode=element.parentNode;firstChild=element.firstChild;if(parentNode&&firstChild){if(firstChild.nodeType!==3){$(firstChild).bind("click",(click)(id));}}
$(element).bind("selectstart",selectstart,true);}}
by=ishares.marketData.list.by||by;order=ishares.marketData.list.order||order;version=instance||version;parentElement=document.getElementById("data");sourceElement=document.getElementById("rowClone");performSort(by);changeDirection(by);createLayout(by,order,version);return true;}
return{messages:{"user.labels.na":"N/A"},reorder:reorder,refresh:refresh,initialize:initialize};})();marketData.list=list;}
ishares.marketData=marketData;}})();