var Spry;if(!Spry){Spry={}}if(!Spry.Utils){Spry.Utils={}}Spry.Utils.msProgIDs=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];Spry.Utils.createXMLHttpRequest=function(){var a=null;try{if(window.XMLHttpRequest){a=new XMLHttpRequest()}else{if(window.ActiveXObject){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)}}}}}catch(b){a=null}if(!a){Spry.Debug.reportError("Failed to create an XMLHttpRequest object!")}return a};Spry.Utils.loadURL=function(c,g,f,b,i){var h=new Spry.Utils.loadURL.Request();h.method=c;h.url=g;h.async=f;h.successCallback=b;Spry.Utils.setOptions(h,i);try{h.xhRequest=Spry.Utils.createXMLHttpRequest();if(!h.xhRequest){return null}if(h.async){h.xhRequest.onreadystatechange=function(){Spry.Utils.loadURL.callback(h)}}h.xhRequest.open(h.method,h.url,h.async,h.username,h.password);if(h.headers){for(var d in h.headers){h.xhRequest.setRequestHeader(d,h.headers[d])}}h.xhRequest.send(h.postData);if(!h.async){Spry.Utils.loadURL.callback(h)}}catch(a){h=null;Spry.Debug.reportError("Exception caught while loading "+g+": "+a)}return h};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 c=Spry.Utils.loadURL.Request.props;var a=c.length;for(var b=0;b<a;b++){this[c[b]]=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(b,a){if(!b){return}var f=Spry.Utils.loadURL.Request.props;var c=f.length;for(var e=0;e<c;e++){var d=f[e];if(b[d]!=undefined){this[d]=b[d];if(a){b[d]=undefined}}}};Spry.Utils.loadURL.Request.prototype.clone=function(){var d=Spry.Utils.loadURL.Request.props;var b=d.length;var a=new Spry.Utils.loadURL.Request;for(var c=0;c<b;c++){a[d[c]]=this[d[c]]}if(this.headers){a.headers={};Spry.Utils.setOptions(a.headers,this.headers)}return a};Spry.Utils.setInnerHTML=function(ele,str,preventScripts){if(!ele){return}ele=$(ele);var scriptExpr="<script[^>]*>(.|s|\n|\r)*?<\/script>";ele.innerHTML=str.replace(new RegExp(scriptExpr,"img"),"");if(preventScripts){return}var matches=str.match(new RegExp(scriptExpr,"img"));if(matches){var numMatches=matches.length;for(var i=0;i<numMatches;i++){var s=matches[i].replace(/<script[^>]*>[\s\r\n]*(<\!--)?|(-->)?[\s\r\n]*<\/script>/img,"");Spry.Utils.eval(s)}}};Spry.Utils.updateContent=function(b,e,d,a){var c=(a&&a.method)?a.method:"GET";Spry.Utils.loadURL(c,e,false,function(f){Spry.Utils.setInnerHTML(b,f.xhRequest.responseText);if(d){d(b,e)}},a)};Spry.Utils.addEventListener=function(a,f,b,d){try{a=$(a);if(a.addEventListener){a.addEventListener(f,b,d)}else{if(a.attachEvent){a.attachEvent("on"+f,b)}}}catch(c){}};Spry.Utils.removeEventListener=function(a,f,b,d){try{a=$(a);if(a.removeEventListener){a.removeEventListener(f,b,d)}else{if(a.detachEvent){a.detachEvent("on"+f,b)}}}catch(c){}};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.eval=function(str){return eval(str)};Spry.Utils.escapeQuotesAndLineBreaks=function(a){if(a){a=a.replace(/\\/g,"\\\\");a=a.replace(/["']/g,"\\$&");a=a.replace(/\n/g,"\\n");a=a.replace(/\r/g,"\\r")}return a};Spry.Utils.encodeEntities=function(a){if(a&&a.search(/[&<>"]/)!=-1){a=a.replace(/&/g,"&amp;");a=a.replace(/</g,"&lt;");a=a.replace(/>/g,"&gt;");a=a.replace(/"/g,"&quot;")}return a};Spry.Utils.decodeEntities=function(b){var a=Spry.Utils.decodeEntities.div;if(!a){a=document.createElement("div");Spry.Utils.decodeEntities.div=a;if(!a){return b}}a.innerHTML=b;if(a.childNodes.length==1&&a.firstChild.nodeType==3&&a.firstChild.nextSibling==null){b=a.firstChild.data}else{b=b.replace(/&lt;/,"<");b=b.replace(/&gt;/,">");b=b.replace(/&quot;/,'"');b=b.replace(/&amp;/,"&")}return b};Spry.Utils.fixupIETagAttributes=function(h){var b="";var a=h.match(/^<[^\s>]+\s*/)[0];var e=h.match(/\s*\/?>$/)[0];var i=h.replace(/^<[^\s>]+\s*|\s*\/?>/g,"");b+=a;if(i){var g=0;var c=0;while(g<i.length){while(i.charAt(c)!="="&&c<i.length){++c}if(c>=i.length){b+=i.substring(g,c);break}++c;b+=i.substring(g,c);g=c;if(i.charAt(c)=='"'||i.charAt(c)=="'"){var f=c++;while(c<i.length){if(i.charAt(c)==i.charAt(f)){c++;break}else{if(i.charAt(c)=="\\"){c++}}c++}b+=i.substring(g,c);g=c}else{b+='"';var d=i.slice(c).search(/\s/);c=(d!=-1)?(c+d):i.length;b+=i.slice(g,c);b+='"';g=c}}}b+=e;return b};Spry.Utils.fixUpIEInnerHTML=function(d){var c="";var b=new RegExp("<\\!--|<\\!\\[CDATA\\[|<\\w+[^<>]*>|-->|\\]\\](>|&gt;)","g");var e=0;var f=0;while(d.length){var a=b.exec(d);if(!a||!a[0]){c+=d.substr(e,d.length-e);break}if(a.index!=e){c+=d.substr(e,a.index-e)}if(a[0]=="<!--"||a[0]=="<![CDATA["){++f;c+=a[0]}else{if(a[0]=="-->"||a[0]=="]]>"||(f&&a[0]=="]]&gt;")){--f;c+=a[0]}else{if(!f&&a[0].charAt(0)=="<"){c+=Spry.Utils.fixupIETagAttributes(a[0])}else{c+=a[0]}}}e=b.lastIndex}return c};Spry.Utils.stringToXMLDoc=function(c){var f=null;try{var d=new ActiveXObject("Microsoft.XMLDOM");d.async=false;d.loadXML(c);f=d}catch(a){try{var b=new DOMParser;f=b.parseFromString(c,"text/xml")}catch(a){Spry.Debug.reportError("Caught exception in Spry.Utils.stringToXMLDoc(): "+a+"\n");f=null}}return f};Spry.Utils.serializeObject=function(b){var d="";var a=true;if(b==null||b==undefined){return d+b}var c=typeof b;if(c=="number"||c=="boolean"){d+=b}else{if(c=="string"){d+='"'+Spry.Utils.escapeQuotesAndLineBreaks(b)+'"'}else{if(b.constructor==Array){d+="[";for(var e=0;e<b.length;e++){if(!a){d+=", "}d+=Spry.Utils.serializeObject(b[e]);a=false}d+="]"}else{if(c=="object"){d+="{";for(var f in b){if(!a){d+=", "}d+='"'+f+'": '+Spry.Utils.serializeObject(b[f]);a=false}d+="}"}}}}return d};Spry.Utils.getNodesByFunc=function(f,b){var c=new Array;var a=new Array;var g=f;while(g){if(b(g)){a.push(g)}if(g.hasChildNodes()){c.push(g);g=g.firstChild}else{if(g==f){g=null}else{try{g=g.nextSibling}catch(d){g=null}}}while(!g&&c.length>0){g=c.pop();if(g==f){g=null}else{try{g=g.nextSibling}catch(d){g=null}}}}if(c&&c.length>0){Spry.Debug.trace("-- WARNING: Spry.Utils.getNodesByFunc() failed to traverse all nodes!\n")}return a};Spry.Utils.addClassName=function(b,a){b=$(b);if(!b||!a||(b.className&&b.className.search(new RegExp("\\b"+a+"\\b"))!=-1)){return}b.className+=(b.className?" ":"")+a};Spry.Utils.removeClassName=function(b,a){b=$(b);if(!b||!a||(b.className&&b.className.search(new RegExp("\\b"+a+"\\b"))==-1)){return}b.className=b.className.replace(new RegExp("\\s*\\b"+a+"\\b","g"),"")};Spry.Utils.getFirstChildWithNodeName=function(b,a){var c=b.firstChild;while(c){if(c.nodeName==a){return c}c=c.nextSibling}return null};Spry.Utils.nodeContainsElementNode=function(a){if(a){a=a.firstChild;while(a){if(a.nodeType==1){return true}a=a.nextSibling}}return false};Spry.Utils.getNodeText=function(d){var c="";if(!d){return}try{var b=d.firstChild;while(b){try{if(b.nodeType==3){c+=Spry.Utils.encodeEntities(b.data)}else{if(b.nodeType==4){c+=b.data}}}catch(a){Spry.Debug.reportError("Spry.Utils.getNodeText() exception caught: "+a+"\n")}b=b.nextSibling}}catch(a){Spry.Debug.reportError("Spry.Utils.getNodeText() exception caught: "+a+"\n")}return c};Spry.Utils.CreateObjectForNode=function(h){if(!h){return null}var a=null;var g=0;var f=null;try{for(g=0;g<h.attributes.length;g++){f=h.attributes[g];if(f&&f.nodeType==2){if(!a){a=new Object();if(!a){Spry.Debug.reportError("Spry.Utils.CreateObjectForNode(): Object creation failed!");return null}}a["@"+f.name]=f.value}}}catch(j){Spry.Debug.reportError("Spry.Utils.CreateObjectForNode() caught exception while accessing attributes: "+j+"\n")}var c=h.firstChild;if(c&&!c.nextSibling&&c.nodeType!=1){if(!a){a=new Object();if(!a){Spry.Debug.reportError("Spry.Utils.CreateObjectForNode(): Object creation failed!");return null}}a[h.nodeName]=Spry.Utils.getNodeText(h)}while(c){if(c.nodeType==1){if(!Spry.Utils.nodeContainsElementNode(c)){var d=Spry.Utils.getNodeText(c);if(!a){a=new Object();if(!a){Spry.Debug.reportError("Spry.Utils.CreateObjectForNode(): Object creation failed!");return null}}a[c.nodeName]=d;try{var b=c.nodeName+"/@";for(g=0;g<c.attributes.length;g++){f=c.attributes[g];if(f&&f.nodeType==2){a[b+f.name]=f.value}}}catch(j){Spry.Debug.reportError("Spry.Utils.CreateObjectForNode() caught exception while accessing attributes: "+j+"\n")}}}c=c.nextSibling}return a};Spry.Utils.getRecordSetFromXMLDoc=function(h,g){if(!h||!g){return null}var d=new Object();d.xmlDoc=h;d.xmlPath=g;d.dataHash=new Object;d.data=new Array;d.getData=function(){return this.data};var f=new ExprContext(h);var k=xpathParse(g);var b=k.evaluate(f);var l=b.nodeSetValue();var j=true;if(l&&l.length>0){j=l[0].nodeType!=2}var a=0;for(var m=0;m<l.length;m++){var c=null;if(j){c=Spry.Utils.CreateObjectForNode(l[m])}else{c=new Object;c["@"+l[m].name]=l[m].value}if(c){c.ds_RowID=a++;d.dataHash[c.ds_RowID]=c;d.data.push(c)}}return d};Spry.Utils.setOptions=function(b,a,c){if(!a){return}for(var d in a){if(c&&a[d]==undefined){continue}b[d]=a[d]}};Spry.Utils.SelectionManager={};Spry.Utils.SelectionManager.selectionGroups=new Object;Spry.Utils.SelectionManager.SelectionGroup=function(){this.selectedElements=new Array};Spry.Utils.SelectionManager.SelectionGroup.prototype.select=function(e,a,c){var b=null;if(!c){this.clearSelection()}else{for(var d=0;d<this.selectedElements.length;d++){b=this.selectedElements[d].element;if(b.element==e){if(b.className!=a){Spry.Utils.removeClassName(e,b.className);Spry.Utils.addClassName(e,a)}return}}}b=new Object;b.element=e;b.className=a;this.selectedElements.push(b);Spry.Utils.addClassName(e,a)};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(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(d,e,a,c){var b=Spry.Utils.SelectionManager.getSelectionGroup(d);if(!b){return}b.select(e,a,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(a){var b=Spry.Utils.SelectionManager.getSelectionGroup(a);if(!b){return}b.clearSelection()};function $(){var a=new Array();for(var c=0;c<arguments.length;c++){var b=arguments[c];if(typeof b=="string"){b=document.getElementById(b)}if(arguments.length==1){return b}a.push(b)}return a}Spry.Utils.Notifier=function(){this.observers=[];this.suppressNotifications=0};Spry.Utils.Notifier.prototype.addObserver=function(c){if(!c){return}var b=this.observers.length;for(var a=0;a<b;a++){if(this.observers[a]==c){return}}this.observers[b]=c};Spry.Utils.Notifier.prototype.removeObserver=function(a){if(!a){return}for(var b=0;b<this.observers.length;b++){if(this.observers[b]==a){this.observers.splice(b,1);break}}};Spry.Utils.Notifier.prototype.notifyObservers=function(e,b){if(!e){return}if(!this.suppressNotifications){var d=this.observers.length;for(var a=0;a<d;a++){var c=this.observers[a];if(c){if(typeof c=="function"){c(e,this,b)}else{if(c[e]){c[e](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.createDebugWindow=function(){if(!Spry.Debug.enableTrace||Spry.Debug.debugWindow){return}try{Spry.Debug.debugWindow=document.createElement("div");var b=Spry.Debug.debugWindow;b.style.fontSize="12px";b.style.fontFamily="console";b.style.position="absolute";b.style.width="400px";b.style.height="300px";b.style.overflow="auto";b.style.border="solid 1px black";b.style.backgroundColor="white";b.style.color="black";b.style.bottom="0px";b.style.right="0px";b.setAttribute("id","SpryDebugWindow");document.body.appendChild(Spry.Debug.debugWindow)}catch(a){}};Spry.Debug.debugOut=function(a,b){if(!Spry.Debug.debugWindow){Spry.Debug.createDebugWindow();if(!Spry.Debug.debugWindow){return}}var c=document.createElement("div");if(b){c.style.backgroundColor=b}c.innerHTML=a;Spry.Debug.debugWindow.appendChild(c)};Spry.Debug.trace=function(a){Spry.Debug.debugOut(a)};Spry.Debug.reportError=function(a){Spry.Debug.debugOut(a,"red")};Spry.Data={};Spry.Data.regionsArray={};Spry.Data.initRegions=function(c){if(!c){c=document.body}var m=null;var g=Spry.Utils.getNodesByFunc(c,function(u){try{if(u.nodeType!=1){return false}var s="spry:region";var i=u.attributes.getNamedItem(s);if(!i){s="spry:detailregion";i=u.attributes.getNamedItem(s)}if(i){if(m){var t=u.parentNode;while(t){if(t==m){Spry.Debug.reportError("Found a nested "+s+" in the following markup. Nested regions are currently not supported.<br/><pre>"+Spry.Utils.encodeEntities(t.innerHTML)+"</pre>");return false}t=t.parentNode}}if(i.value){i=u.attributes.getNamedItem("id");if(!i||!i.value){u.setAttribute("id","spryregion"+(++Spry.Data.initRegions.nextUniqueRegionID))}m=u;return true}else{Spry.Debug.reportError(s+" attributes require one or more data set names as values!")}}}catch(r){}return false});var n,o,h;for(h=0;h<g.length;h++){var b=g[h];var j=false;n=b.attributes.getNamedItem("id").value;attr=b.attributes.getNamedItem("spry:region");if(!attr){attr=b.attributes.getNamedItem("spry:detailregion");j=true}if(!attr.value){Spry.Debug.reportError("spry:region and spry:detailregion attributes require one or more data set names as values!");continue}b.attributes.removeNamedItem(attr.nodeName);Spry.Utils.removeClassName(b,Spry.Data.Region.hiddenRegionClassName);o=Spry.Data.Region.strToDataSetsArray(attr.value);if(!o.length){Spry.Debug.reportError("spry:region or spry:detailregion attribute has no data set!");continue}var k=false;var a=false;var e="";var f=null;var q={};var d={};attr=b.attributes.getNamedItem("spry:readystate");if(attr&&attr.value){d.ready=attr.value}attr=b.attributes.getNamedItem("spry:errorstate");if(attr&&attr.value){d.error=attr.value}attr=b.attributes.getNamedItem("spry:loadingstate");if(attr&&attr.value){d.loading=attr.value}var l=Spry.Utils.getNodesByFunc(b,function(z){try{if(z.nodeType==1){var E=z.attributes;var y=Spry.Data.Region.PI.orderedInstructions.length;var v=null;var s=null;for(var D=0;D<y;D++){var A=Spry.Data.Region.PI.orderedInstructions[D];var x=E.getNamedItem(A);if(!x){continue}var u=Spry.Data.Region.PI.instructions[A];var I=(z==b)?true:u.childrenOnly;var t=u.getOpenTag(z,A);var C=u.getCloseTag(z,A);if(I){var i=document.createComment(t);var r=document.createComment(C);if(!v){z.insertBefore(i,z.firstChild)}else{z.insertBefore(i,v.nextSibling)}v=i;if(!s){z.appendChild(r)}else{z.insertBefore(r,s)}s=r}else{var G=z.parentNode;G.insertBefore(document.createComment(t),z);G.insertBefore(document.createComment(C),z.nextSibling)}if(A=="spry:state"){q[x.value]=true}z.removeAttribute(A)}if(Spry.Data.Region.enableBehaviorAttributes){var H=Spry.Data.Region.behaviorAttrs;for(var w in H){var B=E.getNamedItem(w);if(B){k=true;if(H[w].setup){H[w].setup(z,B.value)}}}}}}catch(F){}return false});e=b.innerHTML;if(window.ActiveXObject&&!Spry.Data.Region.disableIEInnerHTMLFixUp&&e.search(/=\{/)!=-1){if(Spry.Data.Region.debug){Spry.Debug.trace("<hr />Performing IE innerHTML fix up of Region: "+n+"<br /><br />"+Spry.Utils.encodeEntities(e))}e=Spry.Utils.fixUpIEInnerHTML(e)}if(Spry.Data.Region.debug){Spry.Debug.trace("<hr />Region template markup for '"+n+"':<br /><br />"+Spry.Utils.encodeEntities(e))}if(!a){b.innerHTML=""}var p=new Spry.Data.Region(b,n,j,e,o,q,d,k);Spry.Data.regionsArray[p.name]=p}Spry.Data.updateAllRegions()};Spry.Data.initRegions.nextUniqueRegionID=0;Spry.Data.updateRegion=function(b){if(!b||!Spry.Data.regionsArray||!Spry.Data.regionsArray[b]){return}try{Spry.Data.regionsArray[b].updateContent()}catch(a){Spry.Debug.reportError("Spry.Data.updateRegion("+b+") caught an exception: "+a+"\n")}};Spry.Data.getRegion=function(a){return Spry.Data.regionsArray[a]};Spry.Data.updateAllRegions=function(){if(!Spry.Data.regionsArray){return}for(var a in Spry.Data.regionsArray){Spry.Data.updateRegion(a)}};Spry.Data.DataSet=function(){Spry.Utils.Notifier.call(this);this.name="";this.internalID=Spry.Data.DataSet.nextDataSetID++;this.curRowID=0;this.data=null;this.unfilteredData=null;this.dataHash=null;this.columnTypes=new Object;this.filterFunc=null;this.filterDataFunc=null;this.distinctOnLoad=false;this.sortOnLoad=null;this.sortOrderOnLoad="ascending";this.keepSorted=false;this.dataWasLoaded=false;this.pendingRequest=null;this.lastSortColumns=[];this.lastSortOrder="";this.loadIntervalID=0};Spry.Data.DataSet.prototype=new Spry.Utils.Notifier();Spry.Data.DataSet.prototype.constructor=Spry.Data.DataSet;Spry.Data.DataSet.prototype.getData=function(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.loadData=function(){var a=this;this.pendingRequest=new Object;this.dataWasLoaded=false;this.pendingRequest.timer=setTimeout(function(){a.pendingRequest=null;a.dataWasLoaded=true;if(a.filterDataFunc){a.filterData(a.filterDataFunc,true)}if(a.distinctOnLoad){a.distinct()}if(a.keepSorted&&a.getSortColumn()){a.sort(a.lastSortColumns,a.lastSortOrder)}else{if(a.sortOnLoad){a.sort(a.sortOnLoad,a.sortOrderOnLoad)}}if(a.filterFunc){a.filter(a.filterFunc,true)}a.notifyObservers("onDataChanged")},0)};Spry.Data.DataSet.prototype.cancelLoadData=function(){if(this.pendingRequest&&this.pendingRequest.timer){clearTimeout(this.pendingRequest.timer)}this.pendingRequest=null};Spry.Data.DataSet.prototype.getRowCount=function(a){var b=this.getData(a);return b?b.length:0};Spry.Data.DataSet.prototype.getRowByID=function(a){if(!this.data){return null}return this.dataHash[a]};Spry.Data.DataSet.prototype.getRowByRowNumber=function(b,c){var a=this.getData(c);if(a&&b>=0&&b<a.length){return a[b]}return null};Spry.Data.DataSet.prototype.getCurrentRow=function(){return this.getRowByID(this.curRowID)};Spry.Data.DataSet.prototype.setCurrentRow=function(b){if(this.curRowID==b){return}var a={oldRowID:this.curRowID,newRowID:b};this.curRowID=b;this.notifyObservers("onCurrentRowChanged",a)};Spry.Data.DataSet.prototype.getRowNumber=function(a){if(a&&this.data&&this.data.length){var c=this.data.length;for(var b=0;b<c;b++){if(this.data[b]==a){return b}}}return 0};Spry.Data.DataSet.prototype.getCurrentRowNumber=function(){return this.getRowNumber(this.getCurrentRow())};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(d,j,a){var b=[];var h=this.getData(a);if(h){var e=h.length;for(var c=0;c<e;c++){var g=h[c];var k=true;for(var f in d){if(d[f]!=g[f]){k=false;break}}if(k){if(j){return g}b.push(g)}}}return j?null:b};Spry.Data.DataSet.prototype.setColumnType=function(a,b){if(a){this.columnTypes[a]=b}};Spry.Data.DataSet.prototype.getColumnType=function(a){if(this.columnTypes[a]){return this.columnTypes[a]}return"string"};Spry.Data.DataSet.prototype.distinct=function(){if(this.data){var c=this.data;this.data=[];this.dataHash={};var e={};var f=0;for(var f=0;f<c.length;f++){var b=c[f];var d="";for(var a in b){if(a!="ds_RowID"){if(d){d+=","}d+=a+':"'+b[a]+'"'}}if(!e[d]){this.data.push(b);this.dataHash[b.ds_RowID]=b;e[d]=true}}}};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(d,c){if(!d){return}if(typeof d=="string"){d=[d,"ds_RowID"]}else{if(d.length<2&&d[0]!="ds_RowID"){d.push("ds_RowID")}}if(!c){c="toggle"}if(c=="toggle"){if(this.lastSortColumns.length>0&&this.lastSortColumns[0]==d[0]&&this.lastSortOrder=="ascending"){c="descending"}else{c="ascending"}}if(c!="ascending"&&c!="descending"){Spry.Debug.reportError("Invalid sort order type specified: "+c+"\n");return}var b={oldSortColumns:this.lastSortColumns,oldSortOrder:this.lastSortOrder,newSortColumns:d,newSortOrder:c};this.notifyObservers("onPreSort",b);var f=d[d.length-1];var e=Spry.Data.DataSet.prototype.sort.getSortFunc(f,this.getColumnType(f),c);for(var a=d.length-2;a>=0;a--){f=d[a];e=Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc(Spry.Data.DataSet.prototype.sort.getSortFunc(f,this.getColumnType(f),c),e)}if(this.unfilteredData){this.unfilteredData.sort(e);if(this.filterFunc){this.filter(this.filterFunc,true)}}else{this.data.sort(e)}this.lastSortColumns=d.slice(0);this.lastSortOrder=c;this.notifyObservers("onPostSort",b)};Spry.Data.DataSet.prototype.sort.getSortFunc=function(b,a,c){var d=null;if(a=="number"){if(c=="ascending"){d=function(f,e){return f[b]-e[b]}}else{d=function(f,e){return e[b]-f[b]}}}else{if(a=="date"){if(c=="ascending"){d=function(e,g){var f=e[b];var h=g[b];f=f?(new Date(f)):0;h=h?(new Date(h)):0;return f-h}}else{d=function(e,g){var f=e[b];var h=g[b];f=f?(new Date(f)):0;h=h?(new Date(h)):0;return h-f}}}else{if(c=="ascending"){d=function(e,q){var h=e[b].toString();var f=q[b].toString();var l=h.toLowerCase();var m=f.toLowerCase();var o=h.length>f.length?f.length:h.length;for(var n=0;n<o;n++){var j=l.charAt(n);var g=m.charAt(n);var p=h.charAt(n);var k=f.charAt(n);if(j>g){return 1}else{if(j<g){return -1}else{if(p>k){return 1}else{if(p<k){return -1}}}}}if(h.length==f.length){return 0}else{if(h.length>f.length){return 1}else{return -1}}}}else{d=function(e,q){var h=e[b].toString();var f=q[b].toString();var l=h.toLowerCase();var m=f.toLowerCase();var o=h.length>f.length?f.length:h.length;for(var n=0;n<o;n++){var j=l.charAt(n);var g=m.charAt(n);var p=h.charAt(n);var k=f.charAt(n);if(j>g){return -1}else{if(j<g){return 1}else{if(p>k){return -1}else{if(p<k){return 1}}}}}if(h.length==f.length){return 0}else{if(h.length>f.length){return -1}else{return 1}}}}}}return d};Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc=function(b,a){return function(c,e){var d=b(c,e);if(d==0){d=a(c,e)}return d}};Spry.Data.DataSet.prototype.filterData=function(c,a){var b=false;if(!c){this.filterDataFunc=null;b=true}else{this.filterDataFunc=c;if(this.dataWasLoaded&&((this.unfilteredData&&this.unfilteredData.length)||(this.data&&this.data.length))){if(this.unfilteredData){this.data=this.unfilteredData;this.unfilteredData=null}var d=this.data;this.data=[];this.dataHash={};for(var f=0;f<d.length;f++){var e=c(this,d[f],f);if(e){this.data.push(e);this.dataHash[e.ds_RowID]=e}}b=true}}if(b){if(!a){this.disableNotifications();if(this.filterFunc){this.filter(this.filterFunc,true)}this.enableNotifications()}this.notifyObservers("onDataChanged")}};Spry.Data.DataSet.prototype.filter=function(d,a){var c=false;if(!d){if(this.filterFunc&&this.unfilteredData){this.data=this.unfilteredData;this.unfilteredData=null;this.filterFunc=null;c=true}}else{this.filterFunc=d;if(this.dataWasLoaded&&(this.unfilteredData||(this.data&&this.data.length))){if(!this.unfilteredData){this.unfilteredData=this.data}var b=this.unfilteredData;this.data=[];for(var f=0;f<b.length;f++){var e=d(this,b[f],f);if(e){this.data.push(e)}}c=true}}if(c){this.notifyObservers("onDataChanged")}};Spry.Data.DataSet.prototype.startLoadInterval=function(b){this.stopLoadInterval();if(b>0){var a=this;this.loadInterval=b;this.loadIntervalID=setInterval(function(){a.loadData()},b)}};Spry.Data.DataSet.prototype.stopLoadInterval=function(){if(this.loadIntervalID){clearInterval(this.loadIntervalID)}this.loadInterval=0;this.loadIntervalID=null};Spry.Data.DataSet.nextDataSetID=0;Spry.Data.XMLDataSet=function(c,b,a){Spry.Data.DataSet.call(this);this.url=c;this.xpath=b;this.doc=null;this.dataSetsForDataRefStrings=new Array;this.hasDataRefStrings=false;this.useCache=true;this.requestInfo=new Spry.Utils.loadURL.Request();this.requestInfo.extractRequestOptions(a,true);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.Utils.setOptions(this,a,true);this.recalculateDataSetDependencies();if(this.loadInterval>0){this.startLoadInterval(this.loadInterval)}};Spry.Data.XMLDataSet.prototype=new Spry.Data.DataSet();Spry.Data.XMLDataSet.prototype.constructor=Spry.Data.XMLDataSet;Spry.Data.XMLDataSet.prototype.recalculateDataSetDependencies=function(){this.hasDataRefStrings=false;if(!this.url){return}var i=0;for(i=0;i<this.dataSetsForDataRefStrings.length;i++){var ds=this.dataSetsForDataRefStrings[i];if(ds){ds.removeObserver(this)}}this.dataSetsForDataRefStrings=new Array();var regionStrs=[this.url,this.xpath,this.requestInfo.postData];var postData=this.requestInfo.postData;if(postData&&(typeof postData)=="string"){regionStrs.push(postData)}var dsCount=0;for(var n=0;n<regionStrs.length;n++){var tokens=Spry.Data.Region.getTokensFromStr(regionStrs[n]);for(i=0;tokens&&i<tokens.length;i++){if(tokens[i].search(/{[^}:]+::[^}]+}/)!=-1){var dsName=tokens[i].replace(/^\{|::.*\}/g,"");var ds=null;if(!this.dataSetsForDataRefStrings[dsName]){try{ds=eval(dsName)}catch(e){ds=null}if(dsName&&ds){this.dataSetsForDataRefStrings[dsName]=ds;this.dataSetsForDataRefStrings[dsCount++]=ds;this.hasDataRefStrings=true}}}}}for(i=0;i<this.dataSetsForDataRefStrings.length;i++){var ds=this.dataSetsForDataRefStrings[i];ds.addObserver(this)}};Spry.Data.XMLDataSet.prototype.attemptLoadData=function(){for(var a=0;a<this.dataSetsForDataRefStrings.length;a++){var b=this.dataSetsForDataRefStrings[a];if(b.getLoadDataRequestIsPending()||!b.getDataWasLoaded()){return}}this.loadData()};Spry.Data.XMLDataSet.prototype.onCurrentRowChanged=function(b,a){this.attemptLoadData()};Spry.Data.XMLDataSet.prototype.onPostSort=function(b,a){this.attemptLoadData()};Spry.Data.XMLDataSet.prototype.onDataChanged=function(b,a){this.attemptLoadData()};Spry.Data.XMLDataSet.prototype.loadData=function(){if(!this.url||!this.xpath){return}this.cancelLoadData();var a=this.url;var e=this.requestInfo.postData;if(this.hasDataRefStrings){var f=true;for(var b=0;b<this.dataSetsForDataRefStrings.length;b++){var d=this.dataSetsForDataRefStrings[b];if(d.getLoadDataRequestIsPending()){f=false}else{if(!d.getDataWasLoaded()){d.loadData();f=false}}}if(!f){return}a=Spry.Data.Region.processDataRefString(null,this.url,this.dataSetsForDataRefStrings);if(!a){return}if(e&&(typeof e)=="string"){e=Spry.Data.Region.processDataRefString(null,e,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=a;c.postData=e;this.pendingRequest=new Object;this.pendingRequest.data=Spry.Data.XMLDataSet.LoadManager.loadData(c,this,this.useCache)};Spry.Data.XMLDataSet.prototype.cancelLoadData=function(){if(this.pendingRequest){Spry.Data.XMLDataSet.LoadManager.cancelLoadData(this.pendingRequest.data,this);this.pendingRequest=null}};Spry.Data.XMLDataSet.prototype.getURL=function(){return this.url};Spry.Data.XMLDataSet.prototype.setURL=function(b,a){if(this.url==b){return}this.url=b;if(a){this.requestInfo.extractRequestOptions(a)}this.cancelLoadData();this.recalculateDataSetDependencies();this.dataWasLoaded=false};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.setDataFromDoc(this.doc)}}};Spry.Data.XMLDataSet.prototype.setDataFromDoc=function(b){this.pendingRequest=null;var a=null;a=Spry.Utils.getRecordSetFromXMLDoc(b,Spry.Data.Region.processDataRefString(null,this.xpath,this.dataSetsForDataRefStrings));if(!a){Spry.Debug.reportError("Spry.Data.XMLDataSet.setDataFromDoc() failed to create dataSet '"+this.name+"'for '"+this.xpath+"' - "+this.url+"\n");return}this.doc=a.xmlDoc;this.data=a.data;this.dataHash=a.dataHash;this.dataWasLoaded=(this.doc!=null);if(this.filterDataFunc){this.filterData(this.filterDataFunc,true)}if(this.distinctOnLoad){this.distinct()}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}this.notifyObservers("onPostLoad");this.notifyObservers("onDataChanged")};Spry.Data.XMLDataSet.prototype.onRequestResponse=function(a,b){this.setDataFromDoc(a.doc)};Spry.Data.XMLDataSet.prototype.onRequestError=function(a,b){this.notifyObservers("onLoadError",b)};Spry.Data.XMLDataSet.LoadManager={};Spry.Data.XMLDataSet.LoadManager.cache=[];Spry.Data.XMLDataSet.LoadManager.CachedRequest=function(a){Spry.Utils.Notifier.call(this);this.reqInfo=a;this.doc=null;this.timer=null;this.state=Spry.Data.XMLDataSet.LoadManager.CachedRequest.NOT_LOADED};Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype=new Spry.Utils.Notifier();Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype.constructor=Spry.Data.XMLDataSet.LoadManager.CachedRequest;Spry.Data.XMLDataSet.LoadManager.CachedRequest.NOT_LOADED=1;Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED=2;Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_FAILED=3;Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL=4;Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype.loadDataCallback=function(a){if(a.xhRequest.readyState!=4){return}var b=a.xhRequest.responseXML;if(a.xhRequest.status!=200){if(a.xhRequest.status==0){if(a.xhRequest.responseText&&(!b||!b.firstChild)){b=Spry.Utils.stringToXMLDoc(a.xhRequest.responseText)}}}if(!b||!b.firstChild||b.firstChild.nodeName=="parsererror"){this.state=Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_FAILED;this.notifyObservers("onRequestError",a);this.observers.length=0;return}this.doc=b;this.state=Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL;this.notifyObservers("onRequestResponse",a);this.observers.length=0};Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype.loadData=function(){var a=this;this.cancelLoadData();this.doc=null;this.state=Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED;var b=this.reqInfo.clone();b.successCallback=function(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.XMLDataSet.LoadManager.CachedRequest.prototype.cancelLoadData=function(){if(this.state==Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED){if(this.timer){this.timer.clearTimeout();this.timer=null}this.doc=null;this.state=Spry.Data.XMLDataSet.LoadManager.CachedRequest.NOT_LOADED}};Spry.Data.XMLDataSet.LoadManager.getCacheKey=function(a){return a.method+"::"+a.url+"::"+a.postData+"::"+a.username};Spry.Data.XMLDataSet.LoadManager.loadData=function(a,b,e){if(!a){return null}var d=null;var c=null;if(e){c=Spry.Data.XMLDataSet.LoadManager.getCacheKey(a);d=Spry.Data.XMLDataSet.LoadManager.cache[c]}if(d){if(d.state==Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED){if(b){d.addObserver(b)}return d}else{if(d.state==Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL){if(b){setTimeout(function(){b.setDataFromDoc(d.doc)},0)}return d}}}if(!d){d=new Spry.Data.XMLDataSet.LoadManager.CachedRequest(a);if(e){Spry.Data.XMLDataSet.LoadManager.cache[c]=d;d.addObserver({onRequestError:function(){Spry.Data.XMLDataSet.LoadManager.cache[c]=undefined}})}}if(b){d.addObserver(b)}d.loadData();return d};Spry.Data.XMLDataSet.LoadManager.cancelLoadData=function(a,b){if(a){if(b){a.removeObserver(b)}else{a.cancelLoadData()}}};Spry.Data.Region=function(m,j,d,c,h,k,a,g){this.regionNode=m;this.name=j;this.isDetailRegion=d;this.data=c;this.dataSets=h;this.hasBehaviorAttributes=g;this.tokens=null;this.currentState=null;this.states={ready:true};this.stateMap={};Spry.Utils.setOptions(this.states,k);Spry.Utils.setOptions(this.stateMap,a);for(var b=0;b<this.dataSets.length;b++){var l=this.dataSets[b];try{if(l){l.addObserver(this)}}catch(f){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(c,b){var a=Spry.Data.Region.notifiers[c];if(!a){a=new Spry.Utils.Notifier();Spry.Data.Region.notifiers[c]=a}a.addObserver(b)};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,a){var c=Spry.Data.Region.notifiers[b.name];if(c){var d={};if(a&&typeof a=="object"){d=a}else{d.data=a}d.region=b;d.regionID=b.name;d.regionNode=b.regionNode;c.notifyObservers(e,d)}};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(d,a){var c={state:d,mappedState:this.getMappedState(d)};if(!a){Spry.Data.Region.notifyObservers("onPreStateChange",this,c)}this.currentState=c.mappedState?c.mappedState:d;if(this.states[d]){if(!a){Spry.Data.Region.notifyObservers("onPreUpdate",this,{state:this.currentState})}var b=this.transform();if(Spry.Data.Region.debug){Spry.Debug.trace("<hr />Generated region markup for '"+this.name+"':<br /><br />"+Spry.Utils.encodeEntities(b))}Spry.Utils.setInnerHTML(this.regionNode,b,!Spry.Data.Region.evalScripts);if(this.hasBehaviorAttributes){this.attachBehaviors()}if(!a){Spry.Data.Region.notifyObservers("onPostUpdate",this,{state:this.currentState})}}if(!a){Spry.Data.Region.notifyObservers("onPostStateChange",this,c)}};Spry.Data.Region.prototype.getDataSets=function(){return this.dataSets};Spry.Data.Region.prototype.addDataSet=function(b){if(!b){return}if(!this.dataSets){this.dataSets=new Array}for(var a=0;a<this.dataSets.length;a++){if(this.dataSets[a]==b){return}}this.dataSets.push(b);b.addObserver(this)};Spry.Data.Region.prototype.removeDataSet=function(b){if(!b||this.dataSets){return}for(var a=0;a<this.dataSets.length;a++){if(this.dataSets[a]==b){this.dataSets.splice(a,1);b.removeObserver(this);return}}};Spry.Data.Region.prototype.onPreLoad=function(a){if(this.currentState!="loading"){this.setState("loading")}};Spry.Data.Region.prototype.onLoadError=function(a){if(this.currentState!="error"){this.setState("error")}Spry.Data.Region.notifyObservers("onError",this)};Spry.Data.Region.prototype.onCurrentRowChanged=function(a,b){if(this.isDetailRegion){this.updateContent()}};Spry.Data.Region.prototype.onPostSort=function(a,b){this.updateContent()};Spry.Data.Region.prototype.onDataChanged=function(a,b){this.updateContent()};Spry.Data.Region.enableBehaviorAttributes=true;Spry.Data.Region.behaviorAttrs={};Spry.Data.Region.behaviorAttrs["spry:select"]={attach:function(d,a,b){var f=null;try{f=a.attributes.getNamedItem("spry:selectgroup").value}catch(c){}if(!f){f="default"}Spry.Utils.addEventListener(a,"click",function(e){Spry.Utils.SelectionManager.select(f,a,b)},false);if(a.attributes.getNamedItem("spry:selected")){Spry.Utils.SelectionManager.select(f,a,b)}}};Spry.Data.Region.behaviorAttrs["spry:hover"]={attach:function(b,c,a){Spry.Utils.addEventListener(c,"mouseover",function(d){Spry.Utils.addClassName(c,a)},false);Spry.Utils.addEventListener(c,"mouseout",function(d){Spry.Utils.removeClassName(c,a)},false)}};Spry.Data.Region.setUpRowNumberForEvenOddAttr=function(b,e,c,f){if(!c){Spry.Debug.showError("The "+e+" attribute requires a CSS class name as its value!");b.attributes.removeNamedItem(e);return}var d="";var a=c.split(/\s/);if(a.length>1){d=a[0];b.setAttribute(e,a[1])}b.setAttribute(f,"{"+(d?(d+"::"):"")+"ds_RowNumber}")};Spry.Data.Region.behaviorAttrs["spry:even"]={setup:function(a,b){Spry.Data.Region.setUpRowNumberForEvenOddAttr(a,"spry:even",b,"spryevenrownumber")},attach:function(c,d,a){if(a){rowNumAttr=d.attributes.getNamedItem("spryevenrownumber");if(rowNumAttr&&rowNumAttr.value){var b=parseInt(rowNumAttr.value);if(b%2){Spry.Utils.addClassName(d,a)}}}d.removeAttribute("spry:even");d.removeAttribute("spryevenrownumber")}};Spry.Data.Region.behaviorAttrs["spry:odd"]={setup:function(a,b){Spry.Data.Region.setUpRowNumberForEvenOddAttr(a,"spry:odd",b,"spryoddrownumber")},attach:function(c,d,a){if(a){rowNumAttr=d.attributes.getNamedItem("spryoddrownumber");if(rowNumAttr&&rowNumAttr.value){var b=parseInt(rowNumAttr.value);if(b%2==0){Spry.Utils.addClassName(d,a)}}}d.removeAttribute("spry:odd");d.removeAttribute("spryoddrownumber")}};Spry.Data.Region.setRowAttrClickHandler=function(node,dsName,rowAttr,funcName){if(dsName){var ds=null;try{ds=Spry.Utils.eval(dsName)}catch(e){ds=null}if(ds){rowIDAttr=node.attributes.getNamedItem(rowAttr);if(rowIDAttr){var rowAttrVal=rowIDAttr.value;if(rowAttrVal){Spry.Utils.addEventListener(node,"click",function(event){ds[funcName](rowAttrVal)},false)}}}}};Spry.Data.Region.behaviorAttrs["spry:setrow"]={setup:function(a,b){if(!b){Spry.Debug.reportError("The spry:setrow attribute requires a data set name as its value!");a.removeAttribute("spry:setrow");return}a.setAttribute("spryrowid","{"+b+"::ds_RowID}")},attach:function(b,c,a){Spry.Data.Region.setRowAttrClickHandler(c,a,"spryrowid","setCurrentRow");c.removeAttribute("spry:setrow");c.removeAttribute("spryrowid")}};Spry.Data.Region.behaviorAttrs["spry:setrownumber"]={setup:function(a,b){if(!b){Spry.Debug.reportError("The spry:setrownumber attribute requires a data set name as its value!");a.removeAttribute("spry:setrownumber");return}a.setAttribute("spryrownumber","{"+b+"::ds_RowID}")},attach:function(b,c,a){Spry.Data.Region.setRowAttrClickHandler(c,a,"spryrownumber","setCurrentRowNumber");c.removeAttribute("spry:setrownumber");c.removeAttribute("spryrownumber")}};Spry.Data.Region.behaviorAttrs["spry:sort"]={attach:function(rgn,node,value){if(!value){return}var ds=rgn.getDataSets()[0];var sortOrder="toggle";var colArray=value.split(/\s/);if(colArray.length>1){try{var specifiedDS=eval(colArray[0]);if(specifiedDS&&(typeof specifiedDS)=="object"){ds=specifiedDS;colArray.shift()}}catch(e){}if(colArray.length>1){var str=colArray[colArray.length-1];if(str=="ascending"||str=="descending"||str=="toggle"){sortOrder=str;colArray.pop()}}}if(ds&&colArray.length>0){Spry.Utils.addEventListener(node,"click",function(event){ds.sort(colArray,sortOrder)},false)}node.removeAttribute("spry:sort")}};Spry.Data.Region.prototype.attachBehaviors=function(){var a=this;Spry.Utils.getNodesByFunc(this.regionNode,function(g){if(!g||g.nodeType!=1){return false}try{var c=Spry.Data.Region.behaviorAttrs;for(var d in c){var b=g.attributes.getNamedItem(d);if(b){var f=c[d];if(f&&f.attach){f.attach(a,g,b.value)}}}}catch(h){}return false})};Spry.Data.Region.prototype.updateContent=function(){var c=true;var b=this.getDataSets();if(!b||b.length<1){Spry.Debug.reportError("updateContent(): Region '"+this.name+"' has no data set!\n");return}for(var d=0;d<b.length;d++){var a=b[d];if(a){if(a.getLoadDataRequestIsPending()){c=false}else{if(!a.getDataWasLoaded()){a.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(d){var c="";var a=/<!--\s*<\/?spry:content\s*[^>]*>\s*-->/mg;var e=0;var g=0;while(d.length){var f=a.exec(d);if(!f||!f[0]){c+=d.substr(e,d.length-e);break}if(!g&&f.index!=e){c+=d.substr(e,f.index-e)}if(f[0].search(/<\//)!=-1){--g;if(g){Spry.Debug.reportError("Nested spry:content regions are not allowed!\n")}}else{++g;var b=f[0].replace(/.*\bdataref="/,"");c+=b.replace(/".*$/,"")}e=a.lastIndex}return c};Spry.Data.Region.prototype.tokenizeData=function(dataStr){if(!dataStr){return null}var rootToken=new Spry.Data.Region.Token(Spry.Data.Region.Token.LIST_TOKEN,null,null,null);var tokenStack=new Array;var parseStr=Spry.Data.Region.processContentPI(dataStr);tokenStack.push(rootToken);var regexp=/((<!--\s*){0,1}<\/{0,1}spry:[^>]+>(\s*-->){0,1})|((\{|%7[bB])[^\}\s%]+(\}|%7[dD]))/mg;var searchStartIndex=0;while(parseStr.length){var results=regexp.exec(parseStr);var token=null;if(!results||!results[0]){var str=parseStr.substr(searchStartIndex,parseStr.length-searchStartIndex);token=new Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN,null,str,str);tokenStack[tokenStack.length-1].addChild(token);break}if(results.index!=searchStartIndex){var str=parseStr.substr(searchStartIndex,results.index-searchStartIndex);token=new Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN,null,str,str);tokenStack[tokenStack.length-1].addChild(token)}if(results[0].search(/^({|%7[bB])/)!=-1){var valueName=results[0];var regionStr=results[0];valueName=valueName.replace(/^({|%7[bB])/,"");valueName=valueName.replace(/(}|%7[dD])$/,"");var dataSetName=null;var splitArray=valueName.split(/::/);if(splitArray.length>1){dataSetName=splitArray[0];valueName=splitArray[1]}regionStr=regionStr.replace(/^%7[bB]/,"{");regionStr=regionStr.replace(/%7[dD]$/,"}");token=new Spry.Data.Region.Token(Spry.Data.Region.Token.VALUE_TOKEN,dataSetName,valueName,new String(regionStr));tokenStack[tokenStack.length-1].addChild(token)}else{if(results[0].charAt(0)=="<"){var piName=results[0].replace(/^(<!--\s*){0,1}<\/?/,"");piName=piName.replace(/>(\s*-->){0,1}|\s.*$/,"");if(results[0].search(/<\//)!=-1){if(tokenStack[tokenStack.length-1].tokenType!=Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN){Spry.Debug.reportError("Invalid processing instruction close tag: "+piName+" -- "+results[0]+"\n");return null}tokenStack.pop()}else{var piDesc=Spry.Data.Region.PI.instructions[piName];if(piDesc){var dataSet=null;var selectedDataSetName="";if(results[0].search(/^.*\bselect=\"/)!=-1){selectedDataSetName=results[0].replace(/^.*\bselect=\"/,"");selectedDataSetName=selectedDataSetName.replace(/".*$/,"");if(selectedDataSetName){try{dataSet=eval(selectedDataSetName)}catch(e){Spry.Debug.reportError("Caught exception in tokenizeData() while trying to retrieve data set ("+selectedDataSetName+"): "+e+"\n");dataSet=null;selectedDataSetName=""}}}var jsExpr=null;if(results[0].search(/^.*\btest=\"/)!=-1){jsExpr=results[0].replace(/^.*\btest=\"/,"");jsExpr=jsExpr.replace(/".*$/,"");jsExpr=Spry.Utils.decodeEntities(jsExpr)}var regionState=null;if(results[0].search(/^.*\bname=\"/)!=-1){regionState=results[0].replace(/^.*\bname=\"/,"");regionState=regionState.replace(/".*$/,"");regionState=Spry.Utils.decodeEntities(regionState)}var piData=new Spry.Data.Region.Token.PIData(piName,selectedDataSetName,jsExpr,regionState);token=new Spry.Data.Region.Token(Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN,dataSet,piData,new String(results[0]));tokenStack[tokenStack.length-1].addChild(token);tokenStack.push(token)}else{Spry.Debug.reportError("Unsupported region processing instruction: "+results[0]+"\n");return null}}}else{Spry.Debug.reportError("Invalid region token: "+results[0]+"\n");return null}}searchStartIndex=regexp.lastIndex}return rootToken};Spry.Data.Region.prototype.processTokenChildren=function(c,f){var d=[""];var e=c.children.length;var b=c.children;for(var a=0;a<e;a++){d.push(this.processTokens(b[a],f))}return d.join("")};Spry.Data.Region.prototype.processTokens=function(token,processContext){if(!processContext){processContext=new Spry.Data.Region.ProcessingContext(this);if(!processContext){return""}}var outputStr="";var i=0;switch(token.tokenType){case Spry.Data.Region.Token.LIST_TOKEN:outputStr+=this.processTokenChildren(token,processContext);break;case Spry.Data.Region.Token.STRING_TOKEN:outputStr+=token.data;break;case Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN:if(token.data.name=="spry:repeat"){var dataSet=null;if(token.dataSet){dataSet=token.dataSet}else{dataSet=this.dataSets[0]}if(dataSet){var dsContext=processContext.getDataSetContext(dataSet);if(!dsContext){Spry.Debug.reportError("processTokens() failed to get a data set context!\n");break}var numRows=dsContext.getNumRows();var dataSetRows=dataSet.getData();dsContext.pushState();for(i=0;i<numRows;i++){dsContext.setRowIndex(i);var testVal=true;if(token.data.jsExpr){var jsExpr=Spry.Data.Region.processDataRefString(processContext,token.data.jsExpr,null,true);try{testVal=Spry.Utils.eval(jsExpr)}catch(e){Spry.Debug.trace("Caught exception in Spry.Data.Region.prototype.processTokens while evaluating: "+jsExpr+"\n    Exception:"+e+"\n");testVal=true}}if(testVal){outputStr+=this.processTokenChildren(token,processContext)}}dsContext.popState()}}else{if(token.data.name=="spry:if"){var testVal=true;if(token.data.jsExpr){var jsExpr=Spry.Data.Region.processDataRefString(processContext,token.data.jsExpr,null,true);try{testVal=Spry.Utils.eval(jsExpr)}catch(e){Spry.Debug.trace("Caught exception in Spry.Data.Region.prototype.processTokens while evaluating: "+jsExpr+"\n    Exception:"+e+"\n");testVal=true}}if(testVal){outputStr+=this.processTokenChildren(token,processContext)}}else{if(token.data.name=="spry:choose"){var defaultChild=null;var childToProcess=null;var testVal=false;var j=0;for(j=0;j<token.children.length;j++){var child=token.children[j];if(child.tokenType==Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN){if(child.data.name=="spry:when"){if(child.data.jsExpr){var jsExpr=Spry.Data.Region.processDataRefString(processContext,child.data.jsExpr,null,true);try{testVal=Spry.Utils.eval(jsExpr)}catch(e){Spry.Debug.trace("Caught exception in Spry.Data.Region.prototype.processTokens while evaluating: "+jsExpr+"\n    Exception:"+e+"\n");testVal=false}if(testVal){childToProcess=child;break}}}else{if(child.data.name=="spry:default"){defaultChild=child}}}}if(!childToProcess&&defaultChild){childToProcess=defaultChild}if(childToProcess){outputStr+=this.processTokenChildren(childToProcess,processContext)}}else{if(token.data.name=="spry:state"){var testVal=true;if(!token.data.regionState||token.data.regionState==this.currentState){outputStr+=this.processTokenChildren(token,processContext)}}else{Spry.Debug.reportError("processTokens(): Unknown processing instruction: "+token.data.name+"\n");return""}}}}break;case Spry.Data.Region.Token.VALUE_TOKEN:var dataSet=token.dataSet;if(!dataSet&&this.dataSets&&this.dataSets.length>0&&this.dataSets[0]){dataSet=this.dataSets[0]}if(!dataSet){Spry.Debug.reportError("processTokens(): Value reference has no data set specified: "+token.regionStr+"\n");return""}var dsContext=processContext.getDataSetContext(dataSet);if(!dsContext){Spry.Debug.reportError("processTokens: Failed to get a data set context!\n");return""}var ds=dsContext.getDataSet();if(token.data=="ds_RowNumber"){outputStr+=dsContext.getRowIndex()}else{if(token.data=="ds_RowNumberPlus1"){outputStr+=(dsContext.getRowIndex()+1)}else{if(token.data=="ds_RowCount"){outputStr+=dsContext.getNumRows()}else{if(token.data=="ds_UnfilteredRowCount"){outputStr+=dsContext.getNumRows(true)}else{if(token.data=="ds_CurrentRowNumber"){outputStr+=ds.getRowNumber(ds.getCurrentRow())}else{if(token.data=="ds_CurrentRowID"){outputStr+=ds.curRowID}else{if(token.data=="ds_EvenOddRow"){outputStr+=(dsContext.getRowIndex()%2)?Spry.Data.Region.evenRowClassName:Spry.Data.Region.oddRowClassName}else{if(token.data=="ds_SortOrder"){outputStr+=ds.getSortOrder()}else{if(token.data=="ds_SortColumn"){outputStr+=ds.getSortColumn()}else{var curDataSetRow=dsContext.getCurrentRow();if(curDataSetRow){outputStr+=curDataSetRow[token.data]}}}}}}}}}}break;default:Spry.Debug.reportError("processTokens(): Invalid token type: "+token.regionStr+"\n");break}return outputStr};Spry.Data.Region.prototype.transform=function(){if(this.data&&!this.tokens){this.tokens=this.tokenizeData(this.data)}if(!this.tokens){return""}return this.processTokens(this.tokens,null)};Spry.Data.Region.PI={};Spry.Data.Region.PI.instructions={};Spry.Data.Region.PI.buildOpenTagForValueAttr=function(a,f,g){if(!a||!f){return""}var d="";try{var c=a.attributes.getNamedItem(f);if(c&&c.value){d=Spry.Utils.encodeEntities(c.value)}}catch(b){d=""}if(!d){Spry.Debug.reportError(f+" attribute requires a JavaScript expression that returns true or false!\n");return""}return"<"+Spry.Data.Region.PI.instructions[f].tagName+" "+g+'="'+d+'">'};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(a,g){if(!a||!g){return""}var f="";try{var d=a.attributes.getNamedItem(g);if(d&&d.value){f=d.value;f=f.replace(/\s/g,"")}}catch(c){f=""}if(!f){Spry.Debug.reportError(g+" attribute requires a data set name!\n");return""}var h="";try{var b=a.attributes.getNamedItem("spry:test");if(b){if(b.value){h=' test="'+Spry.Utils.encodeEntities(b.value)+'"'}a.attributes.removeNamedItem(b.nodeName)}}catch(c){h=""}return"<"+Spry.Data.Region.PI.instructions[g].tagName+' select="'+f+'"'+h+">"};Spry.Data.Region.PI.buildOpenTagForContent=function(a,d){if(!a||!d){return""}var c="";try{var f=a.attributes.getNamedItem(d);if(f&&f.value){c=Spry.Utils.encodeEntities(f.value)}}catch(b){c=""}if(!c){Spry.Debug.reportError(d+" attribute requires a data reference!\n");return""}return"<"+Spry.Data.Region.PI.instructions[d].tagName+' dataref="'+c+'">'};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(n,a,j,c){if(!a){return""}if(!n&&!j){return a}var l="";var d=new RegExp("\\{([^\\}:]+::)?[^\\}]+\\}","g");var m=0;while(m<a.length){var i=d.exec(a);if(!i||!i[0]){l+=a.substr(m,a.length-m);return l}if(i.index!=m){l+=a.substr(m,i.index-m)}var f="";if(i[0].search(/^\{[^}:]+::/)!=-1){f=i[0].replace(/^\{|::.*/g,"")}var b=i[0].replace(/^\{|.*::|\}/g,"");var e=null;if(n){var k=n.getDataSetContext(f);if(b=="ds_RowNumber"){l+=k.getRowIndex();e=null}else{if(b=="ds_RowNumberPlus1"){l+=(k.getRowIndex()+1);e=null}else{if(b=="ds_RowCount"){l+=k.getNumRows();e=null}else{if(b=="ds_UnfilteredRowCount"){l+=k.getNumRows(true);e=null}else{if(b=="ds_CurrentRowNumber"){var h=k.getDataSet();l+=h.getRowNumber(h.getCurrentRow());e=null}else{if(b=="ds_CurrentRowID"){var h=k.getDataSet();l+=""+h.curRowID;e=null}else{if(b=="ds_EvenOddRow"){l+=(k.getRowIndex()%2)?Spry.Data.Region.evenRowClassName:Spry.Data.Region.oddRowClassName;e=null}else{if(b=="ds_SortOrder"){l+=k.getDataSet().getSortOrder();e=null}else{if(b=="ds_SortColumn"){l+=k.getDataSet().getSortColumn();e=null}else{e=n.getCurrentRowForDataSet(f)}}}}}}}}}}else{var h=f?j[f]:j[0];if(h){e=h.getCurrentRow()}}if(e){l+=c?Spry.Utils.escapeQuotesAndLineBreaks(""+e[b]):e[b]}if(m==d.lastIndex){var g=i.index+i[0].length;if(g<a.length){l+=a.substr(g)}break}m=d.lastIndex}return l};Spry.Data.Region.strToDataSetsArray=function(str,returnRegionNames){var dataSetsArr=new Array;var foundHash={};if(!str){return dataSetsArr}str=str.replace(/\s+/g," ");str=str.replace(/^\s|\s$/g,"");var arr=str.split(/ /);for(var i=0;i<arr.length;i++){if(arr[i]&&!Spry.Data.Region.PI.instructions[arr[i]]){try{var dataSet=eval(arr[i]);if(!foundHash[arr[i]]){if(returnRegionNames){dataSetsArr.push(arr[i])}else{dataSetsArr.push(dataSet)}foundHash[arr[i]]=true}}catch(e){}}}return dataSetsArr};Spry.Data.Region.DSContext=function(e){var d=this;var a=e;var b=[-1];function c(){return b[b.length-1]}this.resetAll=function(){b=[a.getCurrentRow()]};this.getDataSet=function(){return a};this.getNumRows=function(f){return a.getRowCount(f)};this.getCurrentRow=function(){if(b.length<2||c()<0){return a.getCurrentRow()}var g=a.getData();var f=c();if(f<0||f>g.length){Spry.Debug.reportError("Invalid index used in Spry.Data.Region.DSContext.getCurrentRow()!\n");return null}return g[f]};this.getRowIndex=function(){var f=c();if(f>=0){return f}return a.getRowNumber(a.getCurrentRow())};this.setRowIndex=function(f){b[b.length-1]=f};this.pushState=function(){b.push(c())};this.popState=function(){if(b.length<2){Spry.Debug.reportError("Stack underflow in Spry.Data.Region.DSContext.popState()!\n");return}b.pop()}};Spry.Data.Region.ProcessingContext=function(region){var m_self=this;var m_region=region;var m_dataSetContexts=[];if(region&&region.dataSets){for(var i=0;i<region.dataSets.length;i++){m_dataSetContexts.push(new Spry.Data.Region.DSContext(region.dataSets[i]))}}this.getDataSetContext=function(dataSet){if(!dataSet){if(m_dataSetContexts.length>0){return m_dataSetContexts[0]}return null}if(typeof dataSet=="string"){try{dataSet=eval(dataSet)}catch(e){dataSet=null}if(!dataSet){return null}}for(var i=0;i<m_dataSetContexts.length;i++){var dsc=m_dataSetContexts[i];if(dsc.getDataSet()==dataSet){return dsc}}return null};this.getCurrentRowForDataSet=function(dataSet){var dsc=m_self.getDataSetContext(dataSet);if(dsc){return dsc.getCurrentRow()}return null}};Spry.Data.Region.Token=function(c,e,b,a){var d=this;this.tokenType=c;this.dataSet=e;this.data=b;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=new Array}this.children.push(a);a.parent=this};Spry.Data.Region.Token.LIST_TOKEN=0;Spry.Data.Region.Token.STRING_TOKEN=1;Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN=2;Spry.Data.Region.Token.VALUE_TOKEN=3;Spry.Data.Region.Token.PIData=function(e,a,b,c){var d=this;this.name=e;this.data=a;this.jsExpr=b;this.regionState=c};Spry.Utils.addLoadListener(function(){setTimeout(function(){Spry.Data.initRegions()},0)});
