var Spry;Spry||(Spry={});if(!Spry.Utils)Spry.Utils={};Spry.Utils.msProgIDs=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"]; Spry.Utils.createXMLHttpRequest=function(){var a=null;try{if(window.XMLHttpRequest)a=new XMLHttpRequest;else if(window.ActiveXObject)for(;!a&&Spry.Utils.msProgIDs.length;){try{a=new ActiveXObject(Spry.Utils.msProgIDs[0])}catch(b){a=null}a||Spry.Utils.msProgIDs.splice(0,1)}}catch(c){a=null}a||Spry.Debug.reportError("Failed to create an XMLHttpRequest object!");return a}; Spry.Utils.loadURL=function(a,b,c,e,d){var f=new Spry.Utils.loadURL.Request;f.method=a;f.url=b;f.async=c;f.successCallback=e;Spry.Utils.setOptions(f,d);try{f.xhRequest=Spry.Utils.createXMLHttpRequest();if(!f.xhRequest)return null;if(f.async)f.xhRequest.onreadystatechange=function(){Spry.Utils.loadURL.callback(f)};f.xhRequest.open(f.method,f.url,f.async,f.username,f.password);if(f.headers)for(var h in f.headers)f.xhRequest.setRequestHeader(h,f.headers[h]);f.xhRequest.send(f.postData);f.async||Spry.Utils.loadURL.callback(f)}catch(g){f= null,Spry.Debug.reportError("Exception caught while loading "+b+": "+g.message)}return f};Spry.Utils.loadURL.callback=function(a){a&&4==a.xhRequest.readyState&&(a.successCallback&&(200==a.xhRequest.status||0==a.xhRequest.status)?a.successCallback(a):a.errorCallback&&a.errorCallback(a))};Spry.Utils.loadURL.Request=function(){for(var a=Spry.Utils.loadURL.Request.props,b=a.length,c=0;c<b;c++)this[a[c]]=null;this.method="GET";this.async=!0;this.headers={}};Spry.Utils.loadURL.Request.props="method,url,async,username,password,postData,successCallback,errorCallback,headers,userData,xhRequest".split(","); Spry.Utils.loadURL.Request.prototype.extractRequestOptions=function(a,b){if(a)for(var c=Spry.Utils.loadURL.Request.props,e=c.length,d=0;d<e;d++){var f=c[d];void 0!=a[f]&&(this[f]=a[f],b&&(a[f]=void 0))}};Spry.Utils.loadURL.Request.prototype.clone=function(){for(var a=Spry.Utils.loadURL.Request.props,b=a.length,c=new Spry.Utils.loadURL.Request,e=0;e<b;e++)c[a[e]]=this[a[e]];if(this.headers)c.headers={},Spry.Utils.setOptions(c.headers,this.headers);return c}; Spry.Utils.addEventListener=function(a,b,c,e){try{a.addEventListener?a.addEventListener(b,c,e):a.attachEvent&&a.attachEvent("on"+b,c)}catch(d){}};Spry.Utils.removeEventListener=function(a,b,c,e){try{a.removeEventListener?a.removeEventListener(b,c,e):a.detachEvent&&a.detachEvent("on"+b,c)}catch(d){}}; Spry.Utils.addLoadListener=function(a){"undefined"!=typeof window.addEventListener?window.addEventListener("load",a,!1):"undefined"!=typeof document.addEventListener?document.addEventListener("load",a,!1):"undefined"!=typeof window.attachEvent&&window.attachEvent("onload",a)};Spry.Utils.eval=function(a){return eval(a)};Spry.Utils.escapeQuotesAndLineBreaks=function(a){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){a&&-1!=a.search(/[&<>"]/)&&(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(a){var b=Spry.Utils.decodeEntities.div;if(!b&&(b=document.createElement("div"),Spry.Utils.decodeEntities.div=b,!b))return a;b.innerHTML=a;1==b.childNodes.length&&3==b.firstChild.nodeType&&null==b.firstChild.nextSibling?a=b.firstChild.data:(a=a.replace(/&lt;/,"<"),a=a.replace(/&gt;/,">"),a=a.replace(/&quot;/,'"'),a=a.replace(/&amp;/,"&"));return a}; Spry.Utils.fixupIETagAttributes=function(a){var b="",c=a.match(/^<[^\s>]+\s*/)[0],e=a.match(/\s*\/?>$/)[0],a=a.replace(/^<[^\s>]+\s*|\s*\/?>/g,""),b=b+c;if(a)for(var d=c=0;c<a.length;){for(;"="!=a.charAt(d)&&d<a.length;)++d;if(d>=a.length){b+=a.substring(c,d);break}++d;b+=a.substring(c,d);c=d;if('"'==a.charAt(d)||"'"==a.charAt(d)){for(var f=d++;d<a.length;){if(a.charAt(d)==a.charAt(f)){d++;break}else"\\"==a.charAt(d)&&d++;d++}b+=a.substring(c,d)}else b+='"',f=a.slice(d).search(/\s/),d=-1!=f?d+f:a.length, b+=a.slice(c,d),b+='"';c=d}return b+e};Spry.Utils.fixUpIEInnerHTML=function(a){for(var b="",c=RegExp("<\\!--|<\\!\\[CDATA\\[|<\\w+[^<>]*>|--\>|\\]\\](>|&gt;)","g"),e=0,d=0;a.length;){var f=c.exec(a);if(!f||!f[0]){b+=a.substr(e,a.length-e);break}f.index!=e&&(b+=a.substr(e,f.index-e));"<\!--"==f[0]||"<![CDATA["==f[0]?(++d,b+=f[0]):"--\>"==f[0]||"]]\>"==f[0]||d&&"]]&gt;"==f[0]?(--d,b+=f[0]):b=!d&&"<"==f[0].charAt(0)?b+Spry.Utils.fixupIETagAttributes(f[0]):b+f[0];e=c.lastIndex}return b}; Spry.Utils.getStyleProperty=function(a,b){try{if(a.style[b])return a.style[b];if(a.currentStyle)return a.currentStyle[b];if(document.defaultView&&document.defaultView.getComputedStyle)return document.defaultView.getComputedStyle(a,null).getPropertyValue(b)}catch(c){}return null}; Spry.Utils.stringToXMLDoc=function(a){var b=null;try{var c=new ActiveXObject("Microsoft.XMLDOM");c.async=!1;c.loadXML(a);b=c}catch(e){try{b=(new DOMParser).parseFromString(a,"text/xml")}catch(d){Spry.Debug.reportError("Caught exception in Spry.Utils.stringToXMLDoc(): "+d+"\n"),b=null}}return b}; Spry.Utils.getNodesByFunc=function(a,b){for(var c=[],e=[],d=a;d;){b(d)&&e.push(d);if(d.hasChildNodes())c.push(d),d=d.firstChild;else if(d==a)d=null;else try{d=d.nextSibling}catch(f){d=null}for(;!d&&0<c.length;)if(d=c.pop(),d==a)d=null;else try{d=d.nextSibling}catch(h){d=null}}c&&0<c.length&&Spry.Debug.trace("-- WARNING: Spry.Utils.getNodesByFunc() failed to traverse all nodes!\n");return e}; Spry.Utils.addClassName=function(a,b){a&&b&&!(a.className&&-1!=a.className.search(RegExp("\\b"+b+"\\b")))&&(a.className+=(a.className?" ":"")+b)};Spry.Utils.removeClassName=function(a,b){if(a&&b&&!(a.className&&-1==a.className.search(RegExp("\\b"+b+"\\b"))))a.className=a.className.replace(RegExp("\\s*\\b"+b+"\\b","g"),"")};Spry.Utils.removeAllChildren=function(a){for(;a&&a.firstChild;)a.removeChild(a.firstChild)}; Spry.Utils.getFirstChildWithNodeName=function(a,b){for(var c=a.firstChild;c;){if(c.nodeName==b)return c;c=c.nextSibling}return null};Spry.Utils.nodeContainsElementNode=function(a){if(a)for(a=a.firstChild;a;){if(1==a.nodeType)return!0;a=a.nextSibling}return!1}; Spry.Utils.getNodeText=function(a){var b="";if(a){try{for(var c=a.firstChild;c;){try{3==c.nodeType?b+=Spry.Utils.encodeEntities(c.data):4==c.nodeType&&(b+=c.data)}catch(e){Spry.Debug.reportError("Spry.Utils.getNodeText() exception caught: "+e+"\n")}c=c.nextSibling}}catch(d){Spry.Debug.reportError("Spry.Utils.getNodeText() exception caught: "+d+"\n")}return b}}; Spry.Utils.CreateObjectForNode=function(a){if(!a)return null;var b=null,c=0,e=null;try{for(c=0;c<a.attributes.length;c++)if((e=a.attributes[c])&&2==e.nodeType){if(!b&&(b={},!b))return Spry.Debug.reportError("Spry.Utils.CreateObjectForNode(): Object creation failed!"),null;b["@"+e.name]=e.value}}catch(d){Spry.Debug.reportError("Spry.Utils.CreateObjectForNode() caught exception while accessing attributes: "+d+"\n")}var f=a.firstChild;if(f&&!f.nextSibling&&1!=f.nodeType){if(!b&&(b={},!b))return Spry.Debug.reportError("Spry.Utils.CreateObjectForNode(): Object creation failed!"), null;b[a.nodeName]=Spry.Utils.getNodeText(a)}for(;f;){if(1==f.nodeType&&!Spry.Utils.nodeContainsElementNode(f)){a=Spry.Utils.getNodeText(f);if(!b&&(b={},!b))return Spry.Debug.reportError("Spry.Utils.CreateObjectForNode(): Object creation failed!"),null;b[f.nodeName]=a;try{for(var h=f.nodeName+"/@",c=0;c<f.attributes.length;c++)if((e=f.attributes[c])&&2==e.nodeType)b[h+e.name]=e.value}catch(g){Spry.Debug.reportError("Spry.Utils.CreateObjectForNode() caught exception while accessing attributes: "+g+ "\n")}}f=f.nextSibling}return b};Spry.Utils.getRecordSetFromXMLDoc=function(a,b){if(!a||!b)return null;var c={};c.xmlDoc=a;c.xmlPath=b;c.dataHash={};c.data=[];c.getData=function(){return this.data};var e=new ExprContext(a),e=xpathParse(b).evaluate(e).nodeSetValue(),d=!0;e&&0<e.length&&(d=2!=e[0].nodeType);for(var f=0,h=0;h<e.length;h++){var g=null;d?g=Spry.Utils.CreateObjectForNode(e[h]):(g={},g["@"+e[h].name]=e[h].value);if(g)g.ds_RowID=f++,c.dataHash[g.ds_RowID]=g,c.data.push(g)}return c}; Spry.Utils.setOptions=function(a,b,c){if(b)for(var e in b)c&&void 0==b[e]||(a[e]=b[e])};Spry.Utils.SelectionManager={};Spry.Utils.SelectionManager.selectionGroups={};Spry.Utils.SelectionManager.SelectionGroup=function(){this.selectedElements=[]}; Spry.Utils.SelectionManager.SelectionGroup.prototype.select=function(a,b,c){var e=null;if(c)for(c=0;c<this.selectedElements.length;c++){if(e=this.selectedElements[c].element,e.element==a){e.className!=b&&(Spry.Utils.removeClassName(a,e.className),Spry.Utils.addClassName(a,b));return}}else this.clearSelection();e={};e.element=a;e.className=b;this.selectedElements.push(e);Spry.Utils.addClassName(a,b)}; Spry.Utils.SelectionManager.SelectionGroup.prototype.unSelect=function(a){for(var b=0;b<this.selectedElements.length;b++){var c=this.selectedElements[b].element;if(c.element==a){Spry.Utils.removeClassName(c.element,c.className);break}}};Spry.Utils.SelectionManager.SelectionGroup.prototype.clearSelection=function(){var a=null;do(a=this.selectedElements.shift())&&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];b||(b=new Spry.Utils.SelectionManager.SelectionGroup,Spry.Utils.SelectionManager.selectionGroups[a]=b);return b};Spry.Utils.SelectionManager.select=function(a,b,c,e){(a=Spry.Utils.SelectionManager.getSelectionGroup(a))&&a.select(b,c,e)};Spry.Utils.SelectionManager.unSelect=function(a,b){var c=Spry.Utils.SelectionManager.getSelectionGroup(a);c&&c.unSelect(b,className)}; Spry.Utils.SelectionManager.clearSelection=function(a){(a=Spry.Utils.SelectionManager.getSelectionGroup(a))&&a.clearSelection()};function $(){for(var a=[],b=0;b<arguments.length;b++){var c=arguments[b];"string"==typeof c&&(c=document.getElementById(c));if(1==arguments.length)return c;a.push(c)}return a}Spry.Utils.Notifier=function(){this.observers=[];this.suppressNotifications=0}; Spry.Utils.Notifier.prototype.addObserver=function(a){if(a){for(var b=this.observers.length,c=0;c<b;c++)if(this.observers[c]==a)return;this.observers[b]=a}};Spry.Utils.Notifier.prototype.removeObserver=function(a){if(a)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(a,b){if(a&&!this.suppressNotifications)for(var c=this.observers.length,e=0;e<c;e++){var d=this.observers[e];if(d)if("function"==typeof d)d(a,this,b);else if(d[a])d[a](this,b)}};Spry.Utils.Notifier.prototype.enableNotifications=function(){if(0>--this.suppressNotifications)this.suppressNotifications=0,Spry.Debug.reportError("Unbalanced enableNotifications() call!\n")};Spry.Utils.Notifier.prototype.disableNotifications=function(){++this.suppressNotifications}; Spry.Debug={};Spry.Debug.enableTrace=!0;Spry.Debug.debugWindow=null; Spry.Debug.createDebugWindow=function(){if(Spry.Debug.enableTrace&&!Spry.Debug.debugWindow)try{Spry.Debug.debugWindow=document.createElement("div");var a=Spry.Debug.debugWindow;a.style.fontSize="12px";a.style.fontFamily="console";a.style.position="absolute";a.style.width="400px";a.style.height="300px";a.style.overflow="auto";a.style.border="solid 1px black";a.style.backgroundColor="white";a.style.color="black";a.style.bottom="0px";a.style.right="0px";a.setAttribute("id","SpryDebugWindow");document.body.appendChild(Spry.Debug.debugWindow)}catch(b){}}; Spry.Debug.debugOut=function(a,b){if(!Spry.Debug.debugWindow&&(Spry.Debug.createDebugWindow(),!Spry.Debug.debugWindow))return;var c=document.createElement("div");if(b)c.style.backgroundColor=b;c.innerHTML=a;Spry.Debug.debugWindow.appendChild(c)};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.initRegions=function(a){if(!a)a=document.body;var a=Spry.Utils.getNodesByFunc(a,function(a){try{if(1!=a.nodeType)return!1;var b="spry:region",c=a.attributes.getNamedItem(b);c||(b="spry:detailregion",c=a.attributes.getNamedItem(b));if(c){if(c.value)return c=a.attributes.getNamedItem("id"),(!c||!c.value)&&a.setAttribute("id","spryregion"+ ++Spry.Data.initRegions.nextUniqueRegionID),!0;Spry.Debug.reportError(b+" attributes require one or more data set names as values!")}}catch(d){}return!1}), b,c,e;for(e=0;e<a.length;e++){var d=a[e],f=!1;b=d.attributes.getNamedItem("id").value;attr=d.attributes.getNamedItem("spry:region");attr||(attr=d.attributes.getNamedItem("spry:detailregion"),f=!0);if(attr.value)if(d.attributes.removeNamedItem(attr.nodeName),Spry.Utils.removeClassName(d,Spry.Data.Region.hiddenRegionClassName),c=Spry.Data.Region.strToDataSetsArray(attr.value),c.length){var h=!1,g="",j={};Spry.Utils.getNodesByFunc(d,function(a){try{if(1==a.nodeType){for(var b=a.attributes,c=Spry.Data.Region.PI.orderedInstructions.length, e=null,f=null,g=0;g<c;g++){var l=Spry.Data.Region.PI.orderedInstructions[g],p=b.getNamedItem(l);if(p){var m=Spry.Data.Region.PI.instructions[l],u=a==d?!0:m.childrenOnly,q=m.getOpenTag(a,l),r=m.getCloseTag(a,l);if(u){var n=document.createComment(q),o=document.createComment(r);e?a.insertBefore(n,e.nextSibling):a.insertBefore(n,a.firstChild);e=n;f?a.insertBefore(o,f):a.appendChild(o);f=o}else{var s=a.parentNode;s.insertBefore(document.createComment(q),a);s.insertBefore(document.createComment(r),a.nextSibling)}"spry:state"== l&&(j[p.value]=!0);a.removeAttribute(l)}}if(!h&&Spry.Data.Region.enableBehaviorAttributes)for(var v in Spry.Data.Region.behaviorAttrs)if(b.getNamedItem(v)){h=!0;break}}}catch(w){}return!1});g=d.innerHTML;window.ActiveXObject&&!Spry.Data.Region.disableIEInnerHTMLFixUp&&-1!=g.search(/=\{/)&&(Spry.Data.Region.debug&&Spry.Debug.trace("<hr />Performing IE innerHTML fix up of Region: "+b+"<br /><br />"+Spry.Utils.encodeEntities(g)),g=Spry.Utils.fixUpIEInnerHTML(g));Spry.Data.Region.debug&&Spry.Debug.trace("<hr />Region template markup for '"+ b+"':<br /><br />"+Spry.Utils.encodeEntities(g));Spry.Utils.removeAllChildren(d);b=new Spry.Data.Region(d,b,f,g,c,j,h);Spry.Data.regionsArray[b.name]=b}else Spry.Debug.reportError("spry:region or spry:detailregion attribute has no data set!");else Spry.Debug.reportError("spry:region and spry:detailregion attributes require one or more data set names as values!")}Spry.Data.updateAllRegions()};Spry.Data.initRegions.nextUniqueRegionID=0; Spry.Data.updateRegion=function(a){if(a&&Spry.Data.regionsArray&&Spry.Data.regionsArray[a])try{Spry.Data.regionsArray[a].updateContent()}catch(b){Spry.Debug.reportError("Spry.Data.updateRegion("+a+") caught an exception: "+b+"\n")}};Spry.Data.getRegion=function(a){return Spry.Data.regionsArray[a]};Spry.Data.updateAllRegions=function(){if(Spry.Data.regionsArray)for(var a in Spry.Data.regionsArray)Spry.Data.updateRegion(a)}; Spry.Data.DataSet=function(){Spry.Utils.Notifier.call(this);this.name="";this.internalID=Spry.Data.DataSet.nextDataSetID++;this.curRowID=0;this.dataHash=this.unfilteredData=this.data=null;this.columnTypes={};this.filterDataFunc=this.filterFunc=null;this.distinctOnLoad=!1;this.sortOnLoad=null;this.sortOrderOnLoad="ascending";this.dataWasLoaded=this.keepSorted=!1;this.pendingRequest=null;this.lastSortColumns=[];this.lastSortOrder="";this.loadIntervalID=0};Spry.Data.DataSet.prototype=new Spry.Utils.Notifier; Spry.Data.DataSet.prototype.constructor=Spry.Data.DataSet;Spry.Data.DataSet.prototype.getData=function(){return this.data};Spry.Data.DataSet.prototype.getUnfilteredData=function(){return this.unfilteredData?this.unfilteredData:this.data};Spry.Data.DataSet.prototype.getLoadDataRequestIsPending=function(){return null!=this.pendingRequest};Spry.Data.DataSet.prototype.getDataWasLoaded=function(){return this.dataWasLoaded}; Spry.Data.DataSet.prototype.loadData=function(){var a=this;this.pendingRequest={};this.dataWasLoaded=!1;this.pendingRequest.timer=setTimeout(function(){a.pendingRequest=null;a.dataWasLoaded=!0;a.filterDataFunc&&a.filterData(a.filterDataFunc,!0);a.distinctOnLoad&&a.distinct();a.keepSorted&&a.getSortColumn()?a.sort(a.lastSortColumns,a.lastSortOrder):a.sortOnLoad&&a.sort(a.sortOnLoad,a.sortOrderOnLoad);a.filterFunc&&a.filter(a.filterFunc,!0);a.notifyObservers("onDataChanged")},0)}; Spry.Data.DataSet.prototype.cancelLoadData=function(){this.pendingRequest&&this.pendingRequest.timer&&clearTimeout(this.pendingRequest.timer);this.pendingRequest=null};Spry.Data.DataSet.prototype.getCurrentRow=function(){return!this.data?null:this.dataHash[this.curRowID]};Spry.Data.DataSet.prototype.setCurrentRow=function(a){if(this.curRowID!=a){var b={oldRowID:this.curRowID,newRowID:a};this.curRowID=a;this.notifyObservers("onCurrentRowChanged",b)}}; Spry.Data.DataSet.prototype.getRowNumber=function(a){if(a&&this.data&&this.data.length)for(var b=this.data.length,c=0;c<b;c++)if(this.data[c]==a)return c;return 0};Spry.Data.DataSet.prototype.getCurrentRowNumber=function(){return this.getRowNumber(this.getCurrentRow())};Spry.Data.DataSet.prototype.setCurrentRowNumber=function(a){!this.data||a>=this.data.length?Spry.Debug.trace("Invalid row number: "+a+"\n"):(a=this.data[a].ds_RowID,void 0==a||this.curRowID==a||this.setCurrentRow(a))}; Spry.Data.DataSet.prototype.setColumnType=function(a,b){a&&(this.columnTypes[a]=b)};Spry.Data.DataSet.prototype.getColumnType=function(a){return this.columnTypes[a]?this.columnTypes[a]:"string"};Spry.Data.DataSet.prototype.distinct=function(){if(this.data){var a=this.data;this.data=[];this.dataHash={};for(var b={},c=0,c=0;c<a.length;c++){var e=a[c],d="",f;for(f in e)"ds_RowID"!=f&&(d&&(d+=","),d+=f+':"'+e[f]+'"');b[d]||(this.data.push(e),this.dataHash[e.ds_RowID]=e,b[d]=!0)}}}; Spry.Data.DataSet.prototype.getSortColumn=function(){return this.lastSortColumns&&0<this.lastSortColumns.length?this.lastSortColumns[0]:""}; Spry.Data.DataSet.prototype.sort=function(a,b){if(a)if("string"==typeof a?a=[a,"ds_RowID"]:2>a.length&&"ds_RowID"!=a[0]&&a.push("ds_RowID"),"toggle"==b&&(b=0<this.lastSortColumns.length&&this.lastSortColumns[0]==a[0]&&"ascending"==this.lastSortOrder?"descending":"ascending"),b||(b="ascending"),"ascending"!=b&&"descending"!=b)Spry.Debug.reportError("Invalid sort order type specified: "+b+"\n");else{var c={oldSortColumns:this.lastSortColumns,oldSortOrder:this.lastSortOrder,newSortColumns:a,newSortOrder:b}; this.notifyObservers("onPreSort",c);for(var e=a[a.length-1],d=Spry.Data.DataSet.prototype.sort.getSortFunc(e,this.getColumnType(e),b),f=a.length-2;0<=f;f--)e=a[f],d=Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc(Spry.Data.DataSet.prototype.sort.getSortFunc(e,this.getColumnType(e),b),d);this.unfilteredData?(this.unfilteredData.sort(d),this.filterFunc&&this.filter(this.filterFunc,!0)):this.data.sort(d);this.lastSortColumns=a.slice(0);this.lastSortOrder=b;this.notifyObservers("onPostSort",c)}}; Spry.Data.DataSet.prototype.sort.getSortFunc=function(a,b,c){var e=null;return"number"==b?"ascending"==c?function(b,c){return b[a]-c[a]}:function(b,c){return c[a]-b[a]}:"date"==b?"ascending"==c?function(b,c){var e=b[a],g=c[a],e=e?new Date(e):0,g=g?new Date(g):0;return e-g}:function(b,c){var e=b[a],g=c[a],e=e?new Date(e):0,g=g?new Date(g):0;return g-e}:"ascending"==c?function(b,c){return b[a]<c[a]?-1:b[a]>c[a]?1:0}:function(b,c){return b[a]>c[a]?-1:b[a]<c[a]?1:0}}; Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc=function(a,b){return function(c,e){var d=a(c,e);0==d&&(d=b(c,e));return d}}; Spry.Data.DataSet.prototype.filterData=function(a,b){var c=!1;if(a){if(this.filterDataFunc=a,this.dataWasLoaded&&(this.unfilteredData&&this.unfilteredData.length||this.data&&this.data.length)){if(this.unfilteredData)this.data=this.unfilteredData,this.unfilteredData=null;c=this.data;this.data=[];this.dataHash={};for(var e=0;e<c.length;e++){var d=a(this,c[e],e);d&&(this.data.push(d),this.dataHash[d.ds_RowID]=d)}c=!0}}else this.filterDataFunc=null,c=!0;c&&(b||(this.disableNotifications(),this.filterFunc&& this.filter(this.filterFunc,!0),this.enableNotifications()),this.notifyObservers("onDataChanged"))}; Spry.Data.DataSet.prototype.filter=function(a){var b=!1;if(a){if(this.filterFunc=a,this.dataWasLoaded&&(this.unfilteredData||this.data&&this.data.length)){if(!this.unfilteredData)this.unfilteredData=this.data;b=this.unfilteredData;this.data=[];for(var c=0;c<b.length;c++){var e=a(this,b[c],c);e&&this.data.push(e)}b=!0}}else if(this.filterFunc&&this.unfilteredData)this.data=this.unfilteredData,this.filterFunc=this.unfilteredData=null,b=!0;b&&this.notifyObservers("onDataChanged")}; Spry.Data.DataSet.prototype.startLoadInterval=function(a){this.stopLoadInterval();if(0<a){var b=this;this.loadInterval=a;this.loadIntervalID=setInterval(function(){b.loadData()},a)}};Spry.Data.DataSet.prototype.stopLoadInterval=function(){this.loadIntervalID&&clearInterval(this.loadIntervalID);this.loadInterval=0;this.loadIntervalID=null};Spry.Data.DataSet.nextDataSetID=0; Spry.Data.XMLDataSet=function(a,b,c){Spry.Data.DataSet.call(this);this.url=a;this.xpath=b;this.doc=null;this.dataSetsForDataRefStrings=[];this.hasDataRefStrings=!1;this.useCache=!0;this.requestInfo=new Spry.Utils.loadURL.Request;this.requestInfo.extractRequestOptions(c,!0);if("POST"==this.requestInfo.method){if(!this.requestInfo.headers)this.requestInfo.headers={};this.requestInfo.headers["Content-Type"]||(this.requestInfo.headers["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8")}Spry.Utils.setOptions(this, c,!0);this.recalculateDataSetDependencies();0<this.loadInterval&&this.startLoadInterval(this.loadInterval)};Spry.Data.XMLDataSet.prototype=new Spry.Data.DataSet;Spry.Data.XMLDataSet.prototype.constructor=Spry.Data.XMLDataSet; Spry.Data.XMLDataSet.prototype.recalculateDataSetDependencies=function(){this.hasDataRefStrings=!1;if(this.url){for(var a=0,a=0;a<this.dataSetsForDataRefStrings.length;a++){var b=this.dataSetsForDataRefStrings[a];b&&b.removeObserver(this)}this.dataSetsForDataRefStrings=[];var c=[this.url,this.xpath,this.requestInfo.postData];(a=this.requestInfo.postData)&&"string"==typeof a&&c.push(a);for(var e=0,d=0;d<c.length;d++)for(var f=Spry.Data.Region.getTokensFromStr(c[d]),a=0;f&&a<f.length;a++)if(-1!=f[a].search(/{[^}:]+::[^}]+}/)){var h= f[a].replace(/^\{|::.*\}/g,""),b=null;if(!this.dataSetsForDataRefStrings[h]){try{b=eval(h)}catch(g){b=null}if(h&&b)this.dataSetsForDataRefStrings[h]=b,this.dataSetsForDataRefStrings[e++]=b,this.hasDataRefStrings=!0}}for(a=0;a<this.dataSetsForDataRefStrings.length;a++)b=this.dataSetsForDataRefStrings[a],b.addObserver(this)}}; Spry.Data.XMLDataSet.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.XMLDataSet.prototype.onCurrentRowChanged=function(){this.attemptLoadData()};Spry.Data.XMLDataSet.prototype.onPostSort=function(){this.attemptLoadData()};Spry.Data.XMLDataSet.prototype.onDataChanged=function(){this.attemptLoadData()}; Spry.Data.XMLDataSet.prototype.loadData=function(){if(this.url&&this.xpath){this.cancelLoadData();var a=this.url,b=this.requestInfo.postData;if(this.hasDataRefStrings){for(var a=!0,c=0;c<this.dataSetsForDataRefStrings.length;c++){var e=this.dataSetsForDataRefStrings[c];e.getLoadDataRequestIsPending()?a=!1:e.getDataWasLoaded()||(e.loadData(),a=!1)}if(!a)return;a=Spry.Data.Region.processDataRefString(null,this.url,this.dataSetsForDataRefStrings);if(!a)return;b&&"string"==typeof b&&(b=Spry.Data.Region.processDataRefString(null, b,this.dataSetsForDataRefStrings))}this.notifyObservers("onPreLoad");this.data=null;this.dataWasLoaded=!1;this.dataHash=this.unfilteredData=null;this.curRowID=0;c=this.requestInfo.clone();c.url=a;c.postData=b;this.pendingRequest={};this.pendingRequest.data=Spry.Data.XMLDataSet.LoadManager.loadData(c,this,this.useCache)}}; Spry.Data.XMLDataSet.prototype.cancelLoadData=function(){if(this.pendingRequest)Spry.Data.XMLDataSet.LoadManager.cancelLoadData(this.pendingRequest.data,this),this.pendingRequest=null};Spry.Data.XMLDataSet.prototype.getURL=function(){return this.url};Spry.Data.XMLDataSet.prototype.setURL=function(a,b){if(this.url!=a)this.url=a,b&&this.requestInfo.extractRequestOptions(b),this.cancelLoadData(),this.recalculateDataSetDependencies(),this.dataWasLoaded=!1};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,this.dataWasLoaded&&this.doc&&this.setDataFromDoc(this.doc)}; Spry.Data.XMLDataSet.prototype.setDataFromDoc=function(a){var b=this.pendingRequest=null;(b=Spry.Utils.getRecordSetFromXMLDoc(a,Spry.Data.Region.processDataRefString(null,this.xpath,this.dataSetsForDataRefStrings)))?(this.doc=b.xmlDoc,this.data=b.data,this.dataHash=b.dataHash,this.dataWasLoaded=null!=this.doc,this.filterDataFunc&&this.filterData(this.filterDataFunc,!0),this.distinctOnLoad&&this.distinct(),this.keepSorted&&this.getSortColumn()?this.sort(this.lastSortColumns,this.lastSortOrder):this.sortOnLoad&& this.sort(this.sortOnLoad,this.sortOrderOnLoad),this.filterFunc&&this.filter(this.filterFunc,!0),this.curRowID=this.data&&0<this.data.length?this.data[0].ds_RowID:0,this.notifyObservers("onPostLoad"),this.notifyObservers("onDataChanged")):Spry.Debug.reportError("Spry.Data.XMLDataSet.setDataFromDoc() failed to create dataSet '"+this.name+"'for '"+this.xpath+"' - "+this.url+"\n")};Spry.Data.XMLDataSet.prototype.onRequestResponse=function(a){this.setDataFromDoc(a.doc)}; Spry.Data.XMLDataSet.prototype.onRequestError=function(a,b){this.notifyObservers("onLoadError",b)};Spry.Data.XMLDataSet.LoadManager={};Spry.Data.XMLDataSet.LoadManager.cache=[];Spry.Data.XMLDataSet.LoadManager.CachedRequest=function(a){Spry.Utils.Notifier.call(this);this.reqInfo=a;this.timer=this.doc=null;this.state=Spry.Data.XMLDataSet.LoadManager.CachedRequest.NOT_LOADED};Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype=new Spry.Utils.Notifier; Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype.constructor=Spry.Data.XMLDataSet.LoadManager.CachedRequest;Spry.Data.XMLDataSet.LoadManager.CachedRequest.NOT_LOADED=1;Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED=2;Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_FAILED=3;Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL=4; Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype.loadDataCallback=function(a){if(4==a.xhRequest.readyState){var b=a.xhRequest.responseXML;if(200!=a.xhRequest.status&&0==a.xhRequest.status&&a.xhRequest.responseText&&(!b||!b.firstChild))b=Spry.Utils.stringToXMLDoc(a.xhRequest.responseText);!b||!b.firstChild||"parsererror"==b.firstChild.nodeName?(this.state=Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_FAILED,this.notifyObservers("onRequestError",a)):(this.doc=b,this.state=Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL, this.notifyObservers("onRequestResponse",a));this.observers.length=0}};Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype.loadData=function(){var a=this;this.cancelLoadData();this.doc=null;this.state=Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED;var b=this.reqInfo.clone();b.successCallback=function(b){a.loadDataCallback(b)};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.XMLDataSet.LoadManager.CachedRequest.prototype.cancelLoadData=function(){if(this.state==Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED){if(this.timer)this.timer.clearTimeout(),this.timer=null;this.doc=null;this.state=Spry.Data.XMLDataSet.LoadManager.CachedRequest.NOT_LOADED}};Spry.Data.XMLDataSet.LoadManager.getCacheKey=function(a){return a.method+"::"+a.url+"::"+a.postData+"::"+a.username}; Spry.Data.XMLDataSet.LoadManager.loadData=function(a,b,c){if(!a)return null;var e=null,d=null;c&&(d=Spry.Data.XMLDataSet.LoadManager.getCacheKey(a),e=Spry.Data.XMLDataSet.LoadManager.cache[d]);if(e){if(e.state==Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED)return b&&e.addObserver(b),e;if(e.state==Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL)return b&&setTimeout(function(){b.setDataFromDoc(e.doc)},0),e}e||(e=new Spry.Data.XMLDataSet.LoadManager.CachedRequest(a),c&& (Spry.Data.XMLDataSet.LoadManager.cache[d]=e,e.addObserver({onRequestError:function(){Spry.Data.XMLDataSet.LoadManager.cache[d]=void 0}})));b&&e.addObserver(b);e.loadData();return e};Spry.Data.XMLDataSet.LoadManager.cancelLoadData=function(a,b){a&&(b?a.removeObserver(b):a.cancelLoadData())}; Spry.Data.Region=function(a,b,c,e,d,f,h){this.regionNode=a;this.name=b;this.isDetailRegion=c;this.data=e;this.dataSets=d;this.hasBehaviorAttributes=h;this.currentState=this.tokens=null;this.states={ready:!0};Spry.Utils.setOptions(this.states,f);for(a=0;a<this.dataSets.length;a++){b=this.dataSets[a];try{b&&b.addObserver(this)}catch(g){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.addObserver=function(a,b){var c=Spry.Data.Region.notifiers[a];c||(c=new Spry.Utils.Notifier,Spry.Data.Region.notifiers[a]=c);c.addObserver(b)};Spry.Data.Region.removeObserver=function(a,b){var c=Spry.Data.Region.notifiers[a];c&&c.removeObserver(b)};Spry.Data.Region.notifyObservers=function(a,b){var c=Spry.Data.Region.notifiers[b];c&&c.notifyObservers(a,{regionID:b})}; 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.setState=function(a,b){this.currentState=a;if(this.states[a]){b||Spry.Data.Region.notifyObservers("onPreUpdate",this.name);var c=this.transform();Spry.Data.Region.debug&&Spry.Debug.trace("<hr />Generated region markup for '"+this.name+"':<br /><br />"+Spry.Utils.encodeEntities(c));this.regionNode.innerHTML=c;this.hasBehaviorAttributes&&this.attachBehaviors();b||Spry.Data.Region.notifyObservers("onPostUpdate",this.name)}};Spry.Data.Region.prototype.getDataSets=function(){return this.dataSets}; Spry.Data.Region.prototype.addDataSet=function(a){if(a){if(!this.dataSets)this.dataSets=[];for(var b=0;b<this.dataSets.length;b++)if(this.dataSets[b]==a)return;this.dataSets.push(a);a.addObserver(this)}};Spry.Data.Region.prototype.removeDataSet=function(a){if(a&&!this.dataSets)for(var b=0;b<this.dataSets.length;b++)if(this.dataSets[b]==a){this.dataSets.splice(b,1);a.removeObserver(this);break}};Spry.Data.Region.prototype.onPreLoad=function(){"loading"!=this.currentState&&this.setState("loading")}; Spry.Data.Region.prototype.onLoadError=function(){"error"!=this.currentState&&this.setState("error");Spry.Data.Region.notifyObservers("onError",this.name)};Spry.Data.Region.prototype.onCurrentRowChanged=function(){this.isDetailRegion&&this.updateContent()};Spry.Data.Region.prototype.onPostSort=function(){this.updateContent()};Spry.Data.Region.prototype.onDataChanged=function(){this.updateContent()};Spry.Data.Region.enableBehaviorAttributes=!0;Spry.Data.Region.behaviorAttrs={}; Spry.Data.Region.behaviorAttrs["spry:select"]={attach:function(a,b){var c=null;try{c=a.attributes.getNamedItem("spry:selectgroup").value}catch(e){}c||(c="default");Spry.Utils.addEventListener(a,"click",function(){Spry.Utils.SelectionManager.select(c,a,b)},!1);a.attributes.getNamedItem("spry:selected")&&Spry.Utils.SelectionManager.select(c,a,b)}}; Spry.Data.Region.behaviorAttrs["spry:hover"]={attach:function(a,b){Spry.Utils.addEventListener(a,"mouseover",function(){Spry.Utils.addClassName(a,b)},!1);Spry.Utils.addEventListener(a,"mouseout",function(){Spry.Utils.removeClassName(a,b)},!1)}};Spry.Data.Region.prototype.attachBehaviors=function(){Spry.Utils.getNodesByFunc(this.regionNode,function(a){if(!a)return!1;try{for(var b=a.attributes,c=0;c<b.length;c++){var e=b[c],d=Spry.Data.Region.behaviorAttrs[e.nodeName.toLowerCase()];d&&d.attach(a,e.value)}}catch(f){}return!1})}; Spry.Data.Region.prototype.updateContent=function(){var a=!0,b=this.getDataSets();if(!b||1>b.length)Spry.Debug.reportError("updateContent(): Region '"+this.name+"' has no data set!\n");else{for(var c=0;c<b.length;c++){var e=b[c];e&&(e.getLoadDataRequestIsPending()?a=!1:e.getDataWasLoaded()||(e.loadData(),a=!1))}a?this.setState("ready"):Spry.Data.Region.notifyObservers("onLoadingData",this.name)}};Spry.Data.Region.prototype.clearContent=function(){Spry.Utils.removeAllChildren(this.regionNode)}; Spry.Data.Region.processContentPI=function(a){for(var b="",c=/<\!--\s*<\/?spry:content\s*[^>]*>\s*--\>/mg,e=0,d=0;a.length;){var f=c.exec(a);if(!f||!f[0]){b+=a.substr(e,a.length-e);break}!d&&f.index!=e&&(b+=a.substr(e,f.index-e));-1!=f[0].search(/<\//)?(--d,d&&Spry.Debug.reportError("Nested spry:content regions are not allowed!\n")):(++d,e=f[0].replace(/.*\bdataref="/,""),b+=e.replace(/".*$/,""));e=c.lastIndex}return b}; Spry.Data.Region.prototype.tokenizeData=function(a){if(!a)return null;var b=new Spry.Data.Region.Token(Spry.Data.Region.Token.LIST_TOKEN,null,null,null),c=[],a=Spry.Data.Region.processContentPI(a);c.push(b);for(var e=/((<\!--\s*){0,1}<\/{0,1}spry:[^>]+>(\s*--\>){0,1})|((\{|%7[bB])[^\}\s%]+(\}|%7[dD]))/mg,d=0;a.length;){var f=e.exec(a),h=null;if(!f||!f[0]){d=a.substr(d,a.length-d);h=new Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN,null,d,d);c[c.length-1].addChild(h);break}f.index!=d&& (d=a.substr(d,f.index-d),h=new Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN,null,d,d),c[c.length-1].addChild(h));if(-1!=f[0].search(/^({|%7[bB])/)){var d=f[0],f=f[0],d=d.replace(/^({|%7[bB])/,""),d=d.replace(/(}|%7[dD])$/,""),h=null,g=d.split(/::/);1<g.length&&(h=g[0],d=g[1]);f=f.replace(/^%7[bB]/,"{");f=f.replace(/%7[dD]$/,"}");h=new Spry.Data.Region.Token(Spry.Data.Region.Token.VALUE_TOKEN,h,d,new String(f));c[c.length-1].addChild(h)}else if("<"==f[0].charAt(0))if(h=f[0].replace(/^(<\!--\s*){0,1}<\/?/, ""),h=h.replace(/>(\s*--\>){0,1}|\s.*$/,""),-1!=f[0].search(/<\//)){if(c[c.length-1].tokenType!=Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN)return Spry.Debug.reportError("Invalid processing instruction close tag: "+h+" -- "+f[0]+"\n"),null;c.pop()}else if(Spry.Data.Region.PI.instructions[h]){d=null;g="";if(-1!=f[0].search(/^.*\bselect=\"/)&&(g=f[0].replace(/^.*\bselect=\"/,""),g=g.replace(/".*$/,"")))try{d=eval(g)}catch(j){Spry.Debug.reportError("Caught exception in tokenizeData() while trying to retrieve data set ("+ g+"): "+j+"\n"),d=null,g=""}var k=null;-1!=f[0].search(/^.*\btest=\"/)&&(k=f[0].replace(/^.*\btest=\"/,""),k=k.replace(/".*$/,""),k=Spry.Utils.decodeEntities(k));var i=null;-1!=f[0].search(/^.*\bname=\"/)&&(i=f[0].replace(/^.*\bname=\"/,""),i=i.replace(/".*$/,""),i=Spry.Utils.decodeEntities(i));h=new Spry.Data.Region.Token.PIData(h,g,k,i);h=new Spry.Data.Region.Token(Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN,d,h,new String(f[0]));c[c.length-1].addChild(h);c.push(h)}else return Spry.Debug.reportError("Unsupported region processing instruction: "+ f[0]+"\n"),null;else return Spry.Debug.reportError("Invalid region token: "+f[0]+"\n"),null;d=e.lastIndex}return b};Spry.Data.Region.prototype.processTokenChildren=function(a,b){for(var c=[""],e=a.children.length,d=a.children,f=0;f<e;f++)c.push(this.processTokens(d[f],b));return c.join("")}; Spry.Data.Region.prototype.processTokens=function(a,b){if(!b&&(b=new Spry.Data.Region.ProcessingContext(this),!b))return"";var c="",e=0;switch(a.tokenType){case Spry.Data.Region.Token.LIST_TOKEN:c+=this.processTokenChildren(a,b);break;case Spry.Data.Region.Token.STRING_TOKEN:c+=a.data;break;case Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN:if("spry:repeat"==a.data.name){var d=null;if(d=a.dataSet?a.dataSet:this.dataSets[0]){var f=b.getDataSetContext(d);if(!f){Spry.Debug.reportError("processTokens() failed to get a data set context!\n"); break}var h=f.getNumRows();d.getData();f.pushState();for(e=0;e<h;e++){f.setRowIndex(e);d=!0;if(a.data.jsExpr){var g=Spry.Data.Region.processDataRefString(b,a.data.jsExpr,null,!0);try{d=Spry.Utils.eval(g)}catch(j){Spry.Debug.trace("Caught exception in Spry.Data.Region.prototype.processTokens while evaluating: "+g+"\n Exception:"+j+"\n"),d=!0}}d&&(c+=this.processTokenChildren(a,b))}f.popState()}}else if("spry:if"==a.data.name){d=!0;if(a.data.jsExpr){g=Spry.Data.Region.processDataRefString(b,a.data.jsExpr, null,!0);try{d=Spry.Utils.eval(g)}catch(k){Spry.Debug.trace("Caught exception in Spry.Data.Region.prototype.processTokens while evaluating: "+g+"\n Exception:"+k+"\n"),d=!0}}d&&(c+=this.processTokenChildren(a,b))}else if("spry:choose"==a.data.name){h=f=null;d=!1;for(e=e=0;e<a.children.length;e++){var i=a.children[e];if(i.tokenType==Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN)if("spry:when"==i.data.name){if(i.data.jsExpr){g=Spry.Data.Region.processDataRefString(b,i.data.jsExpr,null,!0); try{d=Spry.Utils.eval(g)}catch(t){Spry.Debug.trace("Caught exception in Spry.Data.Region.prototype.processTokens while evaluating: "+g+"\n Exception:"+t+"\n"),d=!1}if(d){h=i;break}}}else"spry:default"==i.data.name&&(f=i)}!h&&f&&(h=f);h&&(c+=this.processTokenChildren(h,b))}else if("spry:state"==a.data.name){if(!a.data.regionState||a.data.regionState==this.currentState)c+=this.processTokenChildren(a,b)}else return Spry.Debug.reportError("processTokens(): Unknown processing instruction: "+a.data.name+ "\n"),"";break;case Spry.Data.Region.Token.VALUE_TOKEN:d=a.dataSet;!d&&this.dataSets&&0<this.dataSets.length&&this.dataSets[0]&&(d=this.dataSets[0]);if(!d)return Spry.Debug.reportError("processTokens(): Value reference has no data set specified: "+a.regionStr+"\n"),"";f=b.getDataSetContext(d);if(!f)return Spry.Debug.reportError("processTokens: Failed to get a data set context!\n"),"";d=f.getDataSet();"ds_RowNumber"==a.data?c+=f.getRowIndex():"ds_RowNumberPlus1"==a.data?c+=f.getRowIndex()+1:"ds_RowCount"== a.data?c+=f.getNumRows():"ds_UnfilteredRowCount"==a.data?c+=f.getNumRows(!0):"ds_CurrentRowNumber"==a.data?c+=d.getRowNumber(d.getCurrentRow()):"ds_CurrentRowID"==a.data?c+=d.curRowID:"ds_EvenOddRow"==a.data?c+=f.getRowIndex()%2?Spry.Data.Region.evenRowClassName:Spry.Data.Region.oddRowClassName:"ds_SortOrder"==a.data?c+=d.lastSortOrder?d.lastSortOrder:"":"ds_SortColumn"==a.data?c+=d.getSortColumn():(d=f.getCurrentRow())&&(c+=d[a.data]);break;default:Spry.Debug.reportError("processTokens(): Invalid token type: "+ a.regionStr+"\n")}return c};Spry.Data.Region.prototype.transform=function(){if(this.data&&!this.tokens)this.tokens=this.tokenizeData(this.data);return!this.tokens?"":this.processTokens(this.tokens,null)};Spry.Data.Region.PI={};Spry.Data.Region.PI.instructions={}; Spry.Data.Region.PI.buildOpenTagForValueAttr=function(a,b,c){if(!a||!b)return"";var e="";try{var d=a.attributes.getNamedItem(b);d&&d.value&&(e=Spry.Utils.encodeEntities(d.value))}catch(f){e=""}return!e?(Spry.Debug.reportError(b+" attribute requires a JavaScript expression that returns true or false!\n"),""):"<"+Spry.Data.Region.PI.instructions[b].tagName+" "+c+'="'+e+'">'};Spry.Data.Region.PI.buildOpenTagForTest=function(a,b){return Spry.Data.Region.PI.buildOpenTagForValueAttr(a,b,"test")}; Spry.Data.Region.PI.buildOpenTagForState=function(a,b){return Spry.Data.Region.PI.buildOpenTagForValueAttr(a,b,"name")}; Spry.Data.Region.PI.buildOpenTagForRepeat=function(a,b){if(!a||!b)return"";var c="";try{var e=a.attributes.getNamedItem(b);if(e&&e.value)c=e.value,c=c.replace(/\s/g,"")}catch(d){c=""}if(!c)return Spry.Debug.reportError(b+" attribute requires a data set name!\n"),"";e="";try{var f=a.attributes.getNamedItem("spry:test");f&&(f.value&&(e=' test="'+Spry.Utils.encodeEntities(f.value)+'"'),a.attributes.removeNamedItem(f.nodeName))}catch(h){e=""}return"<"+Spry.Data.Region.PI.instructions[b].tagName+' select="'+ c+'"'+e+">"};Spry.Data.Region.PI.buildOpenTagForContent=function(a,b){if(!a||!b)return"";var c="";try{var e=a.attributes.getNamedItem(b);e&&e.value&&(c=Spry.Utils.encodeEntities(e.value))}catch(d){c=""}return!c?(Spry.Debug.reportError(b+" attribute requires a data reference!\n"),""):"<"+Spry.Data.Region.PI.instructions[b].tagName+' dataref="'+c+'">'};Spry.Data.Region.PI.buildOpenTag=function(a,b){return"<"+Spry.Data.Region.PI.instructions[b].tagName+">"}; Spry.Data.Region.PI.buildCloseTag=function(a,b){return"</"+Spry.Data.Region.PI.instructions[b].tagName+">"};Spry.Data.Region.PI.instructions["spry:state"]={tagName:"spry:state",childrenOnly:!1,getOpenTag:Spry.Data.Region.PI.buildOpenTagForState,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:if"]={tagName:"spry:if",childrenOnly:!1,getOpenTag:Spry.Data.Region.PI.buildOpenTagForTest,getCloseTag:Spry.Data.Region.PI.buildCloseTag}; Spry.Data.Region.PI.instructions["spry:repeat"]={tagName:"spry:repeat",childrenOnly:!1,getOpenTag:Spry.Data.Region.PI.buildOpenTagForRepeat,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:repeatchildren"]={tagName:"spry:repeat",childrenOnly:!0,getOpenTag:Spry.Data.Region.PI.buildOpenTagForRepeat,getCloseTag:Spry.Data.Region.PI.buildCloseTag}; Spry.Data.Region.PI.instructions["spry:choose"]={tagName:"spry:choose",childrenOnly:!0,getOpenTag:Spry.Data.Region.PI.buildOpenTag,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:when"]={tagName:"spry:when",childrenOnly:!1,getOpenTag:Spry.Data.Region.PI.buildOpenTagForTest,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:default"]={tagName:"spry:default",childrenOnly:!1,getOpenTag:Spry.Data.Region.PI.buildOpenTag,getCloseTag:Spry.Data.Region.PI.buildCloseTag}; Spry.Data.Region.PI.instructions["spry:content"]={tagName:"spry:content",childrenOnly:!0,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".split(",");Spry.Data.Region.getTokensFromStr=function(a){return!a?null:a.match(/{[^}]+}/g)}; Spry.Data.Region.processDataRefString=function(a,b,c,e){if(!b)return"";if(!a&&!c)return b;for(var d="",f=RegExp("\\{([^\\}:]+::)?[^\\}]+\\}","g"),h=0;h<b.length;){var g=f.exec(b);if(!g||!g[0]){d+=b.substr(h,b.length-h);break}g.index!=h&&(d+=b.substr(h,g.index-h));var j="";-1!=g[0].search(/^\{[^}:]+::/)&&(j=g[0].replace(/^\{|::.*/g,""));var k=g[0].replace(/^\{|.*::|\}/g,""),i=null;a?(i=a.getDataSetContext(j),"ds_RowNumber"==k?(d+=i.getRowIndex(),i=null):"ds_RowNumberPlus1"==k?(d+=i.getRowIndex()+1, i=null):"ds_RowCount"==k?(d+=i.getNumRows(),i=null):"ds_UnfilteredRowCount"==k?(d+=i.getNumRows(!0),i=null):"ds_CurrentRowNumber"==k?(j=i.getDataSet(),d+=j.getRowNumber(j.getCurrentRow()),i=null):"ds_CurrentRowID"==k?(j=i.getDataSet(),d+=""+j.curRowID,i=null):"ds_EvenOddRow"==k?(d+=i.getRowIndex()%2?Spry.Data.Region.evenRowClassName:Spry.Data.Region.oddRowClassName,i=null):"ds_SortOrder"==k?((j=i.getDataSet().lastSortOrder)&&(d+=j),i=null):"ds_SortColumn"==k?(d+=i.getDataSet().getSortColumn(),i=null): i=a.getCurrentRowForDataSet(j)):(j=j?c[j]:c[0])&&(i=j.getCurrentRow());i&&(d+=e?Spry.Utils.escapeQuotesAndLineBreaks(""+i[k]):i[k]);if(h==f.lastIndex){a=g.index+g[0].length;a<b.length&&(d+=b.substr(a));break}h=f.lastIndex}return d}; Spry.Data.Region.strToDataSetsArray=function(a,b){var c=[],e={};if(!a)return c;for(var a=a.replace(/\s+/g," "),a=a.replace(/^\s|\s$/g,""),d=a.split(/ /),f=0;f<d.length;f++)if(d[f]&&!Spry.Data.Region.PI.instructions[d[f]])try{var h=eval(d[f]);e[d[f]]||(b?c.push(d[f]):c.push(h),e[d[f]]=!0)}catch(g){}return c}; Spry.Data.Region.DSContext=function(a){var b=[-1];this.resetAll=function(){b=[a.getCurrentRow()]};this.getDataSet=function(){return a};this.getNumRows=function(b){return(b=b?a.getUnfilteredData():a.getData())?b.length:0};this.getCurrentRow=function(){if(2>b.length||0>b[b.length-1])return a.getCurrentRow();var c=a.getData(),e=b[b.length-1];return 0>e||e>c.length?(Spry.Debug.reportError("Invalid index used in Spry.Data.Region.DSContext.getCurrentRow()!\n"),null):c[e]};this.getRowIndex=function(){var c= b[b.length-1];return 0<=c?c:a.getRowNumber(a.getCurrentRow())};this.setRowIndex=function(a){b[b.length-1]=a};this.pushState=function(){b.push(b[b.length-1])};this.popState=function(){2>b.length?Spry.Debug.reportError("Stack underflow in Spry.Data.Region.DSContext.popState()!\n"):b.pop()}}; Spry.Data.Region.ProcessingContext=function(a){var b=this,c=[];if(a&&a.dataSets)for(var e=0;e<a.dataSets.length;e++)c.push(new Spry.Data.Region.DSContext(a.dataSets[e]));this.getDataSetContext=function(a){if(!a)return 0<c.length?c[0]:null;if("string"==typeof a){try{a=eval(a)}catch(b){a=null}if(!a)return null}for(var e=0;e<c.length;e++){var g=c[e];if(g.getDataSet()==a)return g}return null};this.getCurrentRowForDataSet=function(a){return(a=b.getDataSetContext(a))?a.getCurrentRow():null}}; Spry.Data.Region.Token=function(a,b,c,e){this.tokenType=a;this.dataSet=b;this.data=c;this.regionStr=e;this.children=this.parent=null};Spry.Data.Region.Token.prototype.addChild=function(a){if(a){if(!this.children)this.children=[];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(a,b,c,e){this.name=a;this.data=b;this.jsExpr=c;this.regionState=e};Spry.Utils.addLoadListener(function(){setTimeout(function(){Spry.Data.initRegions()},0)});
