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