var Spry;if(!Spry){Spry={}}if(!Spry.Utils){Spry.Utils={}}Spry.Utils.msProgIDs=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0"];Spry.Utils.createXMLHttpRequest=function(){var A=null;try{if(window.ActiveXObject){while(!A&&Spry.Utils.msProgIDs.length){try{A=new ActiveXObject(Spry.Utils.msProgIDs[0])}catch(B){A=null}if(!A){Spry.Utils.msProgIDs.splice(0,1)}}}if(!A&&window.XMLHttpRequest){A=new XMLHttpRequest()}}catch(B){A=null}if(!A){Spry.Debug.reportError("Failed to create an XMLHttpRequest object!")}return A};Spry.Utils.loadURL=function(H,B,C,G,E){var D=new Spry.Utils.loadURL.Request();D.method=H;D.url=B;D.async=C;D.successCallback=G;Spry.Utils.setOptions(D,E);try{D.xhRequest=Spry.Utils.createXMLHttpRequest();if(!D.xhRequest){return null}if(D.async){D.xhRequest.onreadystatechange=function(){Spry.Utils.loadURL.callback(D)}}D.xhRequest.open(D.method,D.url,D.async,D.username,D.password);if(D.headers){for(var A in D.headers){D.xhRequest.setRequestHeader(A,D.headers[A])}}D.xhRequest.send(D.postData);if(!D.async){Spry.Utils.loadURL.callback(D)}}catch(F){if(D.errorCallback){D.errorCallback(D)}else{Spry.Debug.reportError("Exception caught while loading "+B+": "+F)}D=null}return D};Spry.Utils.loadURL.callback=function(A){if(!A||A.xhRequest.readyState!=4){return}if(A.successCallback&&(A.xhRequest.status==200||A.xhRequest.status==0)){A.successCallback(A)}else{if(A.errorCallback){A.errorCallback(A)}}};Spry.Utils.loadURL.Request=function(){var B=Spry.Utils.loadURL.Request.props;var C=B.length;for(var A=0;A<C;A++){this[B[A]]=null}this.method="GET";this.async=true;this.headers={}};Spry.Utils.loadURL.Request.props=["method","url","async","username","password","postData","successCallback","errorCallback","headers","userData","xhRequest"];Spry.Utils.loadURL.Request.prototype.extractRequestOptions=function(D,C){if(!D){return}var B=Spry.Utils.loadURL.Request.props;var E=B.length;for(var A=0;A<E;A++){var F=B[A];if(D[F]!=undefined){this[F]=D[F];if(C){D[F]=undefined}}}};Spry.Utils.loadURL.Request.prototype.clone=function(){var B=Spry.Utils.loadURL.Request.props;var D=B.length;var C=new Spry.Utils.loadURL.Request;for(var A=0;A<D;A++){C[B[A]]=this[B[A]]}if(this.headers){C.headers={};Spry.Utils.setOptions(C.headers,this.headers)}return C};Spry.Utils.setInnerHTML=function(ele,str,preventScripts){if(!ele){return}ele=Spry.$(ele);var scriptExpr="<script[^>]*>(.|s|\n|\r)*?<\/script>";ele.innerHTML=str.replace(new RegExp(scriptExpr,"img"),"");if(preventScripts){return}var matches=str.match(new RegExp(scriptExpr,"img"));if(matches){var numMatches=matches.length;for(var i=0;i<numMatches;i++){var s=matches[i].replace(/<script[^>]*>[\s\r\n]*(<\!--)?|(-->)?[\s\r\n]*<\/script>/img,"");Spry.Utils.eval(s)}}};Spry.Utils.updateContent=function(D,B,A,C){Spry.Utils.loadURL("GET",B,true,function(E){Spry.Utils.setInnerHTML(D,E.xhRequest.responseText);if(A){A(D,B)}},C)};if(!Spry.$$){Spry.Utils.addEventListener=function(C,B,D,A){try{C=Spry.$(C);if(C.addEventListener){C.addEventListener(B,D,A)}else{if(C.attachEvent){C.attachEvent("on"+B,D)}}}catch(E){}};Spry.Utils.removeEventListener=function(C,B,D,A){try{C=Spry.$(C);if(C.removeEventListener){C.removeEventListener(B,D,A)}else{if(C.detachEvent){C.detachEvent("on"+B,D)}}}catch(E){}};Spry.Utils.addLoadListener=function(A){if(typeof window.addEventListener!="undefined"){window.addEventListener("load",A,false)}else{if(typeof document.addEventListener!="undefined"){document.addEventListener("load",A,false)}else{if(typeof window.attachEvent!="undefined"){window.attachEvent("onload",A)}}}};Spry.Utils.addClassName=function(B,A){B=Spry.$(B);if(!B||!A||(B.className&&B.className.search(new RegExp("\\b"+A+"\\b"))!=-1)){return}B.className+=(B.className?" ":"")+A};Spry.Utils.removeClassName=function(B,A){B=Spry.$(B);if(!B||!A||(B.className&&B.className.search(new RegExp("\\b"+A+"\\b"))==-1)){return}B.className=B.className.replace(new RegExp("\\s*\\b"+A+"\\b","g"),"")};Spry.Utils.getObjectByName=function(C){var A=null;if(C){var E=window;var B=C.split(".");for(var D=0;E&&D<B.length;D++){A=E[B[D]];E=A}}return A};Spry.$=function(B){if(arguments.length>1){for(var A=0,D=[],C=arguments.length;A<C;A++){D.push(Spry.$(arguments[A]))}return D}if(typeof B=="string"){B=document.getElementById(B)}return B}}Spry.Utils.eval=function(str){return eval(str)};Spry.Utils.escapeQuotesAndLineBreaks=function(A){if(A){A=A.replace(/\\/g,"\\\\");A=A.replace(/["']/g,"\\$&");A=A.replace(/\n/g,"\\n");A=A.replace(/\r/g,"\\r")}return A};Spry.Utils.encodeEntities=function(A){if(A&&A.search(/[&<>"]/)!=-1){A=A.replace(/&/g,"&amp;");A=A.replace(/</g,"&lt;");A=A.replace(/>/g,"&gt;");A=A.replace(/"/g,"&quot;")}return A};Spry.Utils.decodeEntities=function(B){var A=Spry.Utils.decodeEntities.div;if(!A){A=document.createElement("div");Spry.Utils.decodeEntities.div=A;if(!A){return B}}A.innerHTML=B;if(A.childNodes.length==1&&A.firstChild.nodeType==3&&A.firstChild.nextSibling==null){B=A.firstChild.data}else{B=B.replace(/&lt;/gi,"<");B=B.replace(/&gt;/gi,">");B=B.replace(/&quot;/gi,'"');B=B.replace(/&amp;/gi,"&")}return B};Spry.Utils.fixupIETagAttributes=function(H){var B="";var A=H.match(/^<[^\s>]+\s*/)[0];var E=H.match(/\s*\/?>$/)[0];var I=H.replace(/^<[^\s>]+\s*|\s*\/?>/g,"");B+=A;if(I){var G=0;var C=0;while(G<I.length){while(I.charAt(C)!="="&&C<I.length){++C}if(C>=I.length){B+=I.substring(G,C);break}++C;B+=I.substring(G,C);G=C;if(I.charAt(C)=='"'||I.charAt(C)=="'"){var F=C++;while(C<I.length){if(I.charAt(C)==I.charAt(F)){C++;break}else{if(I.charAt(C)=="\\"){C++}}C++}B+=I.substring(G,C);G=C}else{B+='"';var D=I.slice(C).search(/\s/);C=(D!=-1)?(C+D):I.length;B+=I.slice(G,C);B+='"';G=C}}}B+=E;return B};Spry.Utils.fixUpIEInnerHTML=function(F){var E="";var D=new RegExp("<\\!--|<\\!\\[CDATA\\[|<\\w+[^<>]*>|-->|\\]\\](>|&gt;)","g");var A=0;var B=0;while(F.length){var C=D.exec(F);if(!C||!C[0]){E+=F.substr(A,F.length-A);break}if(C.index!=A){E+=F.substr(A,C.index-A)}if(C[0]=="<!--"||C[0]=="<![CDATA["){++B;E+=C[0]}else{if(C[0]=="-->"||C[0]=="]]>"||(B&&C[0]=="]]&gt;")){--B;E+=C[0]}else{if(!B&&C[0].charAt(0)=="<"){E+=Spry.Utils.fixupIETagAttributes(C[0])}else{E+=C[0]}}}A=D.lastIndex}return E};Spry.Utils.stringToXMLDoc=function(E){var B=null;try{var A=new ActiveXObject("Microsoft.XMLDOM");A.async=false;A.loadXML(E);B=A}catch(C){try{var D=new DOMParser;B=D.parseFromString(E,"text/xml")}catch(C){Spry.Debug.reportError("Caught exception in Spry.Utils.stringToXMLDoc(): "+C+"\n");B=null}}return B};Spry.Utils.serializeObject=function(D){var F="";var C=true;if(D==null||D==undefined){return F+D}var E=typeof D;if(E=="number"||E=="boolean"){F+=D}else{if(E=="string"){F+='"'+Spry.Utils.escapeQuotesAndLineBreaks(D)+'"'}else{if(D.constructor==Array){F+="[";for(var A=0;A<D.length;A++){if(!C){F+=", "}F+=Spry.Utils.serializeObject(D[A]);C=false}F+="]"}else{if(E=="object"){F+="{";for(var B in D){if(!C){F+=", "}F+='"'+B+'": '+Spry.Utils.serializeObject(D[B]);C=false}F+="}"}}}}return F};Spry.Utils.getNodesByFunc=function(A,D){var E=new Array;var C=new Array;var B=A;while(B){if(D(B)){C.push(B)}if(B.hasChildNodes()){E.push(B);B=B.firstChild}else{if(B==A){B=null}else{try{B=B.nextSibling}catch(F){B=null}}}while(!B&&E.length>0){B=E.pop();if(B==A){B=null}else{try{B=B.nextSibling}catch(F){B=null}}}}if(E&&E.length>0){Spry.Debug.trace("-- WARNING: Spry.Utils.getNodesByFunc() failed to traverse all nodes!\n")}return C};Spry.Utils.getFirstChildWithNodeName=function(A,C){var B=A.firstChild;while(B){if(B.nodeName==C){return B}B=B.nextSibling}return null};Spry.Utils.setOptions=function(D,C,A){if(!C){return}for(var B in C){if(A&&C[B]==undefined){continue}D[B]=C[B]}};Spry.Utils.SelectionManager={};Spry.Utils.SelectionManager.selectionGroups=new Object;Spry.Utils.SelectionManager.SelectionGroup=function(){this.selectedElements=new Array};Spry.Utils.SelectionManager.SelectionGroup.prototype.select=function(B,C,E){var D=null;if(!E){this.clearSelection()}else{for(var A=0;A<this.selectedElements.length;A++){D=this.selectedElements[A].element;if(D.element==B){if(D.className!=C){Spry.Utils.removeClassName(B,D.className);Spry.Utils.addClassName(B,C)}return}}}D=new Object;D.element=B;D.className=C;this.selectedElements.push(D);Spry.Utils.addClassName(B,C)};Spry.Utils.SelectionManager.SelectionGroup.prototype.unSelect=function(B){for(var A=0;A<this.selectedElements.length;A++){var C=this.selectedElements[A].element;if(C.element==B){Spry.Utils.removeClassName(C.element,C.className);return}}};Spry.Utils.SelectionManager.SelectionGroup.prototype.clearSelection=function(){var A=null;do{A=this.selectedElements.shift();if(A){Spry.Utils.removeClassName(A.element,A.className)}}while(A)};Spry.Utils.SelectionManager.getSelectionGroup=function(A){if(!A){return null}var B=Spry.Utils.SelectionManager.selectionGroups[A];if(!B){B=new Spry.Utils.SelectionManager.SelectionGroup();Spry.Utils.SelectionManager.selectionGroups[A]=B}return B};Spry.Utils.SelectionManager.select=function(A,B,C,E){var D=Spry.Utils.SelectionManager.getSelectionGroup(A);if(!D){return}D.select(B,C,E)};Spry.Utils.SelectionManager.unSelect=function(A,B){var C=Spry.Utils.SelectionManager.getSelectionGroup(A);if(!C){return}C.unSelect(B,className)};Spry.Utils.SelectionManager.clearSelection=function(A){var B=Spry.Utils.SelectionManager.getSelectionGroup(A);if(!B){return}B.clearSelection()};Spry.Utils.Notifier=function(){this.observers=[];this.suppressNotifications=0};Spry.Utils.Notifier.prototype.addObserver=function(B){if(!B){return}var A=this.observers.length;for(var C=0;C<A;C++){if(this.observers[C]==B){return}}this.observers[A]=B};Spry.Utils.Notifier.prototype.removeObserver=function(A){if(!A){return}for(var B=0;B<this.observers.length;B++){if(this.observers[B]==A){this.observers.splice(B,1);break}}};Spry.Utils.Notifier.prototype.notifyObservers=function(B,D){if(!B){return}if(!this.suppressNotifications){var A=this.observers.length;for(var C=0;C<A;C++){var E=this.observers[C];if(E){if(typeof E=="function"){E(B,this,D)}else{if(E[B]){E[B](this,D)}}}}}};Spry.Utils.Notifier.prototype.enableNotifications=function(){if(--this.suppressNotifications<0){this.suppressNotifications=0;Spry.Debug.reportError("Unbalanced enableNotifications() call!\n")}};Spry.Utils.Notifier.prototype.disableNotifications=function(){++this.suppressNotifications};Spry.Debug={};Spry.Debug.enableTrace=true;Spry.Debug.debugWindow=null;Spry.Debug.onloadDidFire=false;Spry.Utils.addLoadListener(function(){Spry.Debug.onloadDidFire=true;Spry.Debug.flushQueuedMessages()});Spry.Debug.flushQueuedMessages=function(){if(Spry.Debug.flushQueuedMessages.msgs){var B=Spry.Debug.flushQueuedMessages.msgs;for(var A=0;A<B.length;A++){Spry.Debug.debugOut(B[A].msg,B[A].color)}Spry.Debug.flushQueuedMessages.msgs=null}};Spry.Debug.createDebugWindow=function(){if(!Spry.Debug.enableTrace||Spry.Debug.debugWindow||!Spry.Debug.onloadDidFire){return}try{Spry.Debug.debugWindow=document.createElement("div");var B=Spry.Debug.debugWindow;B.style.fontSize="12px";B.style.fontFamily="console";B.style.position="absolute";B.style.width="400px";B.style.height="300px";B.style.overflow="auto";B.style.border="solid 1px black";B.style.backgroundColor="white";B.style.color="black";B.style.bottom="0px";B.style.right="0px";B.setAttribute("id","SpryDebugWindow");document.body.appendChild(Spry.Debug.debugWindow)}catch(A){}};Spry.Debug.debugOut=function(C,A){if(!Spry.Debug.debugWindow){Spry.Debug.createDebugWindow();if(!Spry.Debug.debugWindow){if(!Spry.Debug.flushQueuedMessages.msgs){Spry.Debug.flushQueuedMessages.msgs=new Array}Spry.Debug.flushQueuedMessages.msgs.push({msg:C,color:A});return}}var B=document.createElement("div");if(A){B.style.backgroundColor=A}B.innerHTML=C;Spry.Debug.debugWindow.appendChild(B)};Spry.Debug.trace=function(A){Spry.Debug.debugOut(A)};Spry.Debug.reportError=function(A){Spry.Debug.debugOut(A,"red")};Spry.Data={};Spry.Data.regionsArray={};Spry.Data.initRegionsOnLoad=true;Spry.Data.initRegions=function(D){D=D?Spry.$(D):document.body;var M=null;var G=Spry.Utils.getNodesByFunc(D,function(U){try{if(U.nodeType!=1){return false}var S="spry:region";var R=U.attributes.getNamedItem(S);if(!R){S="spry:detailregion";R=U.attributes.getNamedItem(S)}if(R){if(M){var T=U.parentNode;while(T){if(T==M){Spry.Debug.reportError("Found a nested "+S+" in the following markup. Nested regions are currently not supported.<br/><pre>"+Spry.Utils.encodeEntities(T.innerHTML)+"</pre>");return false}T=T.parentNode}}if(R.value){R=U.attributes.getNamedItem("id");if(!R||!R.value){U.setAttribute("id","spryregion"+(++Spry.Data.initRegions.nextUniqueRegionID))}M=U;return true}else{Spry.Debug.reportError(S+" attributes require one or more data set names as values!")}}}catch(V){}return false});var A,N,I;var H=[];for(I=0;I<G.length;I++){var C=G[I];var J=false;A=C.attributes.getNamedItem("id").value;attr=C.attributes.getNamedItem("spry:region");if(!attr){attr=C.attributes.getNamedItem("spry:detailregion");J=true}if(!attr.value){Spry.Debug.reportError("spry:region and spry:detailregion attributes require one or more data set names as values!");continue}C.attributes.removeNamedItem(attr.nodeName);Spry.Utils.removeClassName(C,Spry.Data.Region.hiddenRegionClassName);N=Spry.Data.Region.strToDataSetsArray(attr.value);if(!N.length){Spry.Debug.reportError("spry:region or spry:detailregion attribute has no data set!");continue}var K=false;var P=false;var F="";var Q=null;var B={};var E={};attr=C.attributes.getNamedItem("spry:readystate");if(attr&&attr.value){E.ready=attr.value}attr=C.attributes.getNamedItem("spry:errorstate");if(attr&&attr.value){E.error=attr.value}attr=C.attributes.getNamedItem("spry:loadingstate");if(attr&&attr.value){E.loading=attr.value}attr=C.attributes.getNamedItem("spry:expiredstate");if(attr&&attr.value){E.expired=attr.value}var L=Spry.Utils.getNodesByFunc(C,function(g){try{if(g.nodeType==1){var X=g.attributes;var U=Spry.Data.Region.PI.orderedInstructions.length;var S=null;var R=null;for(var j=0;j<U;j++){var h=Spry.Data.Region.PI.orderedInstructions[j];var f=X.getNamedItem(h);if(!f){continue}var d=Spry.Data.Region.PI.instructions[h];var Z=(g==C)?true:d.childrenOnly;var c=d.getOpenTag(g,h);var W=d.getCloseTag(g,h);if(Z){var a=document.createComment(c);var b=document.createComment(W);if(!S){g.insertBefore(a,g.firstChild)}else{g.insertBefore(a,S.nextSibling)}S=a;if(!R){g.appendChild(b)}else{g.insertBefore(b,R)}R=b}else{var Y=g.parentNode;Y.insertBefore(document.createComment(c),g);Y.insertBefore(document.createComment(W),g.nextSibling)}if(h=="spry:state"){B[f.value]=true}g.removeAttribute(h)}if(Spry.Data.Region.enableBehaviorAttributes){var l=Spry.Data.Region.behaviorAttrs;for(var T in l){var V=X.getNamedItem(T);if(V){K=true;if(l[T].setup){l[T].setup(g,V.value)}}}}}}catch(k){}return false});F=C.innerHTML;if(window.ActiveXObject&&!Spry.Data.Region.disableIEInnerHTMLFixUp&&F.search(/=\{/)!=-1){if(Spry.Data.Region.debug){Spry.Debug.trace("<hr />Performing IE innerHTML fix up of Region: "+A+"<br /><br />"+Spry.Utils.encodeEntities(F))}F=Spry.Utils.fixUpIEInnerHTML(F)}if(Spry.Data.Region.debug){Spry.Debug.trace("<hr />Region template markup for '"+A+"':<br /><br />"+Spry.Utils.encodeEntities(F))}if(!P){C.innerHTML=""}var O=new Spry.Data.Region(C,A,J,F,N,B,E,K);Spry.Data.regionsArray[O.name]=O;H.push(O)}for(var I=0;I<H.length;I++){H[I].updateContent()}};Spry.Data.initRegions.nextUniqueRegionID=0;Spry.Data.updateRegion=function(B){if(!B||!Spry.Data.regionsArray||!Spry.Data.regionsArray[B]){return}try{Spry.Data.regionsArray[B].updateContent()}catch(A){Spry.Debug.reportError("Spry.Data.updateRegion("+B+") caught an exception: "+A+"\n")}};Spry.Data.getRegion=function(A){return Spry.Data.regionsArray[A]};Spry.Data.updateAllRegions=function(){if(!Spry.Data.regionsArray){return}for(var A in Spry.Data.regionsArray){Spry.Data.updateRegion(A)}};Spry.Data.getDataSetByName=function(A){var B=window[A];if(typeof B!="object"||!B.getData||!B.filter){return null}return B};Spry.Data.DataSet=function(A){Spry.Utils.Notifier.call(this);this.name="";this.internalID=Spry.Data.DataSet.nextDataSetID++;this.curRowID=0;this.data=[];this.unfilteredData=null;this.dataHash={};this.columnTypes={};this.filterFunc=null;this.filterDataFunc=null;this.distinctOnLoad=false;this.distinctFieldsOnLoad=null;this.sortOnLoad=null;this.sortOrderOnLoad="ascending";this.keepSorted=false;this.dataWasLoaded=false;this.pendingRequest=null;this.lastSortColumns=[];this.lastSortOrder="";this.loadIntervalID=0;Spry.Utils.setOptions(this,A)};Spry.Data.DataSet.prototype=new Spry.Utils.Notifier();Spry.Data.DataSet.prototype.constructor=Spry.Data.DataSet;Spry.Data.DataSet.prototype.getData=function(A){return(A&&this.unfilteredData)?this.unfilteredData:this.data};Spry.Data.DataSet.prototype.getUnfilteredData=function(){return this.getData(true)};Spry.Data.DataSet.prototype.getLoadDataRequestIsPending=function(){return this.pendingRequest!=null};Spry.Data.DataSet.prototype.getDataWasLoaded=function(){return this.dataWasLoaded};Spry.Data.DataSet.prototype.getValue=function(C,B){var A=undefined;if(!B){B=this.getCurrentRow()}switch(C){case"ds_RowNumber":A=this.getRowNumber(B);break;case"ds_RowNumberPlus1":A=this.getRowNumber(B)+1;break;case"ds_RowCount":A=this.getRowCount();break;case"ds_UnfilteredRowCount":A=this.getRowCount(true);break;case"ds_CurrentRowNumber":A=this.getCurrentRowNumber();break;case"ds_CurrentRowID":A=this.getCurrentRowID();break;case"ds_EvenOddRow":A=(this.getRowNumber(B)%2)?Spry.Data.Region.evenRowClassName:Spry.Data.Region.oddRowClassName;break;case"ds_SortOrder":A=this.getSortOrder();break;case"ds_SortColumn":A=this.getSortColumn();break;default:if(B){A=B[C]}break}return A};Spry.Data.DataSet.prototype.setDataFromArray=function(A,E){this.notifyObservers("onPreLoad");this.unfilteredData=null;this.filteredData=null;this.data=[];this.dataHash={};var B=A.length;for(var C=0;C<B;C++){var D=A[C];if(D.ds_RowID==undefined){D.ds_RowID=C}this.dataHash[D.ds_RowID]=D;this.data.push(D)}this.loadData(E)};Spry.Data.DataSet.prototype.loadData=function(C){var A=this;this.pendingRequest=new Object;this.dataWasLoaded=false;var B=function(){A.pendingRequest=null;A.dataWasLoaded=true;A.applyColumnTypes();A.disableNotifications();A.filterAndSortData();A.enableNotifications();A.notifyObservers("onPostLoad");A.notifyObservers("onDataChanged")};if(C){B()}else{this.pendingRequest.timer=setTimeout(B,0)}};Spry.Data.DataSet.prototype.filterAndSortData=function(){if(this.filterDataFunc){this.filterData(this.filterDataFunc,true)}if(this.distinctOnLoad){this.distinct(this.distinctFieldsOnLoad)}if(this.keepSorted&&this.getSortColumn()){this.sort(this.lastSortColumns,this.lastSortOrder)}else{if(this.sortOnLoad){this.sort(this.sortOnLoad,this.sortOrderOnLoad)}}if(this.filterFunc){this.filter(this.filterFunc,true)}if(this.data&&this.data.length>0){this.curRowID=this.data[0]["ds_RowID"]}else{this.curRowID=0}};Spry.Data.DataSet.prototype.cancelLoadData=function(){if(this.pendingRequest&&this.pendingRequest.timer){clearTimeout(this.pendingRequest.timer)}this.pendingRequest=null};Spry.Data.DataSet.prototype.getRowCount=function(A){var B=this.getData(A);return B?B.length:0};Spry.Data.DataSet.prototype.getRowByID=function(A){if(!this.data){return null}return this.dataHash[A]};Spry.Data.DataSet.prototype.getRowByRowNumber=function(A,B){var C=this.getData(B);if(C&&A>=0&&A<C.length){return C[A]}return null};Spry.Data.DataSet.prototype.getCurrentRow=function(){return this.getRowByID(this.curRowID)};Spry.Data.DataSet.prototype.setCurrentRow=function(B){if(this.curRowID==B){return}var A={oldRowID:this.curRowID,newRowID:B};this.curRowID=B;this.notifyObservers("onCurrentRowChanged",A)};Spry.Data.DataSet.prototype.getRowNumber=function(E,A){if(E){var C=this.getData(A);if(C&&C.length){var D=C.length;for(var B=0;B<D;B++){if(C[B]==E){return B}}}}return -1};Spry.Data.DataSet.prototype.getCurrentRowNumber=function(){return this.getRowNumber(this.getCurrentRow())};Spry.Data.DataSet.prototype.getCurrentRowID=function(){return this.curRowID};Spry.Data.DataSet.prototype.setCurrentRowNumber=function(A){if(!this.data||A>=this.data.length){Spry.Debug.trace("Invalid row number: "+A+"\n");return}var B=this.data[A]["ds_RowID"];if(B==undefined||this.curRowID==B){return}this.setCurrentRow(B)};Spry.Data.DataSet.prototype.findRowsWithColumnValues=function(F,A,C){var D=[];var J=this.getData(C);if(J){var G=J.length;for(var E=0;E<G;E++){var I=J[E];var B=true;for(var H in F){if(F[H]!=I[H]){B=false;break}}if(B){if(A){return I}D.push(I)}}}return A?null:D};Spry.Data.DataSet.prototype.setColumnType=function(C,B){if(C){if(typeof C=="string"){C=[C]}for(var A=0;A<C.length;A++){this.columnTypes[C[A]]=B}}};Spry.Data.DataSet.prototype.getColumnType=function(A){if(this.columnTypes[A]){return this.columnTypes[A]}return"string"};Spry.Data.DataSet.prototype.applyColumnTypes=function(){var D=this.getData(true);var F=D.length;var E=[];if(F<1){return}for(var A in this.columnTypes){var C=this.columnTypes[A];if(C!="string"){for(var B=0;B<F;B++){var H=D[B];var G=H[A];if(G!=undefined){if(C=="number"){H[A]=new Number(G)}else{if(C=="html"){H[A]=Spry.Utils.decodeEntities(G)}}}}}}};Spry.Data.DataSet.prototype.distinct=function(H){if(this.data){var F=this.data;this.data=[];this.dataHash={};var D=false;var G={};var E=0;var J=[];if(typeof H=="string"){J=[H]}else{if(H){J=H}else{for(var A in F[0]){J[E++]=A}}}for(var E=0;E<F.length;E++){var B=F[E];var I="";for(var C=0;C<J.length;C++){A=J[C];if(A!="ds_RowID"){if(I){I+=","}I+=A+':"'+B[A]+'"'}}if(!G[I]){this.data.push(B);this.dataHash[B.ds_RowID]=B;G[I]=true}else{D=true}}if(D){this.notifyObservers("onDataChanged")}}};Spry.Data.DataSet.prototype.getSortColumn=function(){return(this.lastSortColumns&&this.lastSortColumns.length>0)?this.lastSortColumns[0]:""};Spry.Data.DataSet.prototype.getSortOrder=function(){return this.lastSortOrder?this.lastSortOrder:""};Spry.Data.DataSet.prototype.sort=function(F,E){if(!F){return}if(typeof F=="string"){F=[F,"ds_RowID"]}else{if(F.length<2&&F[0]!="ds_RowID"){F.push("ds_RowID")}}if(!E){E="toggle"}if(E=="toggle"){if(this.lastSortColumns.length>0&&this.lastSortColumns[0]==F[0]&&this.lastSortOrder=="ascending"){E="descending"}else{E="ascending"}}if(E!="ascending"&&E!="descending"){Spry.Debug.reportError("Invalid sort order type specified: "+E+"\n");return}var D={oldSortColumns:this.lastSortColumns,oldSortOrder:this.lastSortOrder,newSortColumns:F,newSortOrder:E};this.notifyObservers("onPreSort",D);var B=F[F.length-1];var A=Spry.Data.DataSet.prototype.sort.getSortFunc(B,this.getColumnType(B),E);for(var C=F.length-2;C>=0;C--){B=F[C];A=Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc(Spry.Data.DataSet.prototype.sort.getSortFunc(B,this.getColumnType(B),E),A)}if(this.unfilteredData){this.unfilteredData.sort(A);if(this.filterFunc){this.filter(this.filterFunc,true)}}else{this.data.sort(A)}this.lastSortColumns=F.slice(0);this.lastSortOrder=E;this.notifyObservers("onPostSort",D)};Spry.Data.DataSet.prototype.sort.getSortFunc=function(D,C,A){var B=null;if(C=="number"){if(A=="ascending"){B=function(F,E){F=F[D];E=E[D];if(F==undefined||E==undefined){return(F==E)?0:(F?1:-1)}return F-E}}else{B=function(F,E){F=F[D];E=E[D];if(F==undefined||E==undefined){return(F==E)?0:(F?-1:1)}return E-F}}}else{if(C=="date"){if(A=="ascending"){B=function(G,E){var H=G[D];var F=E[D];H=H?(new Date(H)):0;F=F?(new Date(F)):0;return H-F}}else{B=function(G,E){var H=G[D];var F=E[D];H=H?(new Date(H)):0;F=F?(new Date(F)):0;return F-H}}}else{if(A=="ascending"){B=function(K,J){K=K[D];J=J[D];if(K==undefined||J==undefined){return(K==J)?0:(K?1:-1)}var N=K.toString();var L=J.toString();var E=N.toLowerCase();var F=L.toLowerCase();var H=N.length>L.length?L.length:N.length;for(var G=0;G<H;G++){var O=E.charAt(G);var M=F.charAt(G);var I=N.charAt(G);var P=L.charAt(G);if(O>M){return 1}else{if(O<M){return -1}else{if(I>P){return 1}else{if(I<P){return -1}}}}}if(N.length==L.length){return 0}else{if(N.length>L.length){return 1}}return -1}}else{B=function(K,J){K=K[D];J=J[D];if(K==undefined||J==undefined){return(K==J)?0:(K?-1:1)}var N=K.toString();var L=J.toString();var E=N.toLowerCase();var F=L.toLowerCase();var H=N.length>L.length?L.length:N.length;for(var G=0;G<H;G++){var O=E.charAt(G);var M=F.charAt(G);var I=N.charAt(G);var P=L.charAt(G);if(O>M){return -1}else{if(O<M){return 1}else{if(I>P){return -1}else{if(I<P){return 1}}}}}if(N.length==L.length){return 0}else{if(N.length>L.length){return -1}}return 1}}}}return B};Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc=function(B,A){return function(D,C){var E=B(D,C);if(E==0){E=A(D,C)}return E}};Spry.Data.DataSet.prototype.filterData=function(E,C){var D=false;if(!E){this.filterDataFunc=null;D=true}else{this.filterDataFunc=E;if(this.dataWasLoaded&&((this.unfilteredData&&this.unfilteredData.length)||(this.data&&this.data.length))){if(this.unfilteredData){this.data=this.unfilteredData;this.unfilteredData=null}var F=this.data;this.data=[];this.dataHash={};for(var B=0;B<F.length;B++){var A=E(this,F[B],B);if(A){this.data.push(A);this.dataHash[A.ds_RowID]=A}}D=true}}if(D){if(!C){this.disableNotifications();if(this.filterFunc){this.filter(this.filterFunc,true)}this.enableNotifications()}this.notifyObservers("onDataChanged")}};Spry.Data.DataSet.prototype.filter=function(F,C){var E=false;if(!F){if(this.filterFunc&&this.unfilteredData){this.data=this.unfilteredData;this.unfilteredData=null;this.filterFunc=null;E=true}}else{this.filterFunc=F;if(this.dataWasLoaded&&(this.unfilteredData||(this.data&&this.data.length))){if(!this.unfilteredData){this.unfilteredData=this.data}var D=this.unfilteredData;this.data=[];for(var B=0;B<D.length;B++){var A=F(this,D[B],B);if(A){this.data.push(A)}}E=true}}if(E){this.notifyObservers("onDataChanged")}};Spry.Data.DataSet.prototype.startLoadInterval=function(B){this.stopLoadInterval();if(B>0){var A=this;this.loadInterval=B;this.loadIntervalID=setInterval(function(){A.loadData()},B)}};Spry.Data.DataSet.prototype.stopLoadInterval=function(){if(this.loadIntervalID){clearInterval(this.loadIntervalID)}this.loadInterval=0;this.loadIntervalID=null};Spry.Data.DataSet.nextDataSetID=0;Spry.Data.HTTPSourceDataSet=function(A,B){Spry.Data.DataSet.call(this);this.url=A;this.dataSetsForDataRefStrings=new Array;this.hasDataRefStrings=false;this.useCache=true;this.setRequestInfo(B,true);Spry.Utils.setOptions(this,B,true);this.recalculateDataSetDependencies();if(this.loadInterval>0){this.startLoadInterval(this.loadInterval)}};Spry.Data.HTTPSourceDataSet.prototype=new Spry.Data.DataSet();Spry.Data.HTTPSourceDataSet.prototype.constructor=Spry.Data.HTTPSourceDataSet;Spry.Data.HTTPSourceDataSet.prototype.setRequestInfo=function(A,B){this.requestInfo=new Spry.Utils.loadURL.Request();this.requestInfo.extractRequestOptions(A,B);if(this.requestInfo.method=="POST"){if(!this.requestInfo.headers){this.requestInfo.headers={}}if(!this.requestInfo.headers["Content-Type"]){this.requestInfo.headers["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8"}}};Spry.Data.HTTPSourceDataSet.prototype.recalculateDataSetDependencies=function(){this.hasDataRefStrings=false;var B=0;for(B=0;B<this.dataSetsForDataRefStrings.length;B++){var D=this.dataSetsForDataRefStrings[B];if(D){D.removeObserver(this)}}this.dataSetsForDataRefStrings=new Array();var A=this.getDataRefStrings();var C=0;for(var G=0;G<A.length;G++){var E=Spry.Data.Region.getTokensFromStr(A[G]);for(B=0;E&&B<E.length;B++){if(E[B].search(/{[^}:]+::[^}]+}/)!=-1){var F=E[B].replace(/^\{|::.*\}/g,"");var D=null;if(!this.dataSetsForDataRefStrings[F]){D=Spry.Data.getDataSetByName(F);if(F&&D){this.dataSetsForDataRefStrings[F]=D;this.dataSetsForDataRefStrings[C++]=D;this.hasDataRefStrings=true}}}}}for(B=0;B<this.dataSetsForDataRefStrings.length;B++){var D=this.dataSetsForDataRefStrings[B];D.addObserver(this)}};Spry.Data.HTTPSourceDataSet.prototype.getDataRefStrings=function(){var A=[];if(this.url){A.push(this.url)}if(this.requestInfo&&this.requestInfo.postData){A.push(this.requestInfo.postData)}return A};Spry.Data.HTTPSourceDataSet.prototype.attemptLoadData=function(){for(var A=0;A<this.dataSetsForDataRefStrings.length;A++){var B=this.dataSetsForDataRefStrings[A];if(B.getLoadDataRequestIsPending()||!B.getDataWasLoaded()){return}}this.loadData()};Spry.Data.HTTPSourceDataSet.prototype.onCurrentRowChanged=function(B,A){this.attemptLoadData()};Spry.Data.HTTPSourceDataSet.prototype.onPostSort=function(B,A){this.attemptLoadData()};Spry.Data.HTTPSourceDataSet.prototype.onDataChanged=function(B,A){this.attemptLoadData()};Spry.Data.HTTPSourceDataSet.prototype.loadData=function(){if(!this.url){return}this.cancelLoadData();var C=this.url;var A=this.requestInfo.postData;if(this.hasDataRefStrings){var B=true;for(var D=0;D<this.dataSetsForDataRefStrings.length;D++){var F=this.dataSetsForDataRefStrings[D];if(F.getLoadDataRequestIsPending()){B=false}else{if(!F.getDataWasLoaded()){F.loadData();B=false}}}if(!B){return}C=Spry.Data.Region.processDataRefString(null,this.url,this.dataSetsForDataRefStrings);if(!C){return}if(A&&(typeof A)=="string"){A=Spry.Data.Region.processDataRefString(null,A,this.dataSetsForDataRefStrings)}}this.notifyObservers("onPreLoad");this.data=null;this.dataWasLoaded=false;this.unfilteredData=null;this.dataHash=null;this.curRowID=0;var E=this.requestInfo.clone();E.url=C;E.postData=A;this.pendingRequest=new Object;this.pendingRequest.data=Spry.Data.HTTPSourceDataSet.LoadManager.loadData(E,this,this.useCache)};Spry.Data.HTTPSourceDataSet.prototype.cancelLoadData=function(){if(this.pendingRequest){Spry.Data.HTTPSourceDataSet.LoadManager.cancelLoadData(this.pendingRequest.data,this);this.pendingRequest=null}};Spry.Data.HTTPSourceDataSet.prototype.getURL=function(){return this.url};Spry.Data.HTTPSourceDataSet.prototype.setURL=function(B,A){if(this.url==B){if(!A||(this.requestInfo.method==A.method&&(A.method!="POST"||this.requestInfo.postData==A.postData))){return}}this.url=B;this.setRequestInfo(A);this.cancelLoadData();this.recalculateDataSetDependencies();this.dataWasLoaded=false};Spry.Data.HTTPSourceDataSet.prototype.setDataFromDoc=function(A){this.pendingRequest=null;this.loadDataIntoDataSet(A);this.applyColumnTypes();this.disableNotifications();this.filterAndSortData();this.enableNotifications();this.notifyObservers("onPostLoad");this.notifyObservers("onDataChanged")};Spry.Data.HTTPSourceDataSet.prototype.loadDataIntoDataSet=function(A){this.dataHash=new Object;this.data=new Array;this.dataWasLoaded=true};Spry.Data.HTTPSourceDataSet.prototype.xhRequestProcessor=function(A){var B=A.responseText;if(A.status==200||A.status==0){return B}return null};Spry.Data.HTTPSourceDataSet.prototype.sessionExpiredChecker=function(A){if(A.xhRequest.responseText=="session expired"){return true}return false};Spry.Data.HTTPSourceDataSet.prototype.setSessionExpiredChecker=function(A){this.sessionExpiredChecker=A};Spry.Data.HTTPSourceDataSet.prototype.onRequestResponse=function(A,B){this.setDataFromDoc(A.rawData)};Spry.Data.HTTPSourceDataSet.prototype.onRequestError=function(A,B){this.notifyObservers("onLoadError",B)};Spry.Data.HTTPSourceDataSet.prototype.onRequestSessionExpired=function(A,B){this.notifyObservers("onSessionExpired",B)};Spry.Data.HTTPSourceDataSet.LoadManager={};Spry.Data.HTTPSourceDataSet.LoadManager.cache=[];Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest=function(A,B,C){Spry.Utils.Notifier.call(this);this.reqInfo=A;this.rawData=null;this.timer=null;this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.NOT_LOADED;this.xhRequestProcessor=B;this.sessionExpiredChecker=C};Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.prototype=new Spry.Utils.Notifier();Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.prototype.constructor=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest;Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.NOT_LOADED=1;Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_REQUESTED=2;Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_FAILED=3;Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL=4;Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.prototype.loadDataCallback=function(A){if(A.xhRequest.readyState!=4){return}var B=null;if(this.xhRequestProcessor){B=this.xhRequestProcessor(A.xhRequest)}if(this.sessionExpiredChecker){Spry.Utils.setOptions(A,{rawData:B},false);if(this.sessionExpiredChecker(A)){this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_FAILED;this.notifyObservers("onRequestSessionExpired",A);this.observers.length=0;return}}if(!B){this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_FAILED;this.notifyObservers("onRequestError",A);this.observers.length=0;return}this.rawData=B;this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL;this.notifyObservers("onRequestResponse",A);this.observers.length=0};Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.prototype.loadData=function(){var A=this;this.cancelLoadData();this.rawData=null;this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_REQUESTED;var B=this.reqInfo.clone();B.successCallback=function(C){A.loadDataCallback(C)};B.errorCallback=B.successCallback;this.timer=setTimeout(function(){A.timer=null;Spry.Utils.loadURL(B.method,B.url,B.async,B.successCallback,B)},0)};Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.prototype.cancelLoadData=function(){if(this.state==Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_REQUESTED){if(this.timer){this.timer.clearTimeout();this.timer=null}this.rawData=null;this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.NOT_LOADED}};Spry.Data.HTTPSourceDataSet.LoadManager.getCacheKey=function(A){return A.method+"::"+A.url+"::"+A.postData+"::"+A.username};Spry.Data.HTTPSourceDataSet.LoadManager.loadData=function(C,D,B){if(!C){return null}var A=null;var E=null;if(B){E=Spry.Data.HTTPSourceDataSet.LoadManager.getCacheKey(C);A=Spry.Data.HTTPSourceDataSet.LoadManager.cache[E]}if(A){if(A.state==Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_REQUESTED){if(D){A.addObserver(D)}return A}else{if(A.state==Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL){if(D){setTimeout(function(){D.setDataFromDoc(A.rawData)},0)}return A}}}if(!A){A=new Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest(C,(D?D.xhRequestProcessor:null),(D?D.sessionExpiredChecker:null));if(B){Spry.Data.HTTPSourceDataSet.LoadManager.cache[E]=A;A.addObserver({onRequestError:function(){Spry.Data.HTTPSourceDataSet.LoadManager.cache[E]=undefined}})}}if(D){A.addObserver(D)}A.loadData();return A};Spry.Data.HTTPSourceDataSet.LoadManager.cancelLoadData=function(A,B){if(A){if(B){A.removeObserver(B)}else{A.cancelLoadData()}}};Spry.Data.XMLDataSet=function(B,A,D){this.xpath=A;this.doc=null;this.subPaths=[];this.entityEncodeStrings=true;Spry.Data.HTTPSourceDataSet.call(this,B,D);var C=typeof this.subPaths;if(C=="string"||(C=="object"&&this.subPaths.constructor!=Array)){this.subPaths=[this.subPaths]}};Spry.Data.XMLDataSet.prototype=new Spry.Data.HTTPSourceDataSet();Spry.Data.XMLDataSet.prototype.constructor=Spry.Data.XMLDataSet;Spry.Data.XMLDataSet.prototype.getDataRefStrings=function(){var A=[];if(this.url){A.push(this.url)}if(this.xpath){A.push(this.xpath)}if(this.requestInfo&&this.requestInfo.postData){A.push(this.requestInfo.postData)}return A};Spry.Data.XMLDataSet.prototype.getDocument=function(){return this.doc};Spry.Data.XMLDataSet.prototype.getXPath=function(){return this.xpath};Spry.Data.XMLDataSet.prototype.setXPath=function(A){if(this.xpath!=A){this.xpath=A;if(this.dataWasLoaded&&this.doc){this.notifyObservers("onPreLoad");this.setDataFromDoc(this.doc)}}};Spry.Data.XMLDataSet.nodeContainsElementNode=function(A){if(A){A=A.firstChild;while(A){if(A.nodeType==1){return true}A=A.nextSibling}}return false};Spry.Data.XMLDataSet.getNodeText=function(D,C,B){var A="";if(!D){return}try{var F=D.firstChild;while(F){try{if(F.nodeType==3){A+=C?Spry.Utils.encodeEntities(F.data):F.data}else{if(F.nodeType==4){A+=B?Spry.Utils.encodeEntities(F.data):F.data}}}catch(E){Spry.Debug.reportError("Spry.Data.XMLDataSet.getNodeText() exception caught: "+E+"\n")}F=F.nextSibling}}catch(E){Spry.Debug.reportError("Spry.Data.XMLDataSet.getNodeText() exception caught: "+E+"\n")}return A};Spry.Data.XMLDataSet.createObjectForNode=function(C,G,I){if(!C){return null}var D=new Object();var E=0;var H=null;try{for(E=0;E<C.attributes.length;E++){H=C.attributes[E];if(H&&H.nodeType==2){D["@"+H.name]=H.value}}}catch(F){Spry.Debug.reportError("Spry.Data.XMLDataSet.createObjectForNode() caught exception while accessing attributes: "+F+"\n")}var B=C.firstChild;if(B&&!B.nextSibling&&B.nodeType!=1){D[C.nodeName]=Spry.Data.XMLDataSet.getNodeText(C,G,I)}while(B){if(B.nodeType==1){if(!Spry.Data.XMLDataSet.nodeContainsElementNode(B)){D[B.nodeName]=Spry.Data.XMLDataSet.getNodeText(B,G,I);try{var A=B.nodeName+"/@";for(E=0;E<B.attributes.length;E++){H=B.attributes[E];if(H&&H.nodeType==2){D[A+H.name]=H.value}}}catch(F){Spry.Debug.reportError("Spry.Data.XMLDataSet.createObjectForNode() caught exception while accessing attributes: "+F+"\n")}}}B=B.nextSibling}return D};Spry.Data.XMLDataSet.getRecordSetFromXMLDoc=function(O,N,J,K){if(!O||!N){return null}var L=new Object();L.xmlDoc=O;L.xmlPath=N;L.dataHash=new Object;L.data=new Array;L.getData=function(){return this.data};var M=new ExprContext(O);var B=xpathParse(N);var G=B.evaluate(M);var C=G.nodeSetValue();var A=true;if(C&&C.length>0){A=C[0].nodeType!=2}var E=0;var F=true;var I=false;if(typeof K=="boolean"){F=I=K}for(var D=0;D<C.length;D++){var H=null;if(J){H=new Object}else{if(A){H=Spry.Data.XMLDataSet.createObjectForNode(C[D],F,I)}else{H=new Object;H["@"+C[D].name]=C[D].value}}if(H){H.ds_RowID=E++;H.ds_XMLNode=C[D];L.dataHash[H.ds_RowID]=H;L.data.push(H)}}return L};Spry.Data.XMLDataSet.PathNode=function(A){this.path=A;this.subPaths=[];this.xpath=""};Spry.Data.XMLDataSet.PathNode.prototype.addSubPath=function(B){var A=this.findSubPath(B);if(!A){A=new Spry.Data.XMLDataSet.PathNode(B);this.subPaths.push(A)}return A};Spry.Data.XMLDataSet.PathNode.prototype.findSubPath=function(D){var A=this.subPaths.length;for(var C=0;C<A;C++){var B=this.subPaths[C];if(D==B.path){return B}}return null};Spry.Data.XMLDataSet.PathNode.prototype.consolidate=function(){var A=this.subPaths.length;if(!this.xpath&&A==1){var B=this.subPaths[0];this.path+=((B[0]!="/")?"/":"")+B.path;this.xpath=B.xpath;this.subPaths=B.subPaths;this.consolidate();return}for(var C=0;C<A;C++){this.subPaths[C].consolidate()}};Spry.Data.XMLDataSet.prototype.convertXPathsToPathTree=function(H){var E=H.length;var J=new Spry.Data.XMLDataSet.PathNode("");for(var G=0;G<E;G++){var I=H[G];var D=I.replace(/\/\//g,"/__SPRYDS__");D=D.replace(/^\//,"");var A=D.split(/\//);var B=A.length;var C=J;for(var F=0;F<B;F++){var K=A[F].replace(/__SPRYDS__/,"//");C=C.addSubPath(K)}C.xpath=I}J.consolidate();return J};Spry.Data.XMLDataSet.prototype.flattenSubPaths=function(O,J){if(!O||!J){return}var U=J.length;if(U<1){return}var b=O.data;var S={};var K=[];var A=[];for(var X=0;X<U;X++){var L=J[X];if(typeof L=="object"){L=L.path}if(!L){L=""}K[X]=Spry.Data.Region.processDataRefString(null,L,this.dataSetsForDataRefStrings);A[X]=K[X].replace(/\[.*\]/g,"")}var M;var I=b.length;var P=[];for(var X=0;X<I;X++){M=b[X];var Z=[M];for(var W=0;W<U;W++){var a=Spry.Data.XMLDataSet.getRecordSetFromXMLDoc(M.ds_XMLNode,K[W],(J[W].xpath?false:true),this.entityEncodeStrings);if(a&&a.data&&a.data.length){if(typeof J[W]=="object"&&J[W].subPaths){var Y=J[W].subPaths;spType=typeof Y;if(spType=="string"){Y=[Y]}else{if(spType=="object"&&spType.constructor==Object){Y=[Y]}}this.flattenSubPaths(a,Y)}var R=a.data;var E=R.length;var Q=A[W]+"/";var D=Z.length;var N=[];for(var V=0;V<D;V++){var G=Z[V];for(var T=0;T<E;T++){var C=new Object;var B=R[T];for(F in G){C[F]=G[F]}for(var F in B){var H=Q+F;if(Q==(F+"/")||Q.search(new RegExp("\\/"+F+"\\/$"))!=-1){H=A[W]}C[H]=B[F]}N.push(C)}}Z=N}}P=P.concat(Z)}b=P;I=b.length;for(X=0;X<I;X++){M=b[X];M.ds_RowID=X;S[M.ds_RowID]=M}O.data=b;O.dataHash=S};Spry.Data.XMLDataSet.prototype.loadDataIntoDataSet=function(E){var B=null;var A=Spry.Data.Region.processDataRefString(null,this.xpath,this.dataSetsForDataRefStrings);var F=this.subPaths;var G=false;if(this.subPaths&&this.subPaths.length>0){var J=[];var I=F.length;for(var D=0;D<I;D++){var H=Spry.Data.Region.processDataRefString(null,F[D],this.dataSetsForDataRefStrings);if(H.charAt(0)!="/"){H=A+"/"+H}J.push(H)}J.unshift(A);var C=this.convertXPathsToPathTree(J);A=C.path;F=C.subPaths;G=C.xpath?false:true}B=Spry.Data.XMLDataSet.getRecordSetFromXMLDoc(E,A,G,this.entityEncodeStrings);if(!B){Spry.Debug.reportError("Spry.Data.XMLDataSet.loadDataIntoDataSet() failed to create dataSet '"+this.name+"'for '"+this.xpath+"' - "+this.url+"\n");return}this.flattenSubPaths(B,F);this.doc=B.xmlDoc;this.data=B.data;this.dataHash=B.dataHash;this.dataWasLoaded=(this.doc!=null)};Spry.Data.XMLDataSet.prototype.xhRequestProcessor=function(B){var C=B.responseXML;var A=false;if(B.status!=200){if(B.status==0){if(B.responseText&&(!C||!C.firstChild)){A=true}}}else{if(!C){A=true}}if(A){C=Spry.Utils.stringToXMLDoc(B.responseText)}if(!C||!C.firstChild||C.firstChild.nodeName=="parsererror"){return null}return C};Spry.Data.XMLDataSet.prototype.sessionExpiredChecker=function(A){if(A.xhRequest.responseText=="session expired"){return true}else{if(A.rawData){var B=A.rawData.documentElement.firstChild;if(B&&B.nodeValue=="session expired"){return true}}}return false};Spry.Data.Region=function(D,A,H,G,K,B,E,J){this.regionNode=D;this.name=A;this.isDetailRegion=H;this.data=G;this.dataSets=K;this.hasBehaviorAttributes=J;this.tokens=null;this.currentState=null;this.states={ready:true};this.stateMap={};Spry.Utils.setOptions(this.states,B);Spry.Utils.setOptions(this.stateMap,E);for(var F=0;F<this.dataSets.length;F++){var C=this.dataSets[F];try{if(C){C.addObserver(this)}}catch(I){Spry.Debug.reportError("Failed to add '"+this.name+"' as a dataSet observer!\n")}}};Spry.Data.Region.hiddenRegionClassName="SpryHiddenRegion";Spry.Data.Region.evenRowClassName="even";Spry.Data.Region.oddRowClassName="odd";Spry.Data.Region.notifiers={};Spry.Data.Region.evalScripts=true;Spry.Data.Region.addObserver=function(B,A){var C=Spry.Data.Region.notifiers[B];if(!C){C=new Spry.Utils.Notifier();Spry.Data.Region.notifiers[B]=C}C.addObserver(A)};Spry.Data.Region.removeObserver=function(B,A){var C=Spry.Data.Region.notifiers[B];if(C){C.removeObserver(A)}};Spry.Data.Region.notifyObservers=function(B,D,C){var E=Spry.Data.Region.notifiers[D.name];if(E){var A={};if(C&&typeof C=="object"){A=C}else{A.data=C}A.region=D;A.regionID=D.name;A.regionNode=D.regionNode;E.notifyObservers(B,A)}};Spry.Data.Region.RS_Error=1;Spry.Data.Region.RS_LoadingData=2;Spry.Data.Region.RS_PreUpdate=4;Spry.Data.Region.RS_PostUpdate=8;Spry.Data.Region.prototype.getState=function(){return this.currentState};Spry.Data.Region.prototype.mapState=function(B,A){this.stateMap[B]=A};Spry.Data.Region.prototype.getMappedState=function(B){var A=this.stateMap[B];return A?A:B};Spry.Data.Region.prototype.setState=function(B,C){var A={state:B,mappedState:this.getMappedState(B)};if(!C){Spry.Data.Region.notifyObservers("onPreStateChange",this,A)}this.currentState=A.mappedState?A.mappedState:B;if(this.states[B]){var E={state:this.currentState};if(!C){Spry.Data.Region.notifyObservers("onPreUpdate",this,E)}var D=this.transform();if(Spry.Data.Region.debug){Spry.Debug.trace("<hr />Generated region markup for '"+this.name+"':<br /><br />"+Spry.Utils.encodeEntities(D))}Spry.Utils.setInnerHTML(this.regionNode,D,!Spry.Data.Region.evalScripts);if(this.hasBehaviorAttributes){this.attachBehaviors()}if(!C){Spry.Data.Region.notifyObservers("onPostUpdate",this,E)}}if(!C){Spry.Data.Region.notifyObservers("onPostStateChange",this,A)}};Spry.Data.Region.prototype.getDataSets=function(){return this.dataSets};Spry.Data.Region.prototype.addDataSet=function(B){if(!B){return}if(!this.dataSets){this.dataSets=new Array}for(var A=0;A<this.dataSets.length;A++){if(this.dataSets[A]==B){return}}this.dataSets.push(B);B.addObserver(this)};Spry.Data.Region.prototype.removeDataSet=function(B){if(!B||this.dataSets){return}for(var A=0;A<this.dataSets.length;A++){if(this.dataSets[A]==B){this.dataSets.splice(A,1);B.removeObserver(this);return}}};Spry.Data.Region.prototype.onPreLoad=function(A){if(this.currentState!="loading"){this.setState("loading")}};Spry.Data.Region.prototype.onLoadError=function(A){if(this.currentState!="error"){this.setState("error")}Spry.Data.Region.notifyObservers("onError",this)};Spry.Data.Region.prototype.onSessionExpired=function(A){if(this.currentState!="expired"){this.setState("expired")}Spry.Data.Region.notifyObservers("onExpired",this)};Spry.Data.Region.prototype.onCurrentRowChanged=function(A,B){if(this.isDetailRegion){this.updateContent()}};Spry.Data.Region.prototype.onPostSort=function(A,B){this.updateContent()};Spry.Data.Region.prototype.onDataChanged=function(A,B){this.updateContent()};Spry.Data.Region.enableBehaviorAttributes=true;Spry.Data.Region.behaviorAttrs={};Spry.Data.Region.behaviorAttrs["spry:select"]={attach:function(A,C,D){var B=null;try{B=C.attributes.getNamedItem("spry:selectgroup").value}catch(E){}if(!B){B="default"}Spry.Utils.addEventListener(C,"click",function(F){Spry.Utils.SelectionManager.select(B,C,D)},false);if(C.attributes.getNamedItem("spry:selected")){Spry.Utils.SelectionManager.select(B,C,D)}}};Spry.Data.Region.behaviorAttrs["spry:hover"]={attach:function(A,B,C){Spry.Utils.addEventListener(B,"mouseover",function(D){Spry.Utils.addClassName(B,C)},false);Spry.Utils.addEventListener(B,"mouseout",function(D){Spry.Utils.removeClassName(B,C)},false)}};Spry.Data.Region.setUpRowNumberForEvenOddAttr=function(D,A,E,B){if(!E){Spry.Debug.showError("The "+A+" attribute requires a CSS class name as its value!");D.attributes.removeNamedItem(A);return}var F="";var C=E.split(/\s/);if(C.length>1){F=C[0];D.setAttribute(A,C[1])}D.setAttribute(B,"{"+(F?(F+"::"):"")+"ds_RowNumber}")};Spry.Data.Region.behaviorAttrs["spry:even"]={setup:function(A,B){Spry.Data.Region.setUpRowNumberForEvenOddAttr(A,"spry:even",B,"spryevenrownumber")},attach:function(A,B,C){if(C){rowNumAttr=B.attributes.getNamedItem("spryevenrownumber");if(rowNumAttr&&rowNumAttr.value){var D=parseInt(rowNumAttr.value);if(D%2){Spry.Utils.addClassName(B,C)}}}B.removeAttribute("spry:even");B.removeAttribute("spryevenrownumber")}};Spry.Data.Region.behaviorAttrs["spry:odd"]={setup:function(A,B){Spry.Data.Region.setUpRowNumberForEvenOddAttr(A,"spry:odd",B,"spryoddrownumber")},attach:function(A,B,C){if(C){rowNumAttr=B.attributes.getNamedItem("spryoddrownumber");if(rowNumAttr&&rowNumAttr.value){var D=parseInt(rowNumAttr.value);if(D%2==0){Spry.Utils.addClassName(B,C)}}}B.removeAttribute("spry:odd");B.removeAttribute("spryoddrownumber")}};Spry.Data.Region.setRowAttrClickHandler=function(C,F,A,E){if(F){var D=Spry.Data.getDataSetByName(F);if(D){rowIDAttr=C.attributes.getNamedItem(A);if(rowIDAttr){var B=rowIDAttr.value;if(B){Spry.Utils.addEventListener(C,"click",function(G){D[E](B)},false)}}}}};Spry.Data.Region.behaviorAttrs["spry:setrow"]={setup:function(A,B){if(!B){Spry.Debug.reportError("The spry:setrow attribute requires a data set name as its value!");A.removeAttribute("spry:setrow");return}A.setAttribute("spryrowid","{"+B+"::ds_RowID}")},attach:function(A,B,C){Spry.Data.Region.setRowAttrClickHandler(B,C,"spryrowid","setCurrentRow");B.removeAttribute("spry:setrow");B.removeAttribute("spryrowid")}};Spry.Data.Region.behaviorAttrs["spry:setrownumber"]={setup:function(A,B){if(!B){Spry.Debug.reportError("The spry:setrownumber attribute requires a data set name as its value!");A.removeAttribute("spry:setrownumber");return}A.setAttribute("spryrownumber","{"+B+"::ds_RowID}")},attach:function(A,B,C){Spry.Data.Region.setRowAttrClickHandler(B,C,"spryrownumber","setCurrentRowNumber");B.removeAttribute("spry:setrownumber");B.removeAttribute("spryrownumber")}};Spry.Data.Region.behaviorAttrs["spry:sort"]={attach:function(A,D,F){if(!F){return}var E=A.getDataSets()[0];var C="toggle";var H=F.split(/\s/);if(H.length>1){var B=Spry.Data.getDataSetByName(H[0]);if(B){E=B;H.shift()}if(H.length>1){var G=H[H.length-1];if(G=="ascending"||G=="descending"||G=="toggle"){C=G;H.pop()}}}if(E&&H.length>0){Spry.Utils.addEventListener(D,"click",function(I){E.sort(H,C)},false)}D.removeAttribute("spry:sort")}};Spry.Data.Region.prototype.attachBehaviors=function(){var A=this;Spry.Utils.getNodesByFunc(this.regionNode,function(F){if(!F||F.nodeType!=1){return false}try{var C=Spry.Data.Region.behaviorAttrs;for(var D in C){var B=F.attributes.getNamedItem(D);if(B){var E=C[D];if(E&&E.attach){E.attach(A,F,B.value)}}}}catch(G){}return false})};Spry.Data.Region.prototype.updateContent=function(){var A=true;var D=this.getDataSets();if(!D||D.length<1){Spry.Debug.reportError("updateContent(): Region '"+this.name+"' has no data set!\n");return}for(var B=0;B<D.length;B++){var C=D[B];if(C){if(C.getLoadDataRequestIsPending()){A=false}else{if(!C.getDataWasLoaded()){C.loadData();A=false}}}}if(!A){Spry.Data.Region.notifyObservers("onLoadingData",this);return}this.setState("ready")};Spry.Data.Region.prototype.clearContent=function(){this.regionNode.innerHTML=""};Spry.Data.Region.processContentPI=function(G){var F="";var D=/<!--\s*<\/?spry:content\s*[^>]*>\s*-->/mg;var A=0;var C=0;while(G.length){var B=D.exec(G);if(!B||!B[0]){F+=G.substr(A,G.length-A);break}if(!C&&B.index!=A){F+=G.substr(A,B.index-A)}if(B[0].search(/<\//)!=-1){--C;if(C){Spry.Debug.reportError("Nested spry:content regions are not allowed!\n")}}else{++C;var E=B[0].replace(/.*\bdataref="/,"");F+=E.replace(/".*$/,"")}A=D.lastIndex}return F};Spry.Data.Region.prototype.tokenizeData=function(P){if(!P){return null}var H=new Spry.Data.Region.Token(Spry.Data.Region.Token.LIST_TOKEN,null,null,null);var F=new Array;var A=Spry.Data.Region.processContentPI(P);F.push(H);var T=/((<!--\s*){0,1}<\/{0,1}spry:[^>]+>(\s*-->){0,1})|((\{|%7[bB])[^\}\s%]+(\}|%7[dD]))/mg;var B=0;while(A.length){var K=T.exec(A);var G=null;if(!K||!K[0]){var L=A.substr(B,A.length-B);G=new Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN,null,L,L);F[F.length-1].addChild(G);break}if(K.index!=B){var L=A.substr(B,K.index-B);G=new Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN,null,L,L);F[F.length-1].addChild(G)}if(K[0].search(/^({|%7[bB])/)!=-1){var J=K[0];var E=K[0];J=J.replace(/^({|%7[bB])/,"");J=J.replace(/(}|%7[dD])$/,"");var S=null;var R=J.split(/::/);if(R.length>1){S=R[0];J=R[1]}E=E.replace(/^%7[bB]/,"{");E=E.replace(/%7[dD]$/,"}");G=new Spry.Data.Region.Token(Spry.Data.Region.Token.VALUE_TOKEN,S,J,new String(E));F[F.length-1].addChild(G)}else{if(K[0].charAt(0)=="<"){var O=K[0].replace(/^(<!--\s*){0,1}<\/?/,"");O=O.replace(/>(\s*-->){0,1}|\s.*$/,"");if(K[0].search(/<\//)!=-1){if(F[F.length-1].tokenType!=Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN){Spry.Debug.reportError("Invalid processing instruction close tag: "+O+" -- "+K[0]+"\n");return null}F.pop()}else{var I=Spry.Data.Region.PI.instructions[O];if(I){var N=null;var C="";if(K[0].search(/^.*\bselect=\"/)!=-1){C=K[0].replace(/^.*\bselect=\"/,"");C=C.replace(/".*$/,"");if(C){N=Spry.Data.getDataSetByName(C);if(!N){Spry.Debug.reportError("Failed to retrieve data set ("+C+") for "+O+"\n");C=""}}}var D=null;if(K[0].search(/^.*\btest=\"/)!=-1){D=K[0].replace(/^.*\btest=\"/,"");D=D.replace(/".*$/,"");D=Spry.Utils.decodeEntities(D)}var Q=null;if(K[0].search(/^.*\bname=\"/)!=-1){Q=K[0].replace(/^.*\bname=\"/,"");Q=Q.replace(/".*$/,"");Q=Spry.Utils.decodeEntities(Q)}var M=new Spry.Data.Region.Token.PIData(O,C,D,Q);G=new Spry.Data.Region.Token(Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN,N,M,new String(K[0]));F[F.length-1].addChild(G);F.push(G)}else{Spry.Debug.reportError("Unsupported region processing instruction: "+K[0]+"\n");return null}}}else{Spry.Debug.reportError("Invalid region token: "+K[0]+"\n");return null}}B=T.lastIndex}return H};Spry.Data.Region.prototype.callScriptFunction=function(D,B){var A=undefined;D=D.replace(/^\s*\{?\s*function::\s*|\s*\}?\s*$/g,"");var C=Spry.Utils.getObjectByName(D);if(C){A=C(this.name,function(){return B.getValueFromDataSet.apply(B,arguments)})}return A};Spry.Data.Region.prototype.evaluateExpression=function(exprStr,processContext){var result=undefined;try{if(exprStr.search(/^\s*function::/)!=-1){result=this.callScriptFunction(exprStr,processContext)}else{result=Spry.Utils.eval(Spry.Data.Region.processDataRefString(processContext,exprStr,null,true))}}catch(e){Spry.Debug.trace("Caught exception in Spry.Data.Region.prototype.evaluateExpression() while evaluating: "+Spry.Utils.encodeEntities(exprStr)+"\n    Exception:"+e+"\n")}return result};Spry.Data.Region.prototype.processTokenChildren=function(F,E,B){var D=E.children;var A=D.length;for(var C=0;C<A;C++){this.processTokens(F,D[C],B)}};Spry.Data.Region.prototype.processTokens=function(J,D,N){var G=0;switch(D.tokenType){case Spry.Data.Region.Token.LIST_TOKEN:this.processTokenChildren(J,D,N);break;case Spry.Data.Region.Token.STRING_TOKEN:J.push(D.data);break;case Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN:if(D.data.name=="spry:repeat"){var H=null;if(D.dataSet){H=D.dataSet}else{H=this.dataSets[0]}if(H){var F=N.getDataSetContext(H);if(!F){Spry.Debug.reportError("processTokens() failed to get a data set context!\n");break}F.pushState();var L=F.getData();var K=L.length;for(G=0;G<K;G++){F.setRowIndex(G);var M=true;if(D.data.jsExpr){M=this.evaluateExpression(D.data.jsExpr,N)}if(M){this.processTokenChildren(J,D,N)}}F.popState()}}else{if(D.data.name=="spry:if"){var M=true;if(D.data.jsExpr){M=this.evaluateExpression(D.data.jsExpr,N)}if(M){this.processTokenChildren(J,D,N)}}else{if(D.data.name=="spry:choose"){var A=null;var I=null;var M=false;var E=0;for(E=0;E<D.children.length;E++){var B=D.children[E];if(B.tokenType==Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN){if(B.data.name=="spry:when"){if(B.data.jsExpr){M=this.evaluateExpression(B.data.jsExpr,N);if(M){I=B;break}}}else{if(B.data.name=="spry:default"){A=B}}}}if(!I&&A){I=A}if(I){this.processTokenChildren(J,I,N)}}else{if(D.data.name=="spry:state"){var M=true;if(!D.data.regionState||D.data.regionState==this.currentState){this.processTokenChildren(J,D,N)}}else{Spry.Debug.reportError("processTokens(): Unknown processing instruction: "+D.data.name+"\n");return""}}}}break;case Spry.Data.Region.Token.VALUE_TOKEN:var H=D.dataSet;var C=undefined;if(H&&H=="function"){C=this.callScriptFunction(D.data,N)}else{if(!H&&this.dataSets&&this.dataSets.length>0&&this.dataSets[0]){H=this.dataSets[0]}if(!H){Spry.Debug.reportError("processTokens(): Value reference has no data set specified: "+D.regionStr+"\n");return""}C=N.getValueFromDataSet(H,D.data)}if(typeof C!="undefined"){J.push(C+"")}break;default:Spry.Debug.reportError("processTokens(): Invalid token type: "+D.regionStr+"\n");break}};Spry.Data.Region.prototype.transform=function(){if(this.data&&!this.tokens){this.tokens=this.tokenizeData(this.data)}if(!this.tokens){return""}processContext=new Spry.Data.Region.ProcessingContext(this);if(!processContext){return""}var A=[""];this.processTokens(A,this.tokens,processContext);return A.join("")};Spry.Data.Region.PI={};Spry.Data.Region.PI.instructions={};Spry.Data.Region.PI.buildOpenTagForValueAttr=function(C,A,B){if(!C||!A){return""}var F="";try{var E=C.attributes.getNamedItem(A);if(E&&E.value){F=Spry.Utils.encodeEntities(E.value)}}catch(D){F=""}if(!F){Spry.Debug.reportError(A+" attribute requires a JavaScript expression that returns true or false!\n");return""}return"<"+Spry.Data.Region.PI.instructions[A].tagName+" "+B+'="'+F+'">'};Spry.Data.Region.PI.buildOpenTagForTest=function(B,A){return Spry.Data.Region.PI.buildOpenTagForValueAttr(B,A,"test")};Spry.Data.Region.PI.buildOpenTagForState=function(B,A){return Spry.Data.Region.PI.buildOpenTagForValueAttr(B,A,"name")};Spry.Data.Region.PI.buildOpenTagForRepeat=function(D,B){if(!D||!B){return""}var A="";try{var G=D.attributes.getNamedItem(B);if(G&&G.value){A=G.value;A=A.replace(/\s/g,"")}}catch(F){A=""}if(!A){Spry.Debug.reportError(B+" attribute requires a data set name!\n");return""}var C="";try{var E=D.attributes.getNamedItem("spry:test");if(E){if(E.value){C=' test="'+Spry.Utils.encodeEntities(E.value)+'"'}D.attributes.removeNamedItem(E.nodeName)}}catch(F){C=""}return"<"+Spry.Data.Region.PI.instructions[B].tagName+' select="'+A+'"'+C+">"};Spry.Data.Region.PI.buildOpenTagForContent=function(C,A){if(!C||!A){return""}var E="";try{var B=C.attributes.getNamedItem(A);if(B&&B.value){E=Spry.Utils.encodeEntities(B.value)}}catch(D){E=""}if(!E){Spry.Debug.reportError(A+" attribute requires a data reference!\n");return""}return"<"+Spry.Data.Region.PI.instructions[A].tagName+' dataref="'+E+'">'};Spry.Data.Region.PI.buildOpenTag=function(B,A){return"<"+Spry.Data.Region.PI.instructions[A].tagName+">"};Spry.Data.Region.PI.buildCloseTag=function(B,A){return"</"+Spry.Data.Region.PI.instructions[A].tagName+">"};Spry.Data.Region.PI.instructions["spry:state"]={tagName:"spry:state",childrenOnly:false,getOpenTag:Spry.Data.Region.PI.buildOpenTagForState,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:if"]={tagName:"spry:if",childrenOnly:false,getOpenTag:Spry.Data.Region.PI.buildOpenTagForTest,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:repeat"]={tagName:"spry:repeat",childrenOnly:false,getOpenTag:Spry.Data.Region.PI.buildOpenTagForRepeat,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:repeatchildren"]={tagName:"spry:repeat",childrenOnly:true,getOpenTag:Spry.Data.Region.PI.buildOpenTagForRepeat,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:choose"]={tagName:"spry:choose",childrenOnly:true,getOpenTag:Spry.Data.Region.PI.buildOpenTag,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:when"]={tagName:"spry:when",childrenOnly:false,getOpenTag:Spry.Data.Region.PI.buildOpenTagForTest,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:default"]={tagName:"spry:default",childrenOnly:false,getOpenTag:Spry.Data.Region.PI.buildOpenTag,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:content"]={tagName:"spry:content",childrenOnly:true,getOpenTag:Spry.Data.Region.PI.buildOpenTagForContent,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.orderedInstructions=["spry:state","spry:if","spry:repeat","spry:repeatchildren","spry:choose","spry:when","spry:default","spry:content"];Spry.Data.Region.getTokensFromStr=function(A){if(!A){return null}return A.match(/{[^}]+}/g)};Spry.Data.Region.processDataRefString=function(J,K,G,A){if(!K){return""}if(!J&&!G){return K}var H="";var M=new RegExp("\\{([^\\}:]+::)?[^\\}]+\\}","g");var I=0;while(I<K.length){var F=M.exec(K);if(!F||!F[0]){H+=K.substr(I,K.length-I);return H}if(F.index!=I){H+=K.substr(I,F.index-I)}var B="";if(F[0].search(/^\{[^}:]+::/)!=-1){B=F[0].replace(/^\{|::.*/g,"")}var L=F[0].replace(/^\{|.*::|\}/g,"");var N=null;var E="";if(J){E=J.getValueFromDataSet(B,L)}else{var D=B?G[B]:G[0];if(D){E=D.getValue(L)}}if(typeof E!="undefined"){E+="";H+=A?Spry.Utils.escapeQuotesAndLineBreaks(E):E}if(I==M.lastIndex){var C=F.index+F[0].length;if(C<K.length){H+=K.substr(C)}break}I=M.lastIndex}return H};Spry.Data.Region.strToDataSetsArray=function(H,E){var G=new Array;var B={};if(!H){return G}H=H.replace(/\s+/g," ");H=H.replace(/^\s|\s$/g,"");var A=H.split(/ /);for(var D=0;D<A.length;D++){if(A[D]&&!Spry.Data.Region.PI.instructions[A[D]]){try{var C=Spry.Data.getDataSetByName(A[D]);if(!B[A[D]]){if(E){G.push(A[D])}else{G.push(C)}B[A[D]]=true}}catch(F){}}}return G};Spry.Data.Region.DSContext=function(C,F){var D=C;var A=F;var G=[{rowIndex:-1}];var B=null;var E=[];var H=function(){return G[G.length-1].rowIndex};this.resetAll=function(){G=[{rowIndex:D.getCurrentRow()}]};this.getDataSet=function(){return D};this.getNumRows=function(I){var J=this.getCurrentState().data;return J?J.length:D.getRowCount(I)};this.getData=function(){var I=this.getCurrentState().data;return I?I:D.getData()};this.setData=function(I){this.getCurrentState().data=I};this.getValue=function(M,J){var I="";var L=this.getCurrentState();var K=L.nestedDS?L.nestedDS:this.getDataSet();if(K){I=K.getValue(M,J)}return I};this.getCurrentRow=function(){if(G.length<2||H()<0){return D.getCurrentRow()}var J=this.getData();var I=H();if(I<0||I>J.length){Spry.Debug.reportError("Invalid index used in Spry.Data.Region.DSContext.getCurrentRow()!\n");return null}return J[I]};this.getRowIndex=function(){var I=H();if(I>=0){return I}return D.getRowNumber(D.getCurrentRow())};this.setRowIndex=function(L){this.getCurrentState().rowIndex=L;var J=this.getData();var K=E.length;for(var I=0;I<K;I++){E[I].syncDataWithParentRow(this,L,J)}};this.syncDataWithParentRow=function(L,O,I){var N=I[O];if(N){nestedDS=D.getNestedDataSetForParentRow(N);if(nestedDS){var K=this.getCurrentState();K.nestedDS=nestedDS;K.data=nestedDS.getData();K.rowIndex=nestedDS.getCurrentRowNumber();K.rowIndex=K.rowIndex<0?0:K.rowIndex;var M=E.length;for(var J=0;J<M;J++){E[J].syncDataWithParentRow(this,K.rowIndex,K.data)}}}};this.pushState=function(){var L=this.getCurrentState();var K=new Object;K.rowIndex=L.rowIndex;K.data=L.data;K.nestedDS=L.nestedDS;G.push(K);var J=E.length;for(var I=0;I<J;I++){E[I].pushState()}};this.popState=function(){if(G.length<2){Spry.Debug.reportError("Stack underflow in Spry.Data.Region.DSContext.popState()!\n");return}var J=E.length;for(var I=0;I<J;I++){E[I].popState()}G.pop()};this.getCurrentState=function(){return G[G.length-1]};this.addChild=function(K){var J=E.length;for(var I=0;I<J;I++){if(E[I]==K){return}}E.push(K)}};Spry.Data.Region.ProcessingContext=function(F){this.region=F;this.dataSetContexts=[];if(F&&F.dataSets){var G=F.dataSets.slice(0);var E=G.length;for(var D=0;D<E;D++){var B=F.dataSets[D];while(B&&B.getParentDataSet){var J=false;B=B.getParentDataSet();if(B&&this.indexOf(G,B)==-1){G.push(B)}}}for(D=0;D<G.length;D++){this.dataSetContexts.push(new Spry.Data.Region.DSContext(G[D],this))}var K=this.dataSetContexts;var H=K.length;for(D=0;D<H;D++){var C=K[D];var B=C.getDataSet();if(B.getParentDataSet){var I=B.getParentDataSet();if(I){var A=this.getDataSetContext(I);if(A){A.addChild(C)}}}}}};Spry.Data.Region.ProcessingContext.prototype.indexOf=function(A,D){if(A){var B=A.length;for(var C=0;C<B;C++){if(A[C]==D){return C}}}return -1};Spry.Data.Region.ProcessingContext.prototype.getDataSetContext=function(B){if(!B){if(this.dataSetContexts.length>0){return this.dataSetContexts[0]}return null}if(typeof B=="string"){B=Spry.Data.getDataSetByName(B);if(!B){return null}}for(var A=0;A<this.dataSetContexts.length;A++){var C=this.dataSetContexts[A];if(C.getDataSet()==B){return C}}return null};Spry.Data.Region.ProcessingContext.prototype.getValueFromDataSet=function(){var E="";var D="";if(arguments.length>1){E=arguments[0];D=arguments[1]}else{var C=arguments[0].replace(/\s*{\s*|\s*}\s*/g,"");if(C.search("::")!=-1){E=C.replace(/::.*/,"");D=C.replace(/.*::/,"")}else{D=C}}var B="";var A=this.getDataSetContext(E);if(A){B=A.getValue(D,A.getCurrentRow())}else{Spry.Debug.reportError("getValueFromDataSet: Failed to get "+E+" context for the "+this.region.regionNode.id+" region.\n")}return B};Spry.Data.Region.ProcessingContext.prototype.$v=Spry.Data.Region.ProcessingContext.prototype.getValueFromDataSet;Spry.Data.Region.ProcessingContext.prototype.getCurrentRowForDataSet=function(A){var B=this.getDataSetContext(A);if(B){return B.getCurrentRow()}return null};Spry.Data.Region.Token=function(E,B,D,C){var A=this;this.tokenType=E;this.dataSet=B;this.data=D;this.regionStr=C;this.parent=null;this.children=null};Spry.Data.Region.Token.prototype.addChild=function(A){if(!A){return}if(!this.children){this.children=new Array}this.children.push(A);A.parent=this};Spry.Data.Region.Token.LIST_TOKEN=0;Spry.Data.Region.Token.STRING_TOKEN=1;Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN=2;Spry.Data.Region.Token.VALUE_TOKEN=3;Spry.Data.Region.Token.PIData=function(B,C,D,E){var A=this;this.name=B;this.data=C;this.jsExpr=D;this.regionState=E};Spry.Utils.addLoadListener(function(){setTimeout(function(){if(Spry.Data.initRegionsOnLoad){Spry.Data.initRegions()}},0)});