﻿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(e,c,f,d,g){var a=new Spry.Utils.loadURL.Request;a.method=e;a.url=c;a.async=f;a.successCallback=d;Spry.Utils.setOptions(a,g);try{a.xhRequest=Spry.Utils.createXMLHttpRequest();if(!a.xhRequest)return null;if(a.async)a.xhRequest.onreadystatechange=function(){Spry.Utils.loadURL.callback(a)};a.xhRequest.open(a.method,a.url,a.async,a.username,a.password);if(a.headers)for(var b in a.headers)a.xhRequest.setRequestHeader(b,a.headers[b]);a.xhRequest.send(a.postData);if(!a.async)Spry.Utils.loadURL.callback(a)}catch(h){if(a.errorCallback)a.errorCallback(a);else Spry.Debug.reportError("Exception caught while loading "+c+": "+h);a=null}return a};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,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(a,e){if(!a)return;var d=Spry.Utils.loadURL.Request.props,f=d.length;for(var c=0;c<f;c++){var b=d[c];if(a[b]!=undefined){this[b]=a[b];if(e)a[b]=undefined}}};Spry.Utils.loadURL.Request.prototype.clone=function(){var c=Spry.Utils.loadURL.Request.props,d=c.length,a=new Spry.Utils.loadURL.Request;for(var b=0;b<d;b++)a[c[b]]=this[c[b]];if(this.headers){a.headers={};Spry.Utils.setOptions(a.headers,this.headers)}return a};Spry.Utils.setInnerHTML=function(a,e,f){if(!a)return;a=Spry.$(a);var d="<script[^>]*>(.|s|\n|\r)*?</sc"+"ript>";a.innerHTML=e.replace(new RegExp(d,"img"),"");if(f)return;var b=e.match(new RegExp(d,"img"));if(b){var g=b.length;for(var c=0;c<g;c++){var h=b[c].replace(/<script[^>]*>[\s\r\n]*(<\!--)?|(-->)?[\s\r\n]*<\/script>/img,"");Spry.Utils.eval(h)}}};Spry.Utils.updateContent=function(b,c,a,d){Spry.Utils.loadURL("GET",c,true,function(d){Spry.Utils.setInnerHTML(b,d.xhRequest.responseText);if(a)a(b,c)},d)};if(!Spry.$$){Spry.Utils.addEventListener=function(a,b,c,d){try{a=Spry.$(a);if(a.addEventListener)a.addEventListener(b,c,d);else if(a.attachEvent)a.attachEvent("on"+b,c)}catch(e){}};Spry.Utils.removeEventListener=function(a,b,c,d){try{a=Spry.$(a);if(a.removeEventListener)a.removeEventListener(b,c,d);else if(a.detachEvent)a.detachEvent("on"+b,c)}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.getAttribute=function(a,c){a=Spry.$(a);if(!a||!c)return null;try{var b=a.getAttribute(c)}catch(d){b==undefined}if(b==undefined&&c.search(/:/)!=-1)try{var b=a.getAttribute(c.replace(/:/,""))}catch(d){b==undefined}return b};Spry.Utils.setAttribute=function(a,b,c){a=Spry.$(a);if(!a||!b)return;if(b=="class")a.className=c;else{try{a.setAttribute(b,c)}catch(d){}if(b.search(/:/)!=-1&&a.getAttribute(b)==undefined)a.setAttribute(b.replace(/:/,""),c)}};Spry.Utils.removeAttribute=function(a,b){a=Spry.$(a);if(!a||!b)return;try{a.removeAttribute(b)}catch(c){}if(b.search(/:/)!=-1)a.removeAttribute(b.replace(/:/,""));if(b=="class")a.removeAttribute("className")};Spry.Utils.addClassName=function(a,b){a=Spry.$(a);if(!a||!b||a.className&&a.className.search(new RegExp("\\b"+b+"\\b"))!=-1)return;a.className+=(a.className?" ":"")+b};Spry.Utils.removeClassName=function(a,b){a=Spry.$(a);if(!a||!b||a.className&&a.className.search(new RegExp("\\b"+b+"\\b"))==-1)return;a.className=a.className.replace(new RegExp("\\s*\\b"+b+"\\b","g"),"")};Spry.$=function(a){if(arguments.length>1){for(var b=0,c=[],d=arguments.length;b<d;b++)c.push(Spry.$(arguments[b]));return c}if(typeof a=="string")a=document.getElementById(a);return a}}Spry.Utils.getObjectByName=function(e){var a=null;if(e){var b=window,d=e.split(".");for(var c=0;b&&c<d.length;c++){a=b[d[c]];b=a}}return a};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(a){var b=Spry.Utils.decodeEntities.div;if(!b){b=document.createElement("div");Spry.Utils.decodeEntities.div=b;if(!b)return a}b.innerHTML=a;if(b.childNodes.length==1&&b.firstChild.nodeType==3&&b.firstChild.nextSibling==null)a=b.firstChild.data;else{a=a.replace(/&lt;/gi,"<");a=a.replace(/&gt;/gi,">");a=a.replace(/&quot;/gi,'"');a=a.replace(/&amp;/gi,"&")}return a};Spry.Utils.fixupIETagAttributes=function(e){var c="",h=e.match(/^<[^\s>]+\s*/)[0],i=e.match(/\s*\/?>$/)[0],b=e.replace(/^<[^\s>]+\s*|\s*\/?>/g,"");c+=h;if(b){var d=0,a=0;while(d<b.length){while(b.charAt(a)!="="&&a<b.length)++a;if(a>=b.length){c+=b.substring(d,a);break}++a;c+=b.substring(d,a);d=a;if(b.charAt(a)=='"'||b.charAt(a)=="'"){var g=a++;while(a<b.length){if(b.charAt(a)==b.charAt(g)){a++;break}else if(b.charAt(a)=="\\")a++;a++}c+=b.substring(d,a);d=a}else{c+='"';var f=b.slice(a).search(/\s/);a=f!=-1?a+f:b.length;c+=b.slice(d,a);c+='"';d=a}}}c+=i;return c};Spry.Utils.fixUpIEInnerHTML=function(d){var b="",f=new RegExp("<\\!--|<\\!\\[CDATA\\[|<\\w+[^<>]*>|-->|\\]\\](>|&gt;)","g"),c=0,e=0;while(d.length){var a=f.exec(d);if(!a||!a[0]){b+=d.substr(c,d.length-c);break}if(a.index!=c)b+=d.substr(c,a.index-c);if(a[0]=="<!--"||a[0]=="<![CDATA["){++e;b+=a[0]}else if(a[0]=="-->"||a[0]=="]]>"||e&&a[0]=="]]&gt;"){--e;b+=a[0]}else if(!e&&a[0].charAt(0)=="<")b+=Spry.Utils.fixupIETagAttributes(a[0]);else b+=a[0];c=f.lastIndex}return b};Spry.Utils.stringToXMLDoc=function(c){var a=null;try{var b=new ActiveXObject("Microsoft.XMLDOM");b.async=false;b.loadXML(c);a=b}catch(e){try{var d=new DOMParser;a=d.parseFromString(c,"text/xml")}catch(f){Spry.Debug.reportError("Caught exception in Spry.Utils.stringToXMLDoc(): "+f+"\n");a=null}}return a};Spry.Utils.serializeObject=function(b){var a="",c=true;if(b==null||b==undefined)return a+b;var d=typeof b;if(d=="number"||d=="boolean")a+=b;else if(d=="string")a+='"'+Spry.Utils.escapeQuotesAndLineBreaks(b)+'"';else if(b.constructor==Array){a+="[";for(var e=0;e<b.length;e++){if(!c)a+=", ";a+=Spry.Utils.serializeObject(b[e]);c=false}a+="]"}else if(d=="object"){a+="{";for(var f in b){if(!c)a+=", ";a+='"'+f+'": '+Spry.Utils.serializeObject(b[f]);c=false}a+="}"}return a};Spry.Utils.getNodesByFunc=function(c,e){var b=[],d=[],a=c;while(a){if(e(a))d.push(a);if(a.hasChildNodes()){b.push(a);a=a.firstChild}else if(a==c)a=null;else try{a=a.nextSibling}catch(f){a=null}while(!a&&b.length>0){a=b.pop();if(a==c)a=null;else try{a=a.nextSibling}catch(f){a=null}}}if(b&&b.length>0)Spry.Debug.trace("-- WARNING: Spry.Utils.getNodesByFunc() failed to traverse all nodes!\n");return d};Spry.Utils.getFirstChildWithNodeName=function(c,b){var a=c.firstChild;while(a){if(a.nodeName==b)return a;a=a.nextSibling}return null};Spry.Utils.setOptions=function(d,a,c){if(!a)return;for(var b in a){if(c&&a[b]==undefined)continue;d[b]=a[b]}};Spry.Utils.SelectionManager={};Spry.Utils.SelectionManager.selectionGroups={};Spry.Utils.SelectionManager.SelectionGroup=function(){this.selectedElements=[]};Spry.Utils.SelectionManager.SelectionGroup.prototype.select=function(b,c,e){var a=null;if(!e)this.clearSelection();else for(var d=0;d<this.selectedElements.length;d++){a=this.selectedElements[d].element;if(a.element==b){if(a.className!=c){Spry.Utils.removeClassName(b,a.className);Spry.Utils.addClassName(b,c)}return}}a={};a.element=b;a.className=c;this.selectedElements.push(a);Spry.Utils.addClassName(b,c)};Spry.Utils.SelectionManager.SelectionGroup.prototype.unSelect=function(c){for(var b=0;b<this.selectedElements.length;b++){var a=this.selectedElements[b].element;if(a.element==c){Spry.Utils.removeClassName(a.element,a.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(b){if(!b)return null;var a=Spry.Utils.SelectionManager.selectionGroups[b];if(!a){a=new Spry.Utils.SelectionManager.SelectionGroup;Spry.Utils.SelectionManager.selectionGroups[b]=a}return a};Spry.Utils.SelectionManager.select=function(b,e,d,c){var a=Spry.Utils.SelectionManager.getSelectionGroup(b);if(!a)return;a.select(e,d,c)};Spry.Utils.SelectionManager.unSelect=function(b,c){var a=Spry.Utils.SelectionManager.getSelectionGroup(b);if(!a)return;a.unSelect(c,className)};Spry.Utils.SelectionManager.clearSelection=function(b){var a=Spry.Utils.SelectionManager.getSelectionGroup(b);if(!a)return;a.clearSelection()};Spry.Utils.Notifier=function(){this.observers=[];this.suppressNotifications=0};Spry.Utils.Notifier.prototype.addObserver=function(a){if(!a)return;var c=this.observers.length;for(var b=0;b<c;b++)if(this.observers[b]==a)return;this.observers[c]=a};Spry.Utils.Notifier.prototype.removeObserver=function(b){if(!b)return;for(var a=0;a<this.observers.length;a++)if(this.observers[a]==b){this.observers.splice(a,1);break}};Spry.Utils.Notifier.prototype.notifyObservers=function(b,d){if(!b)return;if(!this.suppressNotifications){var e=this.observers.length;for(var c=0;c<e;c++){var a=this.observers[c];if(a)if(typeof a=="function")a(b,this,d);else if(a[b])a[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 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(c,a){if(!Spry.Debug.debugWindow){Spry.Debug.createDebugWindow();if(!Spry.Debug.debugWindow){if(!Spry.Debug.flushQueuedMessages.msgs)Spry.Debug.flushQueuedMessages.msgs=[];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(g){g=g?Spry.$(g):document.body;var i=null,p=Spry.Utils.getNodesByFunc(g,function(a){try{if(a.nodeType!=1)return false;var c="spry:region",b=Spry.Utils.getAttribute(a,c);if(b==undefined){c="spry:detailregion";b=Spry.Utils.getAttribute(a,c)}if(b){if(i){var d=a.parentNode;while(d){if(d==i){Spry.Debug.reportError("Found a nested "+c+" in the following markup. Nested regions are currently not supported.<br/><pre>"+Spry.Utils.encodeEntities(d.innerHTML)+"</pre>");return false}d=d.parentNode}}b=a.getAttribute("id");if(!b)a.setAttribute("id","spryregion"+ ++Spry.Data.initRegions.nextUniqueRegionID);i=a;return true}else if(b=="")Spry.Debug.reportError(c+" attributes require one or more data set names as values!")}catch(e){}return false}),h,k,d,j=[];for(d=0;d<p.length;d++){var b=p[d],n=false;h=b.getAttribute("id");var f="spry:region",a=Spry.Utils.getAttribute(b,f);if(a==undefined){f="spry:detailregion";a=Spry.Utils.getAttribute(b,f);n=true}if(!a){Spry.Debug.reportError("spry:region and spry:detailregion attributes require one or more data set names as values!");continue}Spry.Utils.removeAttribute(b,f);Spry.Utils.removeClassName(b,Spry.Data.Region.hiddenRegionClassName);k=Spry.Data.Region.strToDataSetsArray(a);if(!k.length){Spry.Debug.reportError("spry:region or spry:detailregion attribute has no data set!");continue}var m=false,q=false,c="",s=null,o={},e={};a=Spry.Utils.getAttribute(b,"spry:readystate");if(a)e["ready"]=a;a=Spry.Utils.getAttribute(b,"spry:errorstate");if(a)e["error"]=a;a=Spry.Utils.getAttribute(b,"spry:loadingstate");if(a)e["loading"]=a;a=Spry.Utils.getAttribute(b,"spry:expiredstate");if(a)e["expired"]=a;var r=Spry.Utils.getNodesByFunc(b,function(a){try{if(a.nodeType==1){var u=a.attributes,t=Spry.Data.Region.PI.orderedInstructions.length,e=null,f=null;for(var k=0;k<t;k++){var c=Spry.Data.Region.PI.orderedInstructions[k],n=Spry.Utils.getAttribute(a,c);if(n==undefined)continue;var j=Spry.Data.Region.PI.instructions[c],s=a==b?true:j.childrenOnly,q=j.getOpenTag(a,c),p=j.getCloseTag(a,c);if(s){var h=document.createComment(q),g=document.createComment(p);if(!e)a.insertBefore(h,a.firstChild);else a.insertBefore(h,e.nextSibling);e=h;if(!f)a.appendChild(g);else a.insertBefore(g,f);f=g}else{var r=a.parentNode;r.insertBefore(document.createComment(q),a);r.insertBefore(document.createComment(p),a.nextSibling)}if(c=="spry:state"||c=="sprystate")o[n]=true;Spry.Utils.removeAttribute(a,c)}if(Spry.Data.Region.enableBehaviorAttributes){var i=Spry.Data.Region.behaviorAttrs;for(var d in i){var l=Spry.Utils.getAttribute(a,d);if(l!=undefined){m=true;if(i[d].setup)i[d].setup(a,l)}}}}}catch(v){}return false});c=b.innerHTML;if(window.ActiveXObject&&!Spry.Data.Region.disableIEInnerHTMLFixUp&&c.search(/=\{/)!=-1){if(Spry.Data.Region.debug)Spry.Debug.trace("<hr />Performing IE innerHTML fix up of Region: "+h+"<br /><br />"+Spry.Utils.encodeEntities(c));c=Spry.Utils.fixUpIEInnerHTML(c)}if(Spry.Data.Region.debug)Spry.Debug.trace("<hr />Region template markup for '"+h+"':<br /><br />"+Spry.Utils.encodeEntities(c));if(!q)b.innerHTML="";var l=new Spry.Data.Region(b,h,n,c,k,o,e,m);Spry.Data.regionsArray[l.name]=l;j.push(l)}for(var d=0;d<j.length;d++)j[d].updateContent()};Spry.Data.initRegions.nextUniqueRegionID=0;Spry.Data.updateRegion=function(a){if(!a||!Spry.Data.regionsArray||!Spry.Data.regionsArray[a])return;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)return;for(var a in Spry.Data.regionsArray)Spry.Data.updateRegion(a)};Spry.Data.getDataSetByName=function(b){var a=Spry.Utils.getObjectByName(b);if(typeof a!="object"||!a.getData||!a.filter)return null;return a};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]}return a};Spry.Data.DataSet.prototype.setDataFromArray=function(c,d){this.notifyObservers("onPreLoad");this.unfilteredData=null;this.filteredData=null;this.data=[];this.dataHash={};var e=c.length;for(var b=0;b<e;b++){var a=c[b];if(a.ds_RowID==undefined)a.ds_RowID=b;this.dataHash[a.ds_RowID]=a;this.data.push(a)}this.loadData(d)};Spry.Data.DataSet.prototype.loadData=function(c){var a=this;this.pendingRequest={};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(b){var a=this.getData(b);return a?a.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,c){var b=this.getData(c);if(b&&a>=0&&a<b.length)return b[a];return null};Spry.Data.DataSet.prototype.getCurrentRow=function(){return this.getRowByID(this.curRowID)};Spry.Data.DataSet.prototype.setCurrentRow=function(a){if(this.curRowID==a)return;var b={oldRowID:this.curRowID,newRowID:a};this.curRowID=a;this.notifyObservers("onCurrentRowChanged",b)};Spry.Data.DataSet.prototype.getRowNumber=function(c,d){if(c){var a=this.getData(d);if(a&&a.length){var e=a.length;for(var b=0;b<e;b++)if(a[b]==c)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(e,d,i){var h=[],a=this.getData(i);if(a){var j=a.length;for(var c=0;c<j;c++){var b=a[c],g=true;for(var f in e)if(e[f]!=b[f]){g=false;break}if(g){if(d)return b;h.push(b)}}}return d?null:h};Spry.Data.DataSet.prototype.setColumnType=function(a,c){if(a){if(typeof a=="string")a=[a];for(var b=0;b<a.length;b++)this.columnTypes[a[b]]=c}};Spry.Data.DataSet.prototype.getColumnType=function(a){if(this.columnTypes[a])return this.columnTypes[a];return "string"};Spry.Data.DataSet.prototype.applyColumnTypes=function(){var g=this.getData(true),f=g.length,h=[];if(f<1)return;for(var a in this.columnTypes){var b=this.columnTypes[a];if(b!="string")for(var e=0;e<f;e++){var c=g[e],d=c[a];if(d!=undefined)if(b=="number")c[a]=new Number(d);else if(b=="html")c[a]=Spry.Utils.decodeEntities(d)}}};Spry.Data.DataSet.prototype.distinct=function(d){if(this.data){var g=this.data;this.data=[];this.dataHash={};var j=false,i={},f=0,c=[];if(typeof d=="string")c=[d];else if(d)c=d;else for(var a in g[0])c[f++]=a;for(var f=0;f<g.length;f++){var e=g[f],b="";for(var h=0;h<c.length;h++){a=c[h];if(a!="ds_RowID"){if(b)b+=",";b+=a+":"+'"'+e[a]+'"'}}if(!i[b]){this.data.push(e);this.dataHash[e["ds_RowID"]]=e;i[b]=true}else j=true}if(j)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(a,b){if(!a)return;if(typeof a=="string")a=[a,"ds_RowID"];else if(a.length<2&&a[0]!="ds_RowID")a.push("ds_RowID");if(!b)b="toggle";if(b=="toggle")if(this.lastSortColumns.length>0&&this.lastSortColumns[0]==a[0]&&this.lastSortOrder=="ascending")b="descending";else b="ascending";if(b!="ascending"&&b!="descending"){Spry.Debug.reportError("Invalid sort order type specified: "+b+"\n");return}var f={oldSortColumns:this.lastSortColumns,oldSortOrder:this.lastSortOrder,newSortColumns:a,newSortOrder:b};this.notifyObservers("onPreSort",f);var c=a[a.length-1],d=Spry.Data.DataSet.prototype.sort.getSortFunc(c,this.getColumnType(c),b);for(var e=a.length-2;e>=0;e--){c=a[e];d=Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc(Spry.Data.DataSet.prototype.sort.getSortFunc(c,this.getColumnType(c),b),d)}if(this.unfilteredData){this.unfilteredData.sort(d);if(this.filterFunc)this.filter(this.filterFunc,true)}else this.data.sort(d);this.lastSortColumns=a.slice(0);this.lastSortOrder=b;this.notifyObservers("onPostSort",f)};Spry.Data.DataSet.prototype.sort.getSortFunc=function(a,d,c){var b=null;if(d=="number")if(c=="ascending")b=function(b,c){b=b[a];c=c[a];if(b==undefined||c==undefined)return b==c?0:b?1:-1;return b-c};else b=function(b,c){b=b[a];c=c[a];if(b==undefined||c==undefined)return b==c?0:b?-1:1;return c-b};else if(d=="date")if(c=="ascending")b=function(d,e){var b=d[a],c=e[a];b=b?new Date(b):0;c=c?new Date(c):0;return b-c};else b=function(d,e){var b=d[a],c=e[a];b=b?new Date(b):0;c=c?new Date(c):0;return c-b};else if(c=="ascending")b=function(d,f){d=d[a];f=f[a];if(d==undefined||f==undefined)return d==f?0:d?1:-1;var b=d.toString(),c=f.toString(),l=b.toLowerCase(),m=c.toLowerCase(),k=b.length>c.length?c.length:b.length;for(var e=0;e<k;e++){var g=l.charAt(e),h=m.charAt(e),i=b.charAt(e),j=c.charAt(e);if(g>h)return 1;else if(g<h)return -1;else if(i>j)return 1;else if(i<j)return -1}if(b.length==c.length)return 0;else if(b.length>c.length)return 1;return -1};else b=function(d,f){d=d[a];f=f[a];if(d==undefined||f==undefined)return d==f?0:d?-1:1;var b=d.toString(),c=f.toString(),l=b.toLowerCase(),m=c.toLowerCase(),k=b.length>c.length?c.length:b.length;for(var e=0;e<k;e++){var g=l.charAt(e),h=m.charAt(e),i=b.charAt(e),j=c.charAt(e);if(g>h)return -1;else if(g<h)return 1;else if(i>j)return -1;else if(i<j)return 1}if(b.length==c.length)return 0;else if(b.length>c.length)return -1;return 1};return b};Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc=function(a,b){return function(d,e){var c=a(d,e);if(c==0)c=b(d,e);return c}};Spry.Data.DataSet.prototype.filterData=function(d,f){var c=false;if(!d){this.filterDataFunc=null;c=true}else{this.filterDataFunc=d;if(this.dataWasLoaded&&(this.unfilteredData&&this.unfilteredData.length||this.data&&this.data.length)){if(this.unfilteredData){this.data=this.unfilteredData;this.unfilteredData=null}var e=this.data;this.data=[];this.dataHash={};for(var b=0;b<e.length;b++){var a=d(this,e[b],b);if(a){this.data.push(a);this.dataHash[a["ds_RowID"]]=a}}c=true}}if(c){if(!f){this.disableNotifications();if(this.filterFunc)this.filter(this.filterFunc,true);this.enableNotifications()}this.notifyObservers("onDataChanged")}};Spry.Data.DataSet.prototype.filter=function(c){var b=false;if(!c){if(this.filterFunc&&this.unfilteredData){this.data=this.unfilteredData;this.unfilteredData=null;this.filterFunc=null;b=true}}else{this.filterFunc=c;if(this.dataWasLoaded&&(this.unfilteredData||this.data&&this.data.length)){if(!this.unfilteredData)this.unfilteredData=this.data;var e=this.unfilteredData;this.data=[];for(var a=0;a<e.length;a++){var d=c(this,e[a],a);if(d)this.data.push(d)}b=true}}if(b)this.notifyObservers("onDataChanged")};Spry.Data.DataSet.prototype.startLoadInterval=function(a){this.stopLoadInterval();if(a>0){var b=this;this.loadInterval=a;this.loadIntervalID=setInterval(function(){b.loadData()},a)}};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(b,a){Spry.Data.DataSet.call(this);this.url=b;this.dataSetsForDataRefStrings=[];this.hasDataRefStrings=false;this.useCache=true;this.setRequestInfo(a,true);Spry.Utils.setOptions(this,a,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(b,a){this.requestInfo=new Spry.Utils.loadURL.Request;this.requestInfo.extractRequestOptions(b,a);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 a=0;for(a=0;a<this.dataSetsForDataRefStrings.length;a++){var b=this.dataSetsForDataRefStrings[a];if(b)b.removeObserver(this)}this.dataSetsForDataRefStrings=[];var f=this.getDataRefStrings(),g=0;for(var e=0;e<f.length;e++){var d=Spry.Data.Region.getTokensFromStr(f[e]);for(a=0;d&&a<d.length;a++)if(d[a].search(/{[^}:]+::[^}]+}/)!=-1){var c=d[a].replace(/^\{|::.*\}/g,""),b=null;if(!this.dataSetsForDataRefStrings[c]){b=Spry.Data.getDataSetByName(c);if(c&&b){this.dataSetsForDataRefStrings[c]=b;this.dataSetsForDataRefStrings[g++]=b;this.hasDataRefStrings=true}}}}for(a=0;a<this.dataSetsForDataRefStrings.length;a++){var b=this.dataSetsForDataRefStrings[a];b.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(){this.attemptLoadData()};Spry.Data.HTTPSourceDataSet.prototype.onPostSort=function(){this.attemptLoadData()};Spry.Data.HTTPSourceDataSet.prototype.onDataChanged=function(){this.attemptLoadData()};Spry.Data.HTTPSourceDataSet.prototype.loadData=function(){if(!this.url)return;this.cancelLoadData();var d=this.url,a=this.requestInfo.postData;if(this.hasDataRefStrings){var b=true;for(var f=0;f<this.dataSetsForDataRefStrings.length;f++){var e=this.dataSetsForDataRefStrings[f];if(e.getLoadDataRequestIsPending())b=false;else if(!e.getDataWasLoaded()){e.loadData();b=false}}if(!b)return;d=Spry.Data.Region.processDataRefString(null,this.url,this.dataSetsForDataRefStrings);if(!d)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 c=this.requestInfo.clone();c.url=d;c.postData=a;this.pendingRequest={};this.pendingRequest.data=Spry.Data.HTTPSourceDataSet.LoadManager.loadData(c,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(){this.dataHash={};this.data=[];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){this.setDataFromDoc(a.rawData)};Spry.Data.HTTPSourceDataSet.prototype.onRequestError=function(b,a){this.notifyObservers("onLoadError",a)};Spry.Data.HTTPSourceDataSet.prototype.onRequestSessionExpired=function(b,a){this.notifyObservers("onSessionExpired",a)};Spry.Data.HTTPSourceDataSet.LoadManager={};Spry.Data.HTTPSourceDataSet.LoadManager.cache=[];Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest=function(c,b,a){Spry.Utils.Notifier.call(this);this.reqInfo=c;this.rawData=null;this.timer=null;this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.NOT_LOADED;this.xhRequestProcessor=b;this.sessionExpiredChecker=a};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 b=this;this.cancelLoadData();this.rawData=null;this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_REQUESTED;var a=this.reqInfo.clone();a.successCallback=function(a){b.loadDataCallback(a)};a.errorCallback=a.successCallback;this.timer=setTimeout(function(){b.timer=null;Spry.Utils.loadURL(a.method,a.url,a.async,a.successCallback,a)},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(d,b,e){if(!d)return null;var a=null,c=null;if(e){c=Spry.Data.HTTPSourceDataSet.LoadManager.getCacheKey(d);a=Spry.Data.HTTPSourceDataSet.LoadManager.cache[c]}if(a)if(a.state==Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_REQUESTED){if(b)a.addObserver(b);return a}else if(a.state==Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL){if(b)setTimeout(function(){b.setDataFromDoc(a.rawData)},0);return a}if(!a){a=new Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest(d,b?b.xhRequestProcessor:null,b?b.sessionExpiredChecker:null);if(e){Spry.Data.HTTPSourceDataSet.LoadManager.cache[c]=a;a.addObserver({onRequestError:function(){Spry.Data.HTTPSourceDataSet.LoadManager.cache[c]=undefined}})}}if(b)a.addObserver(b);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(d,c,b){this.xpath=c;this.doc=null;this.subPaths=[];this.entityEncodeStrings=true;Spry.Data.HTTPSourceDataSet.call(this,d,b);var a=typeof this.subPaths;if(a=="string"||a=="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(c,e,d){var b="";if(!c)return;try{var a=c.firstChild;while(a){try{if(a.nodeType==3)b+=e?Spry.Utils.encodeEntities(a.data):a.data;else if(a.nodeType==4)b+=d?Spry.Utils.encodeEntities(a.data):a.data}catch(f){Spry.Debug.reportError("Spry.Data.XMLDataSet.getNodeText() exception caught: "+f+"\n")}a=a.nextSibling}}catch(f){Spry.Debug.reportError("Spry.Data.XMLDataSet.getNodeText() exception caught: "+f+"\n")}return b};Spry.Data.XMLDataSet.createObjectForNode=function(d,g,f){if(!d)return null;var e={},c=0,b=null;try{for(c=0;c<d.attributes.length;c++){b=d.attributes[c];if(b&&b.nodeType==2)e["@"+b.name]=b.value}}catch(i){Spry.Debug.reportError("Spry.Data.XMLDataSet.createObjectForNode() caught exception while accessing attributes: "+i+"\n")}var a=d.firstChild;if(a&&!a.nextSibling&&a.nodeType!=1)e[d.nodeName]=Spry.Data.XMLDataSet.getNodeText(d,g,f);while(a){if(a.nodeType==1)if(!Spry.Data.XMLDataSet.nodeContainsElementNode(a)){e[a.nodeName]=Spry.Data.XMLDataSet.getNodeText(a,g,f);try{var h=a.nodeName+"/@";for(c=0;c<a.attributes.length;c++){b=a.attributes[c];if(b&&b.nodeType==2)e[h+b.name]=b.value}}catch(i){Spry.Debug.reportError("Spry.Data.XMLDataSet.createObjectForNode() caught exception while accessing attributes: "+i+"\n")}}a=a.nextSibling}return e};Spry.Data.XMLDataSet.getRecordSetFromXMLDoc=function(e,f,k,g){if(!e||!f)return null;var c={};c.xmlDoc=e;c.xmlPath=f;c.dataHash={};c.data=[];c.getData=function(){return this.data};var n=new ExprContext(e),l=xpathParse(f),o=l.evaluate(n),b=o.nodeSetValue(),h=true;if(b&&b.length>0)h=b[0].nodeType!=2;var m=0,j=true,i=false;if(typeof g=="boolean")j=i=g;for(var d=0;d<b.length;d++){var a=null;if(k)a={};else if(h)a=Spry.Data.XMLDataSet.createObjectForNode(b[d],j,i);else{a={};a["@"+b[d].name]=b[d].value}if(a){a["ds_RowID"]=m++;a["ds_XMLNode"]=b[d];c.dataHash[a["ds_RowID"]]=a;c.data.push(a)}}return c};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 c=this.subPaths.length;for(var a=0;a<c;a++){var b=this.subPaths[a];if(d==b.path)return b}return null};Spry.Data.XMLDataSet.PathNode.prototype.consolidate=function(){var c=this.subPaths.length;if(!this.xpath&&c==1){var a=this.subPaths[0];this.path+=(a[0]!="/"?"/":"")+a.path;this.xpath=a.xpath;this.subPaths=a.subPaths;this.consolidate();return}for(var b=0;b<c;b++)this.subPaths[b].consolidate()};Spry.Data.XMLDataSet.prototype.convertXPathsToPathTree=function(f){var j=f.length,c=new Spry.Data.XMLDataSet.PathNode("");for(var d=0;d<j;d++){var h=f[d],a=h.replace(/\/\//g,"/__SPRYDS__");a=a.replace(/^\//,"");var g=a.split(/\//),i=g.length,b=c;for(var e=0;e<i;e++){var k=g[e].replace(/__SPRYDS__/,"//");b=b.addSubPath(k)}b.xpath=h}c.consolidate();return c};Spry.Data.XMLDataSet.prototype.flattenSubPaths=function(k,c){if(!k||!c)return;var n=c.length;if(n<1)return;var g=k.data,x={},o=[],l=[];for(var a=0;a<n;a++){var f=c[a];if(typeof f=="object")f=f.path;if(!f)f="";o[a]=Spry.Data.Region.processDataRefString(null,f,this.dataSetsForDataRefStrings);l[a]=o[a].replace(/\[.*\]/g,"")}var e,r=g.length,q=[];for(var a=0;a<r;a++){e=g[a];var j=[e];for(var b=0;b<n;b++){var i=Spry.Data.XMLDataSet.getRecordSetFromXMLDoc(e.ds_XMLNode,o[b],c[b].xpath?false:true,this.entityEncodeStrings);if(i&&i.data&&i.data.length){if(typeof c[b]=="object"&&c[b].subPaths){var h=c[b].subPaths;spType=typeof h;if(spType=="string")h=[h];else if(spType=="object"&&spType.constructor==Object)h=[h];this.flattenSubPaths(i,h)}var w=i.data,B=w.length,m=l[b]+"/",A=j.length,v=[];for(var s=0;s<A;s++){var z=j[s];for(var t=0;t<B;t++){var p={},y=w[t];for(d in z)p[d]=z[d];for(var d in y){var u=m+d;if(m==d+"/"||m.search(new RegExp("\\/"+d+"\\/$"))!=-1)u=l[b];p[u]=y[d]}v.push(p)}}j=v}}q=q.concat(j)}g=q;r=g.length;for(a=0;a<r;a++){e=g[a];e.ds_RowID=a;x[e.ds_RowID]=e}k.data=g;k.dataHash=x};Spry.Data.XMLDataSet.prototype.loadDataIntoDataSet=function(j){var a=null,c=Spry.Data.Region.processDataRefString(null,this.xpath,this.dataSetsForDataRefStrings),d=this.subPaths,h=false;if(this.subPaths&&this.subPaths.length>0){var e=[],i=d.length;for(var g=0;g<i;g++){var b=Spry.Data.Region.processDataRefString(null,d[g],this.dataSetsForDataRefStrings);if(b.charAt(0)!="/")b=c+"/"+b;e.push(b)}e.unshift(c);var f=this.convertXPathsToPathTree(e);c=f.path;d=f.subPaths;h=f.xpath?false:true}a=Spry.Data.XMLDataSet.getRecordSetFromXMLDoc(j,c,h,this.entityEncodeStrings);if(!a){Spry.Debug.reportError("Spry.Data.XMLDataSet.loadDataIntoDataSet() failed to create dataSet '"+this.name+"'for '"+this.xpath+"' - "+this.url+"\n");return}this.flattenSubPaths(a,d);this.doc=a.xmlDoc;this.data=a.data;this.dataHash=a.dataHash;this.dataWasLoaded=this.doc!=null};Spry.Data.XMLDataSet.prototype.xhRequestProcessor=function(b){var a=b.responseXML,c=false;if(b.status!=200){if(b.status==0)if(b.responseText&&(!a||!a.firstChild))c=true}else if(!a)c=true;if(c)a=Spry.Utils.stringToXMLDoc(b.responseText);if(!a||!a.firstChild||a.firstChild.nodeName=="parsererror")return null;return a};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(g,j,d,i,h,f,e,c){this.regionNode=g;this.name=j;this.isDetailRegion=d;this.data=i;this.dataSets=h;this.hasBehaviorAttributes=c;this.tokens=null;this.currentState=null;this.states={ready:true};this.stateMap={};Spry.Utils.setOptions(this.states,f);Spry.Utils.setOptions(this.stateMap,e);for(var a=0;a<this.dataSets.length;a++){var b=this.dataSets[a];try{if(b)b.addObserver(this)}catch(k){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,c){var a=Spry.Data.Region.notifiers[b];if(!a){a=new Spry.Utils.Notifier;Spry.Data.Region.notifiers[b]=a}a.addObserver(c)};Spry.Data.Region.removeObserver=function(c,b){var a=Spry.Data.Region.notifiers[c];if(a)a.removeObserver(b)};Spry.Data.Region.notifyObservers=function(e,b,c){var d=Spry.Data.Region.notifiers[b.name];if(d){var a={};if(c&&typeof c=="object")a=c;else a.data=c;a.region=b;a.regionID=b.name;a.regionNode=b.regionNode;d.notifyObservers(e,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(c,a){var b={state:c,mappedState:this.getMappedState(c)};if(!a)Spry.Data.Region.notifyObservers("onPreStateChange",this,b);this.currentState=b.mappedState?b.mappedState:c;if(this.states[this.currentState]){var d={state:this.currentState};if(!a)Spry.Data.Region.notifyObservers("onPreUpdate",this,d);var e=this.transform();if(Spry.Data.Region.debug)Spry.Debug.trace("<hr />Generated region markup for '"+this.name+"':<br /><br />"+Spry.Utils.encodeEntities(e));Spry.Utils.setInnerHTML(this.regionNode,e,!Spry.Data.Region.evalScripts);if(this.hasBehaviorAttributes)this.attachBehaviors();if(!a)Spry.Data.Region.notifyObservers("onPostUpdate",this,d)}if(!a)Spry.Data.Region.notifyObservers("onPostStateChange",this,b)};Spry.Data.Region.prototype.getDataSets=function(){return this.dataSets};Spry.Data.Region.prototype.addDataSet=function(a){if(!a)return;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(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(){if(this.currentState!="loading")this.setState("loading")};Spry.Data.Region.prototype.onLoadError=function(){if(this.currentState!="error")this.setState("error");Spry.Data.Region.notifyObservers("onError",this)};Spry.Data.Region.prototype.onSessionExpired=function(){if(this.currentState!="expired")this.setState("expired");Spry.Data.Region.notifyObservers("onExpired",this)};Spry.Data.Region.prototype.onCurrentRowChanged=function(){if(this.isDetailRegion)this.updateContent()};Spry.Data.Region.prototype.onPostSort=function(){this.updateContent()};Spry.Data.Region.prototype.onDataChanged=function(){this.updateContent()};Spry.Data.Region.enableBehaviorAttributes=true;Spry.Data.Region.behaviorAttrs={};Spry.Data.Region.behaviorAttrs["spry:select"]={attach:function(e,a,d){var b=null,c=Spry.Utils.getAttribute(a,"spry:selectgroup");if(c!=undefined){b=c;Spry.Utils.removeAttribute(a,"spry:selectgroup")}if(!b)b="default";Spry.Utils.addEventListener(a,"click",function(){Spry.Utils.SelectionManager.select(b,a,d)},false);if(Spry.Utils.getAttribute(a,"spry:selected")!=undefined){Spry.Utils.removeAttribute(a,"spry:selected");Spry.Utils.SelectionManager.select(b,a,d)}Spry.Utils.removeAttribute(a,"spry:select")}};Spry.Data.Region.behaviorAttrs["spry:hover"]={attach:function(c,a,b){Spry.Utils.addEventListener(a,"mouseover",function(){Spry.Utils.addClassName(a,b)},false);Spry.Utils.addEventListener(a,"mouseout",function(){Spry.Utils.removeClassName(a,b)},false);Spry.Utils.removeAttribute(a,"spry:hover")}};Spry.Data.Region.setUpRowNumberForEvenOddAttr=function(d,c,e,f){if(!e){Spry.Debug.showError("The "+c+" attribute requires a CSS class name as its value!");d.attributes.removeNamedItem(c);return}var a="",b=e.split(/\s/);if(b.length>1){a=b[0];d.setAttribute(c,b[1])}d.setAttribute(f,"{"+(a?a+"::":"")+"ds_RowNumber}")};Spry.Data.Region.behaviorAttrs["spry:even"]={setup:function(b,a){Spry.Data.Region.setUpRowNumberForEvenOddAttr(b,"spry:even",a,"spryevenrownumber")},attach:function(d,a,b){if(b){rowNumAttr=a.attributes.getNamedItem("spryevenrownumber");if(rowNumAttr&&rowNumAttr.value){var c=parseInt(rowNumAttr.value);if(c%2)Spry.Utils.addClassName(a,b)}}Spry.Utils.removeAttribute(a,"spry:even");a.removeAttribute("spryevenrownumber")}};Spry.Data.Region.behaviorAttrs["spry:odd"]={setup:function(b,a){Spry.Data.Region.setUpRowNumberForEvenOddAttr(b,"spry:odd",a,"spryoddrownumber")},attach:function(d,a,b){if(b){rowNumAttr=a.attributes.getNamedItem("spryoddrownumber");if(rowNumAttr&&rowNumAttr.value){var c=parseInt(rowNumAttr.value);if(c%2==0)Spry.Utils.addClassName(a,b)}}Spry.Utils.removeAttribute(a,"spry:odd");a.removeAttribute("spryoddrownumber")}};Spry.Data.Region.setRowAttrClickHandler=function(c,b,f,e){if(b){var d=Spry.Data.getDataSetByName(b);if(d){rowIDAttr=c.attributes.getNamedItem(f);if(rowIDAttr){var a=rowIDAttr.value;if(a)Spry.Utils.addEventListener(c,"click",function(){d[e](a)},false)}}}};Spry.Data.Region.behaviorAttrs["spry:setrow"]={setup:function(b,a){if(!a){Spry.Debug.reportError("The spry:setrow attribute requires a data set name as its value!");Spry.Utils.removeAttribute(b,"spry:setrow");return}b.setAttribute("spryrowid","{"+a+"::ds_RowID}")},attach:function(c,a,b){Spry.Data.Region.setRowAttrClickHandler(a,b,"spryrowid","setCurrentRow");Spry.Utils.removeAttribute(a,"spry:setrow");a.removeAttribute("spryrowid")}};Spry.Data.Region.behaviorAttrs["spry:setrownumber"]={setup:function(b,a){if(!a){Spry.Debug.reportError("The spry:setrownumber attribute requires a data set name as its value!");Spry.Utils.removeAttribute(b,"spry:setrownumber");return}b.setAttribute("spryrownumber","{"+a+"::ds_RowID}")},attach:function(c,a,b){Spry.Data.Region.setRowAttrClickHandler(a,b,"spryrownumber","setCurrentRowNumber");Spry.Utils.removeAttribute(a,"spry:setrownumber");a.removeAttribute("spryrownumber")}};Spry.Data.Region.behaviorAttrs["spry:sort"]={attach:function(h,g,f){if(!f)return;var c=h.getDataSets()[0],e="toggle",a=f.split(/\s/);if(a.length>1){var d=Spry.Data.getDataSetByName(a[0]);if(d){c=d;a.shift()}if(a.length>1){var b=a[a.length-1];if(b=="ascending"||b=="descending"||b=="toggle"){e=b;a.pop()}}}if(c&&a.length>0)Spry.Utils.addEventListener(g,"click",function(){c.sort(a,e)},false);Spry.Utils.removeAttribute(g,"spry:sort")}};Spry.Data.Region.prototype.attachBehaviors=function(){var a=this;Spry.Utils.getNodesByFunc(this.regionNode,function(b){if(!b||b.nodeType!=1)return false;try{var f=Spry.Data.Region.behaviorAttrs;for(var e in f){var d=Spry.Utils.getAttribute(b,e);if(d!=undefined){var c=f[e];if(c&&c.attach)c.attach(a,b,d)}}}catch(g){}return false})};Spry.Data.Region.prototype.updateContent=function(){var c=true,a=this.getDataSets();if(!a||a.length<1){Spry.Debug.reportError("updateContent(): Region '"+this.name+"' has no data set!\n");return}for(var d=0;d<a.length;d++){var b=a[d];if(b)if(b.getLoadDataRequestIsPending())c=false;else if(!b.getDataWasLoaded()){b.loadData();c=false}}if(!c){Spry.Data.Region.notifyObservers("onLoadingData",this);return}this.setState("ready")};Spry.Data.Region.prototype.clearContent=function(){this.regionNode.innerHTML=""};Spry.Data.Region.processContentPI=function(c){var e="",f=/<!--\s*<\/?spry:content\s*[^>]*>\s*-->/mg,a=0,d=0;while(c.length){var b=f.exec(c);if(!b||!b[0]){e+=c.substr(a,c.length-a);break}if(!d&&b.index!=a)e+=c.substr(a,b.index-a);if(b[0].search(/<\//)!=-1){--d;if(d)Spry.Debug.reportError("Nested spry:content regions are not allowed!\n")}else{++d;var g=b[0].replace(/.*\bdataref="/,"");e+=g.replace(/".*$/,"")}a=f.lastIndex}return e};Spry.Data.Region.prototype.tokenizeData=function(q){if(!q)return null;var p=new Spry.Data.Region.Token(Spry.Data.Region.Token.LIST_TOKEN,null,null,null),b=[],k=Spry.Data.Region.processContentPI(q);b.push(p);var r=/((<!--\s*){0,1}<\/{0,1}spry:[^>]+>(\s*-->){0,1})|((\{|%7[bB])[^\}\s%]+(\}|%7[dD]))/mg,f=0;while(k.length){var a=r.exec(k),c=null;if(!a||!a[0]){var l=k.substr(f,k.length-f);c=new Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN,null,l,l);b[b.length-1].addChild(c);break}if(a.index!=f){var l=k.substr(f,a.index-f);c=new Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN,null,l,l);b[b.length-1].addChild(c)}if(a[0].search(/^({|%7[bB])/)!=-1){var e=a[0],j=a[0];e=e.replace(/^({|%7[bB])/,"");e=e.replace(/(}|%7[dD])$/,"");var o=null,m=e.split(/::/);if(m.length>1){o=m[0];e=m[1]}j=j.replace(/^%7[bB]/,"{");j=j.replace(/%7[dD]$/,"}");c=new Spry.Data.Region.Token(Spry.Data.Region.Token.VALUE_TOKEN,o,e,new String(j));b[b.length-1].addChild(c)}else if(a[0].charAt(0)=="<"){var i=a[0].replace(/^(<!--\s*){0,1}<\/?/,"");i=i.replace(/>(\s*-->){0,1}|\s.*$/,"");if(a[0].search(/<\//)!=-1){if(b[b.length-1].tokenType!=Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN){Spry.Debug.reportError("Invalid processing instruction close tag: "+i+" -- "+a[0]+"\n");return null}b.pop()}else{var t=Spry.Data.Region.PI.instructions[i];if(t){var n=null,d="";if(a[0].search(/^.*\bselect=\"/)!=-1){d=a[0].replace(/^.*\bselect=\"/,"");d=d.replace(/".*$/,"");if(d){n=Spry.Data.getDataSetByName(d);if(!n){Spry.Debug.reportError("Failed to retrieve data set ("+d+") for "+i+"\n");d=""}}}var h=null;if(a[0].search(/^.*\btest=\"/)!=-1){h=a[0].replace(/^.*\btest=\"/,"");h=h.replace(/".*$/,"");h=Spry.Utils.decodeEntities(h)}var g=null;if(a[0].search(/^.*\bname=\"/)!=-1){g=a[0].replace(/^.*\bname=\"/,"");g=g.replace(/".*$/,"");g=Spry.Utils.decodeEntities(g)}var s=new Spry.Data.Region.Token.PIData(i,d,h,g);c=new Spry.Data.Region.Token(Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN,n,s,new String(a[0]));b[b.length-1].addChild(c);b.push(c)}else{Spry.Debug.reportError("Unsupported region processing instruction: "+a[0]+"\n");return null}}}else{Spry.Debug.reportError("Invalid region token: "+a[0]+"\n");return null}f=r.lastIndex}return p};Spry.Data.Region.prototype.callScriptFunction=function(a,b){var c=undefined;a=a.replace(/^\s*\{?\s*function::\s*|\s*\}?\s*$/g,"");var d=Spry.Utils.getObjectByName(a);if(d)c=d(this.name,function(){return b.getValueFromDataSet.apply(b,arguments)});return c};Spry.Data.Region.prototype.evaluateExpression=function(a,c){var b=undefined;try{if(a.search(/^\s*function::/)!=-1)b=this.callScriptFunction(a,c);else b=Spry.Utils.eval(Spry.Data.Region.processDataRefString(c,a,null,true))}catch(d){Spry.Debug.trace("Caught exception in Spry.Data.Region.prototype.evaluateExpression() while evaluating: "+Spry.Utils.encodeEntities(a)+"\n    Exception:"+d+"\n")}return b};Spry.Data.Region.prototype.processTokenChildren=function(d,e,c){var b=e.children,f=b.length;for(var a=0;a<f;a++)this.processTokens(d,b[a],c)};Spry.Data.Region.prototype.processTokens=function(d,a,b){var j=0;switch(a.tokenType){case Spry.Data.Region.Token.LIST_TOKEN:this.processTokenChildren(d,a,b);break;case Spry.Data.Region.Token.STRING_TOKEN:d.push(a.data);break;case Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN:if(a.data.name=="spry:repeat"){var c=null;if(a.dataSet)c=a.dataSet;else c=this.dataSets[0];if(c){var h=b.getDataSetContext(c);if(!h){Spry.Debug.reportError("processTokens() failed to get a data set context!\n");break}h.pushState();var m=h.getData(),n=m.length;for(j=0;j<n;j++){h.setRowIndex(j);var f=true;if(a.data.jsExpr)f=this.evaluateExpression(a.data.jsExpr,b);if(f)this.processTokenChildren(d,a,b)}h.popState()}}else if(a.data.name=="spry:if"){var f=true;if(a.data.jsExpr)f=this.evaluateExpression(a.data.jsExpr,b);if(f)this.processTokenChildren(d,a,b)}else if(a.data.name=="spry:choose"){var l=null,g=null,f=false,k=0;for(k=0;k<a.children.length;k++){var e=a.children[k];if(e.tokenType==Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN)if(e.data.name=="spry:when"){if(e.data.jsExpr){f=this.evaluateExpression(e.data.jsExpr,b);if(f){g=e;break}}}else if(e.data.name=="spry:default")l=e}if(!g&&l)g=l;if(g)this.processTokenChildren(d,g,b)}else if(a.data.name=="spry:state"){var f=true;if(!a.data.regionState||a.data.regionState==this.currentState)this.processTokenChildren(d,a,b)}else{Spry.Debug.reportError("processTokens(): Unknown processing instruction: "+a.data.name+"\n");return ""}break;case Spry.Data.Region.Token.VALUE_TOKEN:var c=a.dataSet,i=undefined;if(c&&c=="function")i=this.callScriptFunction(a.data,b);else{if(!c&&this.dataSets&&this.dataSets.length>0&&this.dataSets[0])c=this.dataSets[0];if(!c){Spry.Debug.reportError("processTokens(): Value reference has no data set specified: "+a.regionStr+"\n");return ""}i=b.getValueFromDataSet(c,a.data)}if(typeof i!="undefined")d.push(i+"");break;default:Spry.Debug.reportError("processTokens(): Invalid token type: "+a.regionStr+"\n")}};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(d,b,e){if(!d||!b)return "";var a="";try{var c=Spry.Utils.getAttribute(d,b);if(c)a=Spry.Utils.encodeEntities(c)}catch(f){a=""}if(!a){Spry.Debug.reportError(b+" attribute requires a JavaScript expression that returns true or false!\n");return ""}return "<"+Spry.Data.Region.PI.instructions[b].tagName+" "+e+'="'+a+'">'};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(c,b){if(!c||!b)return "";var a=Spry.Utils.getAttribute(c,b);if(a)a=a.replace(/\s/g,"");else{Spry.Debug.reportError(b+" attribute requires a data set name!\n");return ""}var e="",d=Spry.Utils.getAttribute(c,"spry:test");if(d!=undefined){if(d)e=' test="'+Spry.Utils.encodeEntities(d)+'"';Spry.Utils.removeAttribute(c,"spry:test")}return "<"+Spry.Data.Region.PI.instructions[b].tagName+' select="'+a+'"'+e+">"};Spry.Data.Region.PI.buildOpenTagForContent=function(d,b){if(!d||!b)return "";var a="";try{var c=Spry.Utils.getAttribute(d,b);if(c)a=Spry.Utils.encodeEntities(c)}catch(e){a=""}if(!a){Spry.Debug.reportError(b+" attribute requires a data reference!\n");return ""}return "<"+Spry.Data.Region.PI.instructions[b].tagName+' dataref="'+a+'">'};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(g,a,h,m){if(!a)return "";if(!g&&!h)return a;var d="",i=new RegExp("\\{([^\\}:]+::)?[^\\}]+\\}","g"),c=0;while(c<a.length){var b=i.exec(a);if(!b||!b[0]){d+=a.substr(c,a.length-c);return d}if(b.index!=c)d+=a.substr(c,b.index-c);var f="";if(b[0].search(/^\{[^}:]+::/)!=-1)f=b[0].replace(/^\{|::.*/g,"");var k=b[0].replace(/^\{|.*::|\}/g,""),n=null,e="";if(g)e=g.getValueFromDataSet(f,k);else{var l=f?h[f]:h[0];if(l)e=l.getValue(k)}if(typeof e!="undefined"){e+="";d+=m?Spry.Utils.escapeQuotesAndLineBreaks(e):e}if(c==i.lastIndex){var j=b.index+b[0].length;if(j<a.length)d+=a.substr(j);break}c=i.lastIndex}return d};Spry.Data.Region.strToDataSetsArray=function(c,f){var d=[],e={};if(!c)return d;c=c.replace(/\s+/g," ");c=c.replace(/^\s|\s$/g,"");var b=c.split(/ /);for(var a=0;a<b.length;a++)if(b[a]&&!Spry.Data.Region.PI.instructions[b[a]])try{var g=Spry.Data.getDataSetByName(b[a]);if(!e[b[a]]){if(f)d.push(b[a]);else d.push(g);e[b[a]]=true}}catch(h){}return d};Spry.Data.Region.DSContext=function(f,e){var c=f,g=e,b=[{rowIndex:-1}],h=null,a=[],d=function(){return b[b.length-1].rowIndex};this.resetAll=function(){b=[{rowIndex:c.getCurrentRow()}]};this.getDataSet=function(){return c};this.getNumRows=function(b){var a=this.getCurrentState().data;return a?a.length:c.getRowCount(b)};this.getData=function(){var a=this.getCurrentState().data;return a?a:c.getData()};this.setData=function(a){this.getCurrentState().data=a};this.getValue=function(e,d){var b="",a=this.getCurrentState(),c=a.nestedDS?a.nestedDS:this.getDataSet();if(c)b=c.getValue(e,d);return b};this.getCurrentRow=function(){if(b.length<2||d()<0)return c.getCurrentRow();var e=this.getData(),a=d();if(a<0||a>e.length){Spry.Debug.reportError("Invalid index used in Spry.Data.Region.DSContext.getCurrentRow()!\n");return null}return e[a]};this.getRowIndex=function(){var a=d();if(a>=0)return a;return c.getRowNumber(c.getCurrentRow())};this.setRowIndex=function(c){this.getCurrentState().rowIndex=c;var e=this.getData(),d=a.length;for(var b=0;b<d;b++)a[b].syncDataWithParentRow(this,c,e)};this.syncDataWithParentRow=function(i,h,g){var e=g[h];if(e){nestedDS=c.getNestedDataSetForParentRow(e);if(nestedDS){var b=this.getCurrentState();b.nestedDS=nestedDS;b.data=nestedDS.getData();b.rowIndex=nestedDS.getCurrentRowNumber();b.rowIndex=b.rowIndex<0?0:b.rowIndex;var f=a.length;for(var d=0;d<f;d++)a[d].syncDataWithParentRow(this,b.rowIndex,b.data)}}};this.pushState=function(){var d=this.getCurrentState(),c={};c.rowIndex=d.rowIndex;c.data=d.data;c.nestedDS=d.nestedDS;b.push(c);var f=a.length;for(var e=0;e<f;e++)a[e].pushState()};this.popState=function(){if(b.length<2){Spry.Debug.reportError("Stack underflow in Spry.Data.Region.DSContext.popState()!\n");return}var d=a.length;for(var c=0;c<d;c++)a[c].popState();b.pop()};this.getCurrentState=function(){return b[b.length-1]};this.addChild=function(c){var d=a.length;for(var b=0;b<d;b++)if(a[b]==c)return;a.push(c)}};Spry.Data.Region.ProcessingContext=function(d){this.region=d;this.dataSetContexts=[];if(d&&d.dataSets){var c=d.dataSets.slice(0),j=c.length;for(var a=0;a<j;a++){var b=d.dataSets[a];while(b&&b.getParentDataSet){var k=false;b=b.getParentDataSet();if(b&&this.indexOf(c,b)==-1)c.push(b)}}for(a=0;a<c.length;a++)this.dataSetContexts.push(new Spry.Data.Region.DSContext(c[a],this));var e=this.dataSetContexts,i=e.length;for(a=0;a<i;a++){var h=e[a],b=h.getDataSet();if(b.getParentDataSet){var f=b.getParentDataSet();if(f){var g=this.getDataSetContext(f);if(g)g.addChild(h)}}}}};Spry.Data.Region.ProcessingContext.prototype.indexOf=function(b,d){if(b){var c=b.length;for(var a=0;a<c;a++)if(b[a]==d)return a}return -1};Spry.Data.Region.ProcessingContext.prototype.getDataSetContext=function(a){if(!a){if(this.dataSetContexts.length>0)return this.dataSetContexts[0];return null}if(typeof a=="string"){a=Spry.Data.getDataSetByName(a);if(!a)return null}for(var b=0;b<this.dataSetContexts.length;b++){var c=this.dataSetContexts[b];if(c.getDataSet()==a)return c}return null};Spry.Data.Region.ProcessingContext.prototype.getValueFromDataSet=function(){var c="",a="";if(arguments.length>1){c=arguments[0];a=arguments[1]}else{var b=arguments[0].replace(/\s*{\s*|\s*}\s*/g,"");if(b.search("::")!=-1){c=b.replace(/::.*/,"");a=b.replace(/.*::/,"")}else a=b}var e="",d=this.getDataSetContext(c);if(d)e=d.getValue(a,d.getCurrentRow());else Spry.Debug.reportError("getValueFromDataSet: Failed to get "+c+" context for the "+this.region.regionNode.id+" region.\n");return e};Spry.Data.Region.ProcessingContext.prototype.$v=Spry.Data.Region.ProcessingContext.prototype.getValueFromDataSet;Spry.Data.Region.ProcessingContext.prototype.getCurrentRowForDataSet=function(b){var a=this.getDataSetContext(b);if(a)return a.getCurrentRow();return null};Spry.Data.Region.Token=function(b,c,d,a){var e=this;this.tokenType=b;this.dataSet=c;this.data=d;this.regionStr=a;this.parent=null;this.children=null};Spry.Data.Region.Token.prototype.addChild=function(a){if(!a)return;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(c,d,b,a){var e=this;this.name=c;this.data=d;this.jsExpr=b;this.regionState=a};Spry.Utils.addLoadListener(function(){setTimeout(function(){if(Spry.Data.initRegionsOnLoad)Spry.Data.initRegions()},0)})
