function toggleDiv(a,b){if(b=='1'){if(document.layers)document.layers[''+a+''].visibility='show';else if(document.all)document.all[''+a+''].style.visibility='visible';else if(document.getElementById)document.getElementById(''+a+'').style.visibility='visible'}else if(b=='0'){if(document.layers)document.layers[''+a+''].visibility='hide';else if(document.all)document.all[''+a+''].style.visibility='hidden';else if(document.getElementById)document.getElementById(''+a+'').style.visibility='hidden'}};toggleArrow=function(a,b){if(a){if(a.style.backgroundPosition=='0px 16px'){a.style.backgroundPosition='0px 0px';if($(b))$(b).style.display='none'}else{a.style.backgroundPosition='0px 16px';if($(b))$(b).style.display='block'}}};loadEditor=function(a){NewWindow=window.open(a,'ED','width=750,height=575,toolbar=No,location=No,scrollbars=No,status=No,resizable=No,fullscreen=No');NewWindow.focus();void(0)};getElementLeft=function(a){xPos=a.offsetLeft;tempEl=a.offsetParent;while(tempEl!=null){xPos+=tempEl.offsetLeft;tempEl=tempEl.offsetParent}return xPos};function getElementTop(a){yPos=a.offsetTop;tempEl=a.offsetParent;while(tempEl!=null){yPos+=tempEl.offsetTop;tempEl=tempEl.offsetParent}return yPos};enterEditDiv=function(a,b){$(a).className='editDiv';$(b).style.display='block'};exitEditDiv=function(a,b){$(a).className='';$(b).style.display='none'};getMultiSelectValue=function(a){var b=new Array();var c=$(a);for(i=0;i<c.options.length;i++){if(c.options[i].selected){b.push(c.options[i].value)}}return b.toString()};getCheckBoxListValues=function(a){var b=document.getElementsByName(a);var c=new Array();for(var i=0;i<b.length;i++){if(b[i].checked){c.push(b[i].value)}}return c.toString()};removeChars=function(a,b){varFinish='';for(var i=0;i<a.length;i++){if(a.charAt(i)!=b){varFinish=varFinish+a.charAt(i)}}return varFinish};replaceChars=function(a,b,c){varFinish=a;for(var i=0;i<a.length;i++){if(a.charAt(i)==b){varFinish=varFinish.substr(0,i)+" "+varFinish.substr(i+1,varFinish.length)}}return varFinish};trimLeft=function(s){var a=s.split("");if(a.length>0){while(a[0]==" "){a.shift()}}return(a.join(""))};trimRight=function(s){var a=s.split("");if(a.length>0){while(a[a.length-1]==" "){a.pop()}}return(a.join(""))};trim=function(s){var a=s;if(a.length>0){a=trimLeft(a);a=trimRight(a)}return(a)};validateSESChars=function(){re=/^[\/a-zA-Z0-9_\-]+$/;var a=re.test(trim($('tdc_ses_url').value));return a};textAreaCounter=function(a,b,c){if(a.value.length>c){a.value=a.value.substring(0,c)}else{b.innerHTML=c-a.value.length}};openNewWindow=function(a,b,c){newWindow=window.open(a,b,c)};function clearText(a){if(a.defaultValue==a.value)a.value=""}getCheckedValue=function(a){if(!a){return''}var b=a.length;if(b==undefined)if(a.checked)return a.value;else return'';for(var i=0;i<b;i++){if(a[i].checked){return a[i].value}}return''};function dateAddExtention(a,b){var c=new String();a=a.toLowerCase();if(isNaN(b)){throw"The second parameter must be a number. \n You passed: "+b;return false};b=new Number(b);switch(a.toLowerCase()){case"yyyy":{this.setFullYear(this.getFullYear()+b);break}case"q":{this.setMonth(this.getMonth()+(b*3));break}case"m":{this.setMonth(this.getMonth()+b);break}case"y":case"d":case"w":{this.setDate(this.getDate()+b);break}case"ww":{this.setDate(this.getDate()+(b*7));break}case"h":{this.setHours(this.getHours()+b);break}case"n":{this.setMinutes(this.getMinutes()+b);break}case"s":{this.setSeconds(this.getSeconds()+b);break}case"ms":{this.setMilliseconds(this.getMilliseconds()+b);break}default:{throw"The first parameter must be a string from this list: \n"+"yyyy, q, m, y, d, w, ww, h, n, s, or ms.  You passed: "+a;return false}}return this}Date.prototype.dateAdd=dateAddExtention;var dateFormat=function(){var g=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,timezone=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,timezoneClip=/[^-+\dA-Z]/g,pad=function(a,b){a=String(a);b=b||2;while(a.length<b)a="0"+a;return a};return function(b,c,e){var f=dateFormat;if(arguments.length==1&&(typeof b=="string"||b instanceof String)&&!/\d/.test(b)){c=b;b=undefined};b=b?new Date(b):new Date();if(isNaN(b))throw new SyntaxError("invalid date");c=String(f.masks[c]||c||f.masks["default"]);if(c.slice(0,4)=="UTC:"){c=c.slice(4);e=true};var _=e?"getUTC":"get",d=b[_+"Date"](),D=b[_+"Day"](),m=b[_+"Month"](),y=b[_+"FullYear"](),H=b[_+"Hours"](),M=b[_+"Minutes"](),s=b[_+"Seconds"](),L=b[_+"Milliseconds"](),o=e?0:b.getTimezoneOffset(),flags={d:d,dd:pad(d),ddd:f.i18n.dayNames[D],dddd:f.i18n.dayNames[D+7],m:m+1,mm:pad(m+1),mmm:f.i18n.monthNames[m],mmmm:f.i18n.monthNames[m+12],yy:String(y).slice(2),yyyy:y,h:H%12||12,hh:pad(H%12||12),H:H,HH:pad(H),M:M,MM:pad(M),s:s,ss:pad(s),l:pad(L,3),L:pad(L>99?Math.round(L/10):L),t:H<12?"a":"p",tt:H<12?"am":"pm",T:H<12?"A":"P",TT:H<12?"AM":"PM",Z:e?"UTC":(String(b).match(timezone)||[""]).pop().replace(timezoneClip,""),o:(o>0?"-":"+")+pad(Math.floor(Math.abs(o)/60)*100+Math.abs(o)%60,4),S:["th","st","nd","rd"][d%10>3?0:(d%100-d%10!=10)*d%10]};return c.replace(g,function(a){return a in flags?flags[a]:a.slice(1,a.length-1)})}}();dateFormat.masks={"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"};dateFormat.i18n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"]};Date.prototype.format=function(a,b){return dateFormat(this,a,b)};fireEvent=function(a,b){var c=a;if(document.createEvent){var d=document.createEvent('MouseEvents');d.initEvent(b,true,false);c.dispatchEvent(d)}else if(document.createEventObject){c.fireEvent('on'+b)}};showStatus=function(s,a){a=a||'statusImage';switch(s){case 0:$(a).src='/images/admin/transparent.gif';break;case 1:$(a).src='/images/admin/waiting.gif';break;case 2:$(a).src='/images/admin/updated.gif';break;case 3:$(a).src='/images/admin/error.gif';break}};clearField=function(a){a.value=''};getVarClear=function(){var d=new Date();var a=d.getTime();return a};function emailPopup(a){$('emailSignup').style.display='block';var d=new Date();var b=d.getTime();if(a){Spry.Utils.updateContent('emailSignup','/views/dspemailsignup.cfm?varClear='+b+'&msg='+a)}else{Spry.Utils.updateContent('emailSignup','/views/dspemailsignup.cfm?varClear='+b)}};function emailSignupOnClick(){$('emailSignup').style.display='block';var d=new Date();var a=d.getTime();var b=document.getElementById('tdc_emailsignup').value;if(b!=''){Spry.Utils.updateContent('emailSignup','/views/dspemailsignup.cfm?varClear='+a+'&tdc_emailsignup='+b)}else{emailPopup('You must enter a valid email address')}};function showHiddenDiv(a,b){if(b=='1'){if(document.layers)document.layers[''+a+''].style.display='block';else if(document.all)document.all[''+a+''].style.display='block';else if(document.getElementById)document.getElementById(''+a+'').style.display='block'}else if(b=='0'){if(document.layers)document.layers[''+a+''].style.display='none';else if(document.all)document.all[''+a+''].style.display='none';else if(document.getElementById)document.getElementById(''+a+'').style.display='none'}};tdc_pageWidth=function(){return window.innerWidth!=null?window.innerWidth:document.documentElement&&document.documentElement.clientWidth?document.documentElement.clientWidth:document.body!=null?document.body.clientWidth:null};tdc_pageHeight=function(){return window.innerHeight!=null?window.innerHeight:document.documentElement&&document.documentElement.clientHeight?document.documentElement.clientHeight:document.body!=null?document.body.clientHeight:null};tdc_posLeft=function(){return typeof window.pageXOffset!='undefined'?window.pageXOffset:document.documentElement&&document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft?document.body.scrollLeft:0};tdc_posTop=function(){return typeof window.pageYOffset!='undefined'?window.pageYOffset:document.documentElement&&document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop?document.body.scrollTop:0};tdc_scrollFix=function(){var a=document.getElementById('tdc_ol');a.style.top=tdc_posTop()+'px';a.style.left=tdc_posLeft()+'px'};tdc_sizeFix=function(){var a=document.getElementById('tdc_ol');a.style.height=tdc_pageHeight()+'px';a.style.width=tdc_pageWidth()+'px'};tdc_sm=function(){var b='block';var p='px';var a=document.getElementById('tdc_ol');a.style.height=tdc_pageHeight()+p;a.style.width=tdc_pageWidth()+p;a.style.top=tdc_posTop()+p;a.style.left=tdc_posLeft()+p;a.style.display=b;var c=document.getElementById('tdc_mbox');var d=c.style.width.substring(0,c.style.width.indexOf('p'));var e=tdc_posTop()+((tdc_pageHeight()-300)/2)-12;var f=tdc_posLeft()+((tdc_pageWidth()-d)/2)-12;c.style.top=(e<0?0:e)+p;c.style.left=(f<0?0:f)+p;c.style.display=b;return false};tdc_hm=function(){var n='none';document.getElementById('tdc_ol').style.display=n;document.getElementById('tdc_mbox').style.display=n;document.onkeypress=''};initmb=function(){var a='absolute';var n='none';var b=document.getElementsByTagName('body')[0];var c=document.createDocumentFragment();var d=document.createElement('div');d.setAttribute('id','tdc_ol');d.style.display=n;d.style.position=a;d.style.top=0;d.style.left=0;d.style.zIndex=998;d.style.width='100%';c.appendChild(d);var e=document.createElement('div');e.setAttribute('id','tdc_mbox');e.style.display=n;e.style.position=a;e.style.zIndex=999;e.style.width='300px';var f=document.createElement('div');f.setAttribute('id','tdc_mbd');e.appendChild(f);var g=document.createElement('div');g.setAttribute('id','tdc_mbtitle');e.appendChild(g);var h=document.createElement('div');h.setAttribute('id','tdc_mbtext');e.appendChild(h);var i=document.createElement('div');i.setAttribute('id','tdc_mbbtns');e.appendChild(i);c.insertBefore(e,d.nextSibling);b.insertBefore(c,b.firstChild);window.onscroll=tdc_scrollFix;window.onresize=tdc_sizeFix};tdcMsg=function(a,c,b,i,d,e){document.getElementById('tdc_mbtitle').innerHTML=c;switch(i){case'info':document.getElementById('tdc_mbtext').innerHTML='<table class="mbtable"><tr valign="top"><td><img src="/images/modalbox/info.jpg"></td><td>'+a+'</td></tr></table>';break;case'error':document.getElementById('tdc_mbtext').innerHTML='<table class="mbtable"><tr valign="top"><td><img src="/images/modalbox/error.jpg"></td><td>'+a+'</td></tr></table>';break;case'question':document.getElementById('tdc_mbtext').innerHTML='<table class="mbtable"><tr valign="top"><td><img src="/images/modalbox/question.jpg"></td><td>'+a+'</td></tr></table>';break;default:document.getElementById('tdc_mbtext').innerHTML='<table class="mbtable"><tr valign="top"><td><img src="/images/modalbox/info.jpg"></td><td>'+a+'</td></tr></table>';break}switch(b){case'ok':document.getElementById('tdc_mbbtns').innerHTML='<button onclick="tdc_hm();'+d+'" class="tdc_mbbtnsclass">OK</button>';break;case'yesno':document.getElementById('tdc_mbbtns').innerHTML='<button onclick="tdc_hm();'+d+'" class="tdc_mbbtnsclass">Yes</button> <button onclick="tdc_hm();'+e+'" class="tdc_mbbtnsclass">No</button>';break;default:document.getElementById('tdc_mbbtns').innerHTML='<button onclick="tdc_hm();'+d+'" class="tdc_mbbtnsclass">OK</button>';break}tdc_sm()};function xpathParse(a){if(xpathdebug){Log.write('XPath parse '+a)}xpathParseInit();var b=xpathCacheLookup(a);if(b){if(xpathdebug){Log.write(' ... cached')}return b};if(a.match(/^(\$|@)?\w+$/i)){var c=makeSimpleExpr(a);xpathParseCache[a]=c;if(xpathdebug){Log.write(' ... simple')}return c};if(a.match(/^\w+(\/\w+)*$/i)){var c=makeSimpleExpr2(a);xpathParseCache[a]=c;if(xpathdebug){Log.write(' ... simple 2')}return c};var d=a;if(xpathdebug){Timer.start('XPath parse',d)};var e=[];var f=null;var g=null;var h=false;var j=0;var k=0;var l=0;while(!h){j++;a=a.replace(/^\s*/,'');g=f;f=null;var m=null;var n='';for(var i=0;i<xpathTokenRules.length;++i){var o=xpathTokenRules[i].re.exec(a);k++;if(o&&o.length>0&&o[0].length>n.length){m=xpathTokenRules[i];n=o[0];break}};if(m&&(m==TOK_DIV||m==TOK_MOD||m==TOK_AND||m==TOK_OR)&&(!g||g.tag==TOK_AT||g.tag==TOK_DSLASH||g.tag==TOK_SLASH||g.tag==TOK_AXIS||g.tag==TOK_DOLLAR)){m=TOK_QNAME};if(m){a=a.substr(n.length);if(xpathdebug){Log.write('token: '+n+' -- '+m.label)}f={tag:m,match:n,prec:m.prec?m.prec:0,expr:makeTokenExpr(n)}}else{if(xpathdebug){Log.write('DONE')}h=true};while(xpathReduce(e,f)){l++;if(xpathdebug){Log.write('stack: '+stackToString(e))}}};if(xpathdebug){Log.write(stackToString(e))};if(e.length!=1){throw'XPath parse error '+d+':\n'+stackToString(e);};var o=e[0].expr;xpathParseCache[d]=o;if(xpathdebug){Timer.end('XPath parse',d)};if(xpathdebug){Log.write('XPath parse: '+j+' / '+k+' / '+l)};return o};var xpathParseCache={};function xpathCacheLookup(a){return xpathParseCache[a]};function xpathReduce(a,b){var c=null;if(a.length>0){var d=a[a.length-1];var e=xpathRules[d.tag.key];if(e){for(var i=0;i<e.length;++i){var f=e[i];var g=xpathMatchStack(a,f[1]);if(g.length){c={tag:f[0],rule:f,match:g};c.prec=xpathGrammarPrecedence(c);break}}}};var h;if(c&&(!b||c.prec>b.prec||(b.tag.left&&c.prec>=b.prec))){for(var i=0;i<c.match.matchlength;++i){a.pop()};if(xpathdebug){Log.write('reduce '+c.tag.label+' '+c.prec+' ahead '+(b?b.tag.label+' '+b.prec+(b.tag.left?' left':''):' none '))};var j=mapExpr(c.match,function(m){return m.expr});c.expr=c.rule[3].apply(null,j);a.push(c);h=true}else{if(b){if(xpathdebug){Log.write('shift '+b.tag.label+' '+b.prec+(b.tag.left?' left':'')+' over '+(c?c.tag.label+' '+c.prec:' none'))}a.push(b)}h=false}return h};function xpathMatchStack(a,b){var S=a.length;var P=b.length;var p,s;var c=[];c.matchlength=0;var d=0;for(p=P-1,s=S-1;p>=0&&s>=0;--p,s-=d){d=0;var e=[];if(b[p]==Q_MM){p-=1;c.push(e);while(s-d>=0&&a[s-d].tag==b[p]){e.push(a[s-d]);d+=1;c.matchlength+=1}}else if(b[p]==Q_01){p-=1;c.push(e);while(s-d>=0&&d<2&&a[s-d].tag==b[p]){e.push(a[s-d]);d+=1;c.matchlength+=1}}else if(b[p]==Q_1M){p-=1;c.push(e);if(a[s].tag==b[p]){while(s-d>=0&&a[s-d].tag==b[p]){e.push(a[s-d]);d+=1;c.matchlength+=1}}else{return[]}}else if(a[s].tag==b[p]){c.push(a[s]);d+=1;c.matchlength+=1}else{return[]};reverseInplace(e);e.expr=mapExpr(e,function(m){return m.expr})};reverseInplace(c);if(p==-1){return c}else{return[]}};function xpathTokenPrecedence(a){return a.prec||2};function xpathGrammarPrecedence(a){var b=0;if(a.rule){if(a.rule.length>=3&&a.rule[2]>=0){b=a.rule[2]}else{for(var i=0;i<a.rule[1].length;++i){var p=xpathTokenPrecedence(a.rule[1][i]);b=Math.max(b,p)}}}else if(a.tag){b=xpathTokenPrecedence(a.tag)}else if(a.length){for(var j=0;j<a.length;++j){var p=xpathGrammarPrecedence(a[j]);b=Math.max(b,p)}};return b};function stackToString(a){var b='';for(var i=0;i<a.length;++i){if(b){b+='\n'}b+=a[i].tag.label}return b};function ExprContext(a,b,c,d){this.node=a;this.position=b||0;this.nodelist=c||[a];this.variables={};this.parent=d||null;this.root=d?d.root:a.ownerDocument};ExprContext.prototype.clone=function(a,b,c){return new ExprContext(a||this.node,typeof b!='undefined'?b:this.position,c||this.nodelist,this)};ExprContext.prototype.setVariable=function(a,b){this.variables[a]=b};ExprContext.prototype.getVariable=function(a){if(typeof this.variables[a]!='undefined'){return this.variables[a]}else if(this.parent){return this.parent.getVariable(a)}else{return null}};ExprContext.prototype.setNode=function(a,b){this.node=a;this.position=b};function StringValue(a){this.value=a;this.type='string'};StringValue.prototype.stringValue=function(){return this.value};StringValue.prototype.booleanValue=function(){return this.value.length>0};StringValue.prototype.numberValue=function(){return this.value-0};StringValue.prototype.nodeSetValue=function(){throw this+' '+Error().stack;};function BooleanValue(a){this.value=a;this.type='boolean'};BooleanValue.prototype.stringValue=function(){return''+this.value};BooleanValue.prototype.booleanValue=function(){return this.value};BooleanValue.prototype.numberValue=function(){return this.value?1:0};BooleanValue.prototype.nodeSetValue=function(){throw this+' '+Error().stack;};function NumberValue(a){this.value=a;this.type='number'};NumberValue.prototype.stringValue=function(){return''+this.value};NumberValue.prototype.booleanValue=function(){return!!this.value};NumberValue.prototype.numberValue=function(){return this.value-0};NumberValue.prototype.nodeSetValue=function(){throw this+' '+Error().stack;};function NodeSetValue(a){this.value=a;this.type='node-set'};NodeSetValue.prototype.stringValue=function(){if(this.value.length==0){return''}else{return xmlValue(this.value[0])}};NodeSetValue.prototype.booleanValue=function(){return this.value.length>0};NodeSetValue.prototype.numberValue=function(){return this.stringValue()-0};NodeSetValue.prototype.nodeSetValue=function(){return this.value};function TokenExpr(m){this.value=m};TokenExpr.prototype.evaluate=function(){return new StringValue(this.value)};function LocationExpr(){this.absolute=false;this.steps=[]};LocationExpr.prototype.appendStep=function(s){this.steps.push(s)};LocationExpr.prototype.prependStep=function(s){var a=this.steps;this.steps=[s];for(var i=0;i<a.length;++i){this.steps.push(a[i])}};LocationExpr.prototype.evaluate=function(a){var b;if(this.absolute){b=a.root}else{b=a.node};var c=[];xPathStep(c,this.steps,0,b,a);return new NodeSetValue(c)};function xPathStep(a,b,c,d,e){var s=b[c];var f=e.clone(d);var g=s.evaluate(f).nodeSetValue();for(var i=0;i<g.length;++i){if(c==b.length-1){a.push(g[i])}else{xPathStep(a,b,c+1,g[i],e)}}};function StepExpr(a,b,c){this.axis=a;this.nodetest=b;this.predicate=c||[]};StepExpr.prototype.appendPredicate=function(p){this.predicate.push(p)};StepExpr.prototype.evaluate=function(a){var b=a.node;var c=[];if(this.axis==xpathAxis.ANCESTOR_OR_SELF){c.push(b);for(var n=b.parentNode;n;n=b.parentNode){c.push(n)}}else if(this.axis==xpathAxis.ANCESTOR){for(var n=b.parentNode;n;n=b.parentNode){c.push(n)}}else if(this.axis==xpathAxis.ATTRIBUTE){copyArray(c,b.attributes)}else if(this.axis==xpathAxis.CHILD){copyArray(c,b.childNodes)}else if(this.axis==xpathAxis.DESCENDANT_OR_SELF){c.push(b);xpathCollectDescendants(c,b)}else if(this.axis==xpathAxis.DESCENDANT){xpathCollectDescendants(c,b)}else if(this.axis==xpathAxis.FOLLOWING){for(var n=b.parentNode;n;n=n.parentNode){for(var d=n.nextSibling;d;d=d.nextSibling){c.push(d);xpathCollectDescendants(c,d)}}}else if(this.axis==xpathAxis.FOLLOWING_SIBLING){for(var n=b.nextSibling;n;n=b.nextSibling){c.push(n)}}else if(this.axis==xpathAxis.NAMESPACE){alert('not implemented: axis namespace')}else if(this.axis==xpathAxis.PARENT){if(b.parentNode){c.push(b.parentNode)}}else if(this.axis==xpathAxis.PRECEDING){for(var n=b.parentNode;n;n=n.parentNode){for(var d=n.previousSibling;d;d=d.previousSibling){c.push(d);xpathCollectDescendantsReverse(c,d)}}}else if(this.axis==xpathAxis.PRECEDING_SIBLING){for(var n=b.previousSibling;n;n=b.previousSibling){c.push(n)}}else if(this.axis==xpathAxis.SELF){c.push(b)}else{throw'ERROR -- NO SUCH AXIS: '+this.axis;};var e=c;c=[];for(var i=0;i<e.length;++i){var n=e[i];if(this.nodetest.evaluate(a.clone(n,i,e)).booleanValue()){c.push(n)}};for(var i=0;i<this.predicate.length;++i){var e=c;c=[];for(var f=0;f<e.length;++f){var n=e[f];if(this.predicate[i].evaluate(a.clone(n,f,e)).booleanValue()){c.push(n)}}};return new NodeSetValue(c)};function NodeTestAny(){this.value=new BooleanValue(true)};NodeTestAny.prototype.evaluate=function(a){return this.value};function NodeTestElement(){};NodeTestElement.prototype.evaluate=function(a){return new BooleanValue(a.node.nodeType==DOM_ELEMENT_NODE)};function NodeTestText(){};NodeTestText.prototype.evaluate=function(a){return new BooleanValue(a.node.nodeType==DOM_TEXT_NODE)};function NodeTestComment(){};NodeTestComment.prototype.evaluate=function(a){return new BooleanValue(a.node.nodeType==DOM_COMMENT_NODE)};function NodeTestPI(a){this.target=a};NodeTestPI.prototype.evaluate=function(a){return new BooleanValue(a.node.nodeType==DOM_PROCESSING_INSTRUCTION_NODE&&(!this.target||a.node.nodeName==this.target))};function NodeTestNC(a){this.regex=new RegExp("^"+a+":");this.nsprefix=a};NodeTestNC.prototype.evaluate=function(a){var n=a.node;return new BooleanValue(this.regex.match(n.nodeName))};function NodeTestName(a){this.name=a};NodeTestName.prototype.evaluate=function(a){var n=a.node;return new BooleanValue(n.nodeName==this.name)};function PredicateExpr(a){this.expr=a};PredicateExpr.prototype.evaluate=function(a){var v=this.expr.evaluate(a);if(v.type=='number'){return new BooleanValue(a.position==v.numberValue()-1)}else{return new BooleanValue(v.booleanValue())}};function FunctionCallExpr(a){this.name=a;this.args=[]};FunctionCallExpr.prototype.appendArg=function(a){this.args.push(a)};FunctionCallExpr.prototype.evaluate=function(a){var b=''+this.name.value;var f=this.xpathfunctions[b];if(f){return f.call(this,a)}else{Log.write('XPath NO SUCH FUNCTION '+b);return new BooleanValue(false)}};FunctionCallExpr.prototype.xpathfunctions={'last':function(a){assert(this.args.length==0);return new NumberValue(a.nodelist.length)},'position':function(a){assert(this.args.length==0);return new NumberValue(a.position+1)},'count':function(a){assert(this.args.length==1);var v=this.args[0].evaluate(a);return new NumberValue(v.nodeSetValue().length)},'id':function(a){assert(this.args.length==1);var e=this.args.evaluate(a);var b=[];var c;if(e.type=='node-set'){c=[];for(var i=0;i<e.length;++i){var v=xmlValue(e[i]).split(/\s+/);for(var f=0;f<v.length;++f){c.push(v[f])}}}else{c=e.split(/\s+/)}var d=a.node.ownerDocument;for(var i=0;i<c.length;++i){var n=d.getElementById(c[i]);if(n){b.push(n)}}return new NodeSetValue(b)},'local-name':function(a){alert('not implmented yet: XPath function local-name()')},'namespace-uri':function(a){alert('not implmented yet: XPath function namespace-uri()')},'name':function(a){assert(this.args.length==1||this.args.length==0);var n;if(this.args.length==0){n=[a.node]}else{n=this.args[0].evaluate(a).nodeSetValue()};if(n.length==0){return new StringValue('')}else{return new StringValue(n[0].nodeName)}},'string':function(a){assert(this.args.length==1||this.args.length==0);if(this.args.length==0){return new StringValue(new NodeSetValue([a.node]).stringValue())}else{return new StringValue(this.args[0].evaluate(a).stringValue())}},'concat':function(a){var b='';for(var i=0;i<this.args.length;++i){b+=this.args[i].evaluate(a).stringValue()}return new StringValue(b)},'starts-with':function(a){assert(this.args.length==2);var b=this.args[0].evaluate(a).stringValue();var c=this.args[1].evaluate(a).stringValue();return new BooleanValue(b.indexOf(c)==0)},'contains':function(a){assert(this.args.length==2);var b=this.args[0].evaluate(a).stringValue();var c=this.args[1].evaluate(a).stringValue();return new BooleanValue(b.indexOf(c)!=-1)},'substring-before':function(a){assert(this.args.length==2);var b=this.args[0].evaluate(a).stringValue();var c=this.args[1].evaluate(a).stringValue();var i=b.indexOf(c);var d;if(i==-1){d=''}else{d=b.substr(0,i)}return new StringValue(d)},'substring-after':function(a){assert(this.args.length==2);var b=this.args[0].evaluate(a).stringValue();var c=this.args[1].evaluate(a).stringValue();var i=b.indexOf(c);var d;if(i==-1){d=''}else{d=b.substr(i+c.length)}return new StringValue(d)},'substring':function(a){assert(this.args.length==2||this.args.length==3);var b=this.args[0].evaluate(a).stringValue();var c=this.args[1].evaluate(a).numberValue();var d;if(this.args.length==2){var e=Math.max(0,Math.round(c)-1);d=b.substr(e)}else{var f=this.args[2].evaluate(a).numberValue();var g=Math.round(c)-1;var e=Math.max(0,g);var h=Math.round(f)-Math.max(0,-g);d=b.substr(e,h)}return new StringValue(d)},'string-length':function(a){var s;if(this.args.length>0){s=this.args[0].evaluate(a).stringValue()}else{s=new NodeSetValue([a.node]).stringValue()}return new NumberValue(s.length)},'normalize-space':function(a){var s;if(this.args.length>0){s=this.args[0].evaluate(a).stringValue()}else{s=new NodeSetValue([a.node]).stringValue()}s=s.replace(/^\s*/,'').replace(/\s*$/,'').replace(/\s+/g,' ');return new StringValue(s)},'translate':function(a){assert(this.args.length==3);var b=this.args[0].evaluate(a).stringValue();var c=this.args[1].evaluate(a).stringValue();var d=this.args[2].evaluate(a).stringValue();for(var i=0;i<c.length;++i){b=b.replace(new RegExp(c.charAt(i),'g'),d.charAt(i))}return new StringValue(b)},'boolean':function(a){assert(this.args.length==1);return new BooleanValue(this.args[0].evaluate(a).booleanValue())},'not':function(a){assert(this.args.length==1);var b=!this.args[0].evaluate(a).booleanValue();return new BooleanValue(b)},'true':function(a){assert(this.args.length==0);return new BooleanValue(true)},'false':function(a){assert(this.args.length==0);return new BooleanValue(false)},'lang':function(a){assert(this.args.length==1);var b=this.args[0].evaluate(a).stringValue();var c;var n=a.node;while(n&&n!=n.parentNode){c=n.getAttribute('xml:lang');if(c){break}n=n.parentNode}if(!c){return new BooleanValue(false)}else{var d=new RegExp('^'+b+'$','i');return new BooleanValue(c.match(d)||c.replace(/_.*$/,'').match(d))}},'number':function(a){assert(this.args.length==1||this.args.length==0);if(this.args.length==1){return new NumberValue(this.args[0].evaluate(a).numberValue())}else{return new NumberValue(new NodeSetValue([a.node]).numberValue())}},'sum':function(a){assert(this.args.length==1);var n=this.args[0].evaluate(a).nodeSetValue();var b=0;for(var i=0;i<n.length;++i){b+=xmlValue(n[i])-0}return new NumberValue(b)},'floor':function(a){assert(this.args.length==1);var b=this.args[0].evaluate(a).numberValue();return new NumberValue(Math.floor(b))},'ceiling':function(a){assert(this.args.length==1);var b=this.args[0].evaluate(a).numberValue();return new NumberValue(Math.ceil(b))},'round':function(a){assert(this.args.length==1);var b=this.args[0].evaluate(a).numberValue();return new NumberValue(Math.round(b))},'ext-join':function(a){assert(this.args.length==2);var b=this.args[0].evaluate(a).nodeSetValue();var c=this.args[1].evaluate(a).stringValue();var d='';for(var i=0;i<b.length;++i){if(d){d+=c}d+=xmlValue(b[i])}return new StringValue(d)},'ext-if':function(a){assert(this.args.length==3);if(this.args[0].evaluate(a).booleanValue()){return this.args[1].evaluate(a)}else{return this.args[2].evaluate(a)}},'ext-sprintf':function(a){assert(this.args.length>=1);var b=[];for(var i=0;i<this.args.length;++i){b.push(this.args[i].evaluate(a).stringValue())}return new StringValue(sprintf.apply(null,b))},'ext-cardinal':function(a){assert(this.args.length>=1);var c=this.args[0].evaluate(a).numberValue();var b=[];for(var i=0;i<c;++i){b.push(a.node)}return new NodeSetValue(b)}};function UnionExpr(a,b){this.expr1=a;this.expr2=b};UnionExpr.prototype.evaluate=function(a){var b=this.expr1.evaluate(a).nodeSetValue();var c=this.expr2.evaluate(a).nodeSetValue();var d=b.length;for(var e=0;e<c.length;++e){for(var f=0;f<d;++f){if(b[f]==c[e]){f=d}}b.push(c[e])}return new NodeSetValue(c)};function PathExpr(a,b){this.filter=a;this.rel=b};PathExpr.prototype.evaluate=function(a){var b=this.filter.evaluate(a).nodeSetValue();var c=[];for(var i=0;i<b.length;++i){var d=this.rel.evaluate(a.clone(b[i],i,b)).nodeSetValue();for(var e=0;e<d.length;++e){c.push(d[e])}}return new NodeSetValue(c)};function FilterExpr(a,b){this.expr=a;this.predicate=b};FilterExpr.prototype.evaluate=function(a){var b=this.expr.evaluate(a).nodeSetValue();for(var i=0;i<this.predicate.length;++i){var c=b;b=[];for(var j=0;j<c.length;++j){var n=c[j];if(this.predicate[i].evaluate(a.clone(n,j,c)).booleanValue()){b.push(n)}}};return new NodeSetValue(b)};function UnaryMinusExpr(a){this.expr=a};UnaryMinusExpr.prototype.evaluate=function(a){return new NumberValue(-this.expr.evaluate(a).numberValue())};function BinaryExpr(a,b,c){this.expr1=a;this.expr2=c;this.op=b};BinaryExpr.prototype.evaluate=function(c){var d;switch(this.op.value){case'or':d=new BooleanValue(this.expr1.evaluate(c).booleanValue()||this.expr2.evaluate(c).booleanValue());break;case'and':d=new BooleanValue(this.expr1.evaluate(c).booleanValue()&&this.expr2.evaluate(c).booleanValue());break;case'+':d=new NumberValue(this.expr1.evaluate(c).numberValue()+this.expr2.evaluate(c).numberValue());break;case'-':d=new NumberValue(this.expr1.evaluate(c).numberValue()-this.expr2.evaluate(c).numberValue());break;case'*':d=new NumberValue(this.expr1.evaluate(c).numberValue()*this.expr2.evaluate(c).numberValue());break;case'mod':d=new NumberValue(this.expr1.evaluate(c).numberValue()%this.expr2.evaluate(c).numberValue());break;case'div':d=new NumberValue(this.expr1.evaluate(c).numberValue()/this.expr2.evaluate(c).numberValue());break;case'=':d=this.compare(c,function(a,b){return a==b});break;case'!=':d=this.compare(c,function(a,b){return a!=b});break;case'<':d=this.compare(c,function(a,b){return a<b});break;case'<=':d=this.compare(c,function(a,b){return a<=b});break;case'>':d=this.compare(c,function(a,b){return a>b});break;case'>=':d=this.compare(c,function(a,b){return a>=b});break;default:alert('BinaryExpr.evaluate: '+this.op.value)}return d};BinaryExpr.prototype.compare=function(a,b){var c=this.expr1.evaluate(a);var d=this.expr2.evaluate(a);var e;if(c.type=='node-set'&&d.type=='node-set'){var f=c.nodeSetValue();var g=d.nodeSetValue();e=false;for(var h=0;h<f.length;++h){for(var j=0;j<g.length;++j){if(b(xmlValue(f[h]),xmlValue(g[j]))){e=true;j=g.length;h=f.length}}}}else if(c.type=='node-set'||d.type=='node-set'){if(c.type=='number'){var s=c.numberValue();var n=d.nodeSetValue();e=false;for(var i=0;i<n.length;++i){var k=xmlValue(n[i])-0;if(b(s,k)){e=true;break}}}else if(d.type=='number'){var n=c.nodeSetValue();var s=d.numberValue();e=false;for(var i=0;i<n.length;++i){var k=xmlValue(n[i])-0;if(b(k,s)){e=true;break}}}else if(c.type=='string'){var s=c.stringValue();var n=d.nodeSetValue();e=false;for(var i=0;i<n.length;++i){var k=xmlValue(n[i]);if(b(s,k)){e=true;break}}}else if(d.type=='string'){var n=c.nodeSetValue();var s=d.stringValue();e=false;for(var i=0;i<n.length;++i){var k=xmlValue(n[i]);if(b(k,s)){e=true;break}}}else{e=b(c.booleanValue(),d.booleanValue())}}else if(c.type=='boolean'||d.type=='boolean'){e=b(c.booleanValue(),d.booleanValue())}else if(c.type=='number'||d.type=='number'){e=b(c.numberValue(),d.numberValue())}else{e=b(c.stringValue(),d.stringValue())};return new BooleanValue(e)};function LiteralExpr(a){this.value=a};LiteralExpr.prototype.evaluate=function(a){return new StringValue(this.value)};function NumberExpr(a){this.value=a};NumberExpr.prototype.evaluate=function(a){return new NumberValue(this.value)};function VariableExpr(a){this.name=a};VariableExpr.prototype.evaluate=function(a){return a.getVariable(this.name)};function makeTokenExpr(m){return new TokenExpr(m)};function passExpr(e){return e};function makeLocationExpr1(a,b){b.absolute=true;return b};function makeLocationExpr2(a,b){b.absolute=true;b.prependStep(makeAbbrevStep(a.value));return b};function makeLocationExpr3(a){var b=new LocationExpr();b.appendStep(makeAbbrevStep('.'));b.absolute=true;return b};function makeLocationExpr4(a){var b=new LocationExpr();b.absolute=true;b.appendStep(makeAbbrevStep(a.value));return b};function makeLocationExpr5(a){var b=new LocationExpr();b.appendStep(a);return b};function makeLocationExpr6(a,b,c){a.appendStep(c);return a};function makeLocationExpr7(a,b,c){a.appendStep(makeAbbrevStep(b.value));return a};function makeStepExpr1(a){return makeAbbrevStep(a.value)};function makeStepExpr2(a){return makeAbbrevStep(a.value)};function makeStepExpr3(a,b,c){return new StepExpr(a.value,c)};function makeStepExpr4(a,b){return new StepExpr('attribute',b)};function makeStepExpr5(a){return new StepExpr('child',a)};function makeStepExpr6(a,b){a.appendPredicate(b);return a};function makeAbbrevStep(a){switch(a){case'//':return new StepExpr('descendant-or-self',new NodeTestAny);case'.':return new StepExpr('self',new NodeTestAny);case'..':return new StepExpr('parent',new NodeTestAny)}};function makeNodeTestExpr1(a){return new NodeTestElement};function makeNodeTestExpr2(a,b,c){return new NodeTestNC(a.value)};function makeNodeTestExpr3(a){return new NodeTestName(a.value)};function makeNodeTestExpr4(a,b){var c=a.value.replace(/\s*\($/,'');switch(c){case'node':return new NodeTestAny;case'text':return new NodeTestText;case'comment':return new NodeTestComment;case'processing-instruction':return new NodeTestPI}};function makeNodeTestExpr5(a,b,c){var d=a.replace(/\s*\($/,'');if(d!='processing-instruction'){throw d+' '+Error().stack;}return new NodeTestPI(b.value)};function makePredicateExpr(a,b,c){return new PredicateExpr(b)};function makePrimaryExpr(a,b,c){return b};function makeFunctionCallExpr1(a,b,c){return new FunctionCallExpr(a)};function makeFunctionCallExpr2(a,b,c,d,e){var f=new FunctionCallExpr(a);f.appendArg(c);for(var i=0;i<d.length;++i){f.appendArg(d[i])}return f};function makeArgumentExpr(a,b){return b};function makeUnionExpr(a,b,c){return new UnionExpr(a,c)};function makePathExpr1(a,b,c){return new PathExpr(a,c)};function makePathExpr2(a,b,c){c.prependStep(makeAbbrevStep(b.value));return new PathExpr(a,c)};function makeFilterExpr(a,b){if(b.length>0){return new FilterExpr(a,b)}else{return a}};function makeUnaryMinusExpr(a,b){return new UnaryMinusExpr(b)};function makeBinaryExpr(a,b,c){return new BinaryExpr(a,b,c)};function makeLiteralExpr(a){var b=a.value.substring(1,a.value.length-1);return new LiteralExpr(b)};function makeNumberExpr(a){return new NumberExpr(a.value)};function makeVariableReference(a,b){return new VariableExpr(b.value)};function makeSimpleExpr(d){if(d.charAt(0)=='$'){return new VariableExpr(d.substr(1))}else if(d.charAt(0)=='@'){var a=new NodeTestName(d.substr(1));var b=new StepExpr('attribute',a);var c=new LocationExpr();c.appendStep(b);return c}else if(d.match(/^[0-9]+$/)){return new NumberExpr(d)}else{var a=new NodeTestName(d);var b=new StepExpr('child',a);var c=new LocationExpr();c.appendStep(b);return c}};function makeSimpleExpr2(d){var e=d.split('/');var c=new LocationExpr();for(var i=0;i<e.length;i++){var a=new NodeTestName(e[i]);var b=new StepExpr('child',a);c.appendStep(b)}return c};var xpathAxis={ANCESTOR_OR_SELF:'ancestor-or-self',ANCESTOR:'ancestor',ATTRIBUTE:'attribute',CHILD:'child',DESCENDANT_OR_SELF:'descendant-or-self',DESCENDANT:'descendant',FOLLOWING_SIBLING:'following-sibling',FOLLOWING:'following',NAMESPACE:'namespace',PARENT:'parent',PRECEDING_SIBLING:'preceding-sibling',PRECEDING:'preceding',SELF:'self'};var xpathAxesRe=[xpathAxis.ANCESTOR_OR_SELF,xpathAxis.ANCESTOR,xpathAxis.ATTRIBUTE,xpathAxis.CHILD,xpathAxis.DESCENDANT_OR_SELF,xpathAxis.DESCENDANT,xpathAxis.FOLLOWING_SIBLING,xpathAxis.FOLLOWING,xpathAxis.NAMESPACE,xpathAxis.PARENT,xpathAxis.PRECEDING_SIBLING,xpathAxis.PRECEDING,xpathAxis.SELF].join('|');var TOK_PIPE={label:"|",prec:17,re:new RegExp("^\\|")};var TOK_DSLASH={label:"//",prec:19,re:new RegExp("^//")};var TOK_SLASH={label:"/",prec:30,re:new RegExp("^/")};var TOK_AXIS={label:"::",prec:20,re:new RegExp("^::")};var TOK_COLON={label:":",prec:1000,re:new RegExp("^:")};var TOK_AXISNAME={label:"[axis]",re:new RegExp('^('+xpathAxesRe+')')};var TOK_PARENO={label:"(",prec:34,re:new RegExp("^\\(")};var TOK_PARENC={label:")",re:new RegExp("^\\)")};var TOK_DDOT={label:"..",prec:34,re:new RegExp("^\\.\\.")};var TOK_DOT={label:".",prec:34,re:new RegExp("^\\.")};var TOK_AT={label:"@",prec:34,re:new RegExp("^@")};var TOK_COMMA={label:",",re:new RegExp("^,")};var TOK_OR={label:"or",prec:10,re:new RegExp("^or\\b")};var TOK_AND={label:"and",prec:11,re:new RegExp("^and\\b")};var TOK_EQ={label:"=",prec:12,re:new RegExp("^=")};var TOK_NEQ={label:"!=",prec:12,re:new RegExp("^!=")};var TOK_GE={label:">=",prec:13,re:new RegExp("^>=")};var TOK_GT={label:">",prec:13,re:new RegExp("^>")};var TOK_LE={label:"<=",prec:13,re:new RegExp("^<=")};var TOK_LT={label:"<",prec:13,re:new RegExp("^<")};var TOK_PLUS={label:"+",prec:14,re:new RegExp("^\\+"),left:true};var TOK_MINUS={label:"-",prec:14,re:new RegExp("^\\-"),left:true};var TOK_DIV={label:"div",prec:15,re:new RegExp("^div\\b"),left:true};var TOK_MOD={label:"mod",prec:15,re:new RegExp("^mod\\b"),left:true};var TOK_BRACKO={label:"[",prec:32,re:new RegExp("^\\[")};var TOK_BRACKC={label:"]",re:new RegExp("^\\]")};var TOK_DOLLAR={label:"$",re:new RegExp("^\\$")};var TOK_NCNAME={label:"[ncname]",re:new RegExp('^[a-z][-\\w]*','i')};var TOK_ASTERISK={label:"*",prec:15,re:new RegExp("^\\*"),left:true};var TOK_LITERALQ={label:"[litq]",prec:20,re:new RegExp("^'[^\\']*'")};var TOK_LITERALQQ={label:"[litqq]",prec:20,re:new RegExp('^"[^\\"]*"')};var TOK_NUMBER={label:"[number]",prec:35,re:new RegExp('^\\d+(\\.\\d*)?')};var TOK_QNAME={label:"[qname]",re:new RegExp('^([a-z][-\\w]*:)?[a-z][-\\w]*','i')};var TOK_NODEO={label:"[nodetest-start]",re:new RegExp('^(processing-instruction|comment|text|node)\\(')};var xpathTokenRules=[TOK_DSLASH,TOK_SLASH,TOK_DDOT,TOK_DOT,TOK_AXIS,TOK_COLON,TOK_AXISNAME,TOK_NODEO,TOK_PARENO,TOK_PARENC,TOK_BRACKO,TOK_BRACKC,TOK_AT,TOK_COMMA,TOK_OR,TOK_AND,TOK_NEQ,TOK_EQ,TOK_GE,TOK_GT,TOK_LE,TOK_LT,TOK_PLUS,TOK_MINUS,TOK_ASTERISK,TOK_PIPE,TOK_MOD,TOK_DIV,TOK_LITERALQ,TOK_LITERALQQ,TOK_NUMBER,TOK_QNAME,TOK_NCNAME,TOK_DOLLAR];var XPathLocationPath={label:"LocationPath"};var XPathRelativeLocationPath={label:"RelativeLocationPath"};var XPathAbsoluteLocationPath={label:"AbsoluteLocationPath"};var XPathStep={label:"Step"};var XPathNodeTest={label:"NodeTest"};var XPathPredicate={label:"Predicate"};var XPathLiteral={label:"Literal"};var XPathExpr={label:"Expr"};var XPathPrimaryExpr={label:"PrimaryExpr"};var XPathVariableReference={label:"Variablereference"};var XPathNumber={label:"Number"};var XPathFunctionCall={label:"FunctionCall"};var XPathArgumentRemainder={label:"ArgumentRemainder"};var XPathPathExpr={label:"PathExpr"};var XPathUnionExpr={label:"UnionExpr"};var XPathFilterExpr={label:"FilterExpr"};var XPathDigits={label:"Digits"};var xpathNonTerminals=[XPathLocationPath,XPathRelativeLocationPath,XPathAbsoluteLocationPath,XPathStep,XPathNodeTest,XPathPredicate,XPathLiteral,XPathExpr,XPathPrimaryExpr,XPathVariableReference,XPathNumber,XPathFunctionCall,XPathArgumentRemainder,XPathPathExpr,XPathUnionExpr,XPathFilterExpr,XPathDigits];var Q_01={label:"?"};var Q_MM={label:"*"};var Q_1M={label:"+"};var ASSOC_LEFT=true;var xpathGrammarRules=[[XPathLocationPath,[XPathRelativeLocationPath],18,passExpr],[XPathLocationPath,[XPathAbsoluteLocationPath],18,passExpr],[XPathAbsoluteLocationPath,[TOK_SLASH,XPathRelativeLocationPath],18,makeLocationExpr1],[XPathAbsoluteLocationPath,[TOK_DSLASH,XPathRelativeLocationPath],18,makeLocationExpr2],[XPathAbsoluteLocationPath,[TOK_SLASH],0,makeLocationExpr3],[XPathAbsoluteLocationPath,[TOK_DSLASH],0,makeLocationExpr4],[XPathRelativeLocationPath,[XPathStep],31,makeLocationExpr5],[XPathRelativeLocationPath,[XPathRelativeLocationPath,TOK_SLASH,XPathStep],31,makeLocationExpr6],[XPathRelativeLocationPath,[XPathRelativeLocationPath,TOK_DSLASH,XPathStep],31,makeLocationExpr7],[XPathStep,[TOK_DOT],33,makeStepExpr1],[XPathStep,[TOK_DDOT],33,makeStepExpr2],[XPathStep,[TOK_AXISNAME,TOK_AXIS,XPathNodeTest],33,makeStepExpr3],[XPathStep,[TOK_AT,XPathNodeTest],33,makeStepExpr4],[XPathStep,[XPathNodeTest],33,makeStepExpr5],[XPathStep,[XPathStep,XPathPredicate],33,makeStepExpr6],[XPathNodeTest,[TOK_ASTERISK],33,makeNodeTestExpr1],[XPathNodeTest,[TOK_NCNAME,TOK_COLON,TOK_ASTERISK],33,makeNodeTestExpr2],[XPathNodeTest,[TOK_QNAME],33,makeNodeTestExpr3],[XPathNodeTest,[TOK_NODEO,TOK_PARENC],33,makeNodeTestExpr4],[XPathNodeTest,[TOK_NODEO,XPathLiteral,TOK_PARENC],33,makeNodeTestExpr5],[XPathPredicate,[TOK_BRACKO,XPathExpr,TOK_BRACKC],33,makePredicateExpr],[XPathPrimaryExpr,[XPathVariableReference],33,passExpr],[XPathPrimaryExpr,[TOK_PARENO,XPathExpr,TOK_PARENC],33,makePrimaryExpr],[XPathPrimaryExpr,[XPathLiteral],30,passExpr],[XPathPrimaryExpr,[XPathNumber],30,passExpr],[XPathPrimaryExpr,[XPathFunctionCall],30,passExpr],[XPathFunctionCall,[TOK_QNAME,TOK_PARENO,TOK_PARENC],-1,makeFunctionCallExpr1],[XPathFunctionCall,[TOK_QNAME,TOK_PARENO,XPathExpr,XPathArgumentRemainder,Q_MM,TOK_PARENC],-1,makeFunctionCallExpr2],[XPathArgumentRemainder,[TOK_COMMA,XPathExpr],-1,makeArgumentExpr],[XPathUnionExpr,[XPathPathExpr],20,passExpr],[XPathUnionExpr,[XPathUnionExpr,TOK_PIPE,XPathPathExpr],20,makeUnionExpr],[XPathPathExpr,[XPathLocationPath],20,passExpr],[XPathPathExpr,[XPathFilterExpr],19,passExpr],[XPathPathExpr,[XPathFilterExpr,TOK_SLASH,XPathRelativeLocationPath],20,makePathExpr1],[XPathPathExpr,[XPathFilterExpr,TOK_DSLASH,XPathRelativeLocationPath],20,makePathExpr2],[XPathFilterExpr,[XPathPrimaryExpr,XPathPredicate,Q_MM],20,makeFilterExpr],[XPathExpr,[XPathPrimaryExpr],16,passExpr],[XPathExpr,[XPathUnionExpr],16,passExpr],[XPathExpr,[TOK_MINUS,XPathExpr],-1,makeUnaryMinusExpr],[XPathExpr,[XPathExpr,TOK_OR,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_AND,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_EQ,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_NEQ,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_LT,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_LE,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_GT,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_GE,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_PLUS,XPathExpr],-1,makeBinaryExpr,ASSOC_LEFT],[XPathExpr,[XPathExpr,TOK_MINUS,XPathExpr],-1,makeBinaryExpr,ASSOC_LEFT],[XPathExpr,[XPathExpr,TOK_ASTERISK,XPathExpr],-1,makeBinaryExpr,ASSOC_LEFT],[XPathExpr,[XPathExpr,TOK_DIV,XPathExpr],-1,makeBinaryExpr,ASSOC_LEFT],[XPathExpr,[XPathExpr,TOK_MOD,XPathExpr],-1,makeBinaryExpr,ASSOC_LEFT],[XPathLiteral,[TOK_LITERALQ],-1,makeLiteralExpr],[XPathLiteral,[TOK_LITERALQQ],-1,makeLiteralExpr],[XPathNumber,[TOK_NUMBER],-1,makeNumberExpr],[XPathVariableReference,[TOK_DOLLAR,TOK_QNAME],200,makeVariableReference]];var xpathRules=[];function xpathParseInit(){if(xpathRules.length){return};xpathGrammarRules.sort(function(a,b){var c=a[1].length;var d=b[1].length;if(c<d){return 1}else if(c>d){return-1}else{return 0}});var k=1;for(var i=0;i<xpathNonTerminals.length;++i){xpathNonTerminals[i].key=k++};for(i=0;i<xpathTokenRules.length;++i){xpathTokenRules[i].key=k++};if(xpathdebug)Log.write('XPath parse INIT: '+k+' rules');function push_(a,b,c){if(!a[b]){a[b]=[]}a[b].push(c)};for(i=0;i<xpathGrammarRules.length;++i){var e=xpathGrammarRules[i];var f=e[1];for(var j=f.length-1;j>=0;--j){if(f[j]==Q_1M){push_(xpathRules,f[j-1].key,e);break}else if(f[j]==Q_MM||f[j]==Q_01){push_(xpathRules,f[j-1].key,e);--j}else{push_(xpathRules,f[j].key,e);break}}};if(xpathdebug)Log.write('XPath parse INIT: '+xpathRules.length+' rule bins');var g=0;mapExec(xpathRules,function(i){if(i){g+=i.length}});if(xpathdebug)Log.write('XPath parse INIT: '+(g/xpathRules.length)+' average bin size')};function xpathCollectDescendants(a,b){for(var n=b.firstChild;n;n=n.nextSibling){a.push(n);arguments.callee(a,n)}};function xpathCollectDescendantsReverse(a,b){for(var n=b.lastChild;n;n=n.previousSibling){a.push(n);arguments.callee(a,n)}};function xpathDomEval(a,b){var c=xpathParse(a);var d=c.evaluate(new ExprContext(b));return d};function xpathSort(a,b){if(b.length==0){return};var c=[];for(var i=0;i<a.nodelist.length;++i){var d=a.nodelist[i];var e={node:d,key:[]};var f=a.clone(d,0,[d]);for(var j=0;j<b.length;++j){var s=b[j];var g=s.expr.evaluate(f);var h;if(s.type=='text'){h=g.stringValue()}else if(s.type=='number'){h=g.numberValue()}e.key.push({value:h,order:s.order})};e.key.push({value:i,order:'ascending'});c.push(e)};c.sort(xpathSortByKey);var k=[];for(var i=0;i<c.length;++i){k.push(c[i].node)}a.nodelist=k;a.setNode(k[0],0)};function xpathSortByKey(a,b){for(var i=0;i<a.key.length;++i){var o=a.key[i].order=='descending'?-1:1;if(a.key[i].value>b.key[i].value){return+1*o}else if(a.key[i].value<b.key[i].value){return-1*o}};return 0};function el(i){return document.getElementById(i)};function px(x){return x+'px'};function stringSplit(s,c){var a=s.indexOf(c);if(a==-1){return[s]}var b=[];b.push(s.substr(0,a));while(a!=-1){var d=s.indexOf(c,a+1);if(d!=-1){b.push(s.substr(a+1,d-a-1))}else{b.push(s.substr(a+1))}a=d};return b};function xmlValue(a){if(!a){return''};var b='';if(a.nodeType==DOM_TEXT_NODE||a.nodeType==DOM_CDATA_SECTION_NODE||a.nodeType==DOM_ATTRIBUTE_NODE){b+=a.nodeValue}else if(a.nodeType==DOM_ELEMENT_NODE||a.nodeType==DOM_DOCUMENT_NODE||a.nodeType==DOM_DOCUMENT_FRAGMENT_NODE){for(var i=0;i<a.childNodes.length;++i){b+=arguments.callee(a.childNodes[i])}}return b};function xmlText(b){var c='';if(b.nodeType==DOM_TEXT_NODE){c+=xmlEscapeText(b.nodeValue)}else if(b.nodeType==DOM_ELEMENT_NODE){c+='<'+b.nodeName;for(var i=0;i<b.attributes.length;++i){var a=b.attributes[i];if(a&&a.nodeName&&a.nodeValue){c+=' '+a.nodeName;c+='="'+xmlEscapeAttr(a.nodeValue)+'"'}};if(b.childNodes.length==0){c+='/>'}else{c+='>';for(var i=0;i<b.childNodes.length;++i){c+=arguments.callee(b.childNodes[i])}c+='</'+b.nodeName+'>'}}else if(b.nodeType==DOM_DOCUMENT_NODE||b.nodeType==DOM_DOCUMENT_FRAGMENT_NODE){for(var i=0;i<b.childNodes.length;++i){c+=arguments.callee(b.childNodes[i])}}return c};function mapExec(a,b){for(var i=0;i<a.length;++i){b(a[i])}};function mapExpr(a,b){var c=[];for(var i=0;i<a.length;++i){c.push(b(a[i]))}return c};function reverseInplace(a){for(var i=0;i<a.length/2;++i){var h=a[i];var b=a.length-i-1;a[i]=a[b];a[b]=h}};function copyArray(a,b){for(var i=0;i<b.length;++i){a.push(b[i])}};function assert(b){if(!b){throw'assertion failed';}};var DOM_ELEMENT_NODE=1;var DOM_ATTRIBUTE_NODE=2;var DOM_TEXT_NODE=3;var DOM_CDATA_SECTION_NODE=4;var DOM_ENTITY_REFERENCE_NODE=5;var DOM_ENTITY_NODE=6;var DOM_PROCESSING_INSTRUCTION_NODE=7;var DOM_COMMENT_NODE=8;var DOM_DOCUMENT_NODE=9;var DOM_DOCUMENT_TYPE_NODE=10;var DOM_DOCUMENT_FRAGMENT_NODE=11;var DOM_NOTATION_NODE=12;var xpathdebug=false;var xsltdebug=false;function xmlEscapeText(s){return s.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;')};function xmlEscapeAttr(s){return xmlEscapeText(s).replace(/\"/g,'&quot;')};function xmlEscapeTags(s){return s.replace(/</g,'&lt;').replace(/>/g,'&gt;')};var logging__=true;function Log(){};Log.lines=[];Log.write=function(s){if(logging__){this.lines.push(xmlEscapeText(s));this.show()}};Log.writeXML=function(a){if(logging__){var b=a.replace(/</g,'\n<');var c=xmlEscapeText(b);var d=c.replace(/\s*\n(\s|\n)*/g,'<br/>');this.lines.push(d);this.show()}};Log.writeRaw=function(s){if(logging__){this.lines.push(s);this.show()}};Log.clear=function(){if(logging__){var l=this.div();l.innerHTML='';this.lines=[]}};Log.show=function(){var l=this.div();l.innerHTML+=this.lines.join('<br/>')+'<br/>';this.lines=[];l.scrollTop=l.scrollHeight};Log.div=function(){var l=document.getElementById('log');if(!l){l=document.createElement('div');l.id='log';l.style.position='absolute';l.style.right='5px';l.style.top='5px';l.style.width='250px';l.style.height='150px';l.style.overflow='auto';l.style.backgroundColor='#f0f0f0';l.style.border='1px solid gray';l.style.fontSize='10px';l.style.padding='5px';document.body.appendChild(l)}return l};function Timer(){}Timer.start=function(){};Timer.end=function(){};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(e){a=null}if(!a)Spry.Utils.msProgIDs.splice(0,1)}}}catch(e){a=null};if(!a)Spry.Debug.reportError("Failed to create an XMLHttpRequest object!");return a};Spry.Utils.loadURL=function(a,b,c,d,f){var g=new Spry.Utils.loadURL.Request();g.method=a;g.url=b;g.async=c;g.successCallback=d;Spry.Utils.setOptions(g,f);try{g.xhRequest=Spry.Utils.createXMLHttpRequest();if(!g.xhRequest)return null;if(g.async)g.xhRequest.onreadystatechange=function(){Spry.Utils.loadURL.callback(g)};g.xhRequest.open(g.method,g.url,g.async,g.username,g.password);if(g.headers){for(var h in g.headers)g.xhRequest.setRequestHeader(h,g.headers[h])};g.xhRequest.send(g.postData);if(!g.async)Spry.Utils.loadURL.callback(g)}catch(e){g=null;Spry.Debug.reportError("Exception caught while loading "+b+": "+e)};return g};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 a=Spry.Utils.loadURL.Request.props;var b=a.length;for(var i=0;i<b;i++)this[a[i]]=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)return;var c=Spry.Utils.loadURL.Request.props;var d=c.length;for(var i=0;i<d;i++){var e=c[i];if(a[e]!=undefined){this[e]=a[e];if(b)a[e]=undefined}}};Spry.Utils.loadURL.Request.prototype.clone=function(){var a=Spry.Utils.loadURL.Request.props;var b=a.length;var c=new Spry.Utils.loadURL.Request;for(var i=0;i<b;i++)c[a[i]]=this[a[i]];if(this.headers){c.headers={};Spry.Utils.setOptions(c.headers,this.headers)}return c};Spry.Utils.setInnerHTML=function(a,b,c){if(!a)return;a=$(a);var d="<script[^>]*>(.|\s|\n|\r)*?</script>";a.innerHTML=b.replace(new RegExp(d,"img"),"");if(c)return;var e=b.match(new RegExp(d,"img"));if(e){var f=e.length;for(var i=0;i<f;i++){var s=e[i].replace(/<script[^>]*>[\s\r\n]*(<\!--)?|(-->)?[\s\r\n]*<\/script>/img,"");Spry.Utils.eval(s)}}};Spry.Utils.updateContent=function(b,c,d,e){var f=(e&&e.method)?e.method:"GET";Spry.Utils.loadURL(f,c,false,function(a){Spry.Utils.setInnerHTML(b,a.xhRequest.responseText);if(d)d(b,c)},e)};Spry.Utils.addEventListener=function(a,b,c,d){try{a=$(a);if(a.addEventListener)a.addEventListener(b,c,d);else if(a.attachEvent)a.attachEvent("on"+b,c)}catch(e){}};Spry.Utils.removeEventListener=function(a,b,c,d){try{a=$(a);if(a.removeEventListener)a.removeEventListener(b,c,d);else if(a.detachEvent)a.detachEvent("on"+b,c)}catch(e){}};Spry.Utils.addLoadListener=function(a){if(typeof window.addEventListener!='undefined')window.addEventListener('load',a,false);else if(typeof document.addEventListener!='undefined')document.addEventListener('load',a,false);else if(typeof window.attachEvent!='undefined')window.attachEvent('onload',a)};Spry.Utils.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 d=Spry.Utils.decodeEntities.div;if(!d){d=document.createElement('div');Spry.Utils.decodeEntities.div=d;if(!d)return a}d.innerHTML=a;if(d.childNodes.length==1&&d.firstChild.nodeType==3&&d.firstChild.nextSibling==null)a=d.firstChild.data;else{a=a.replace(/&lt;/,"<");a=a.replace(/&gt;/,">");a=a.replace(/&quot;/,"\"");a=a.replace(/&amp;/,"&")}return a};Spry.Utils.fixupIETagAttributes=function(a){var b="";var c=a.match(/^<[^\s>]+\s*/)[0];var d=a.match(/\s*\/?>$/)[0];var e=a.replace(/^<[^\s>]+\s*|\s*\/?>/g,"");b+=c;if(e){var f=0;var g=0;while(f<e.length){while(e.charAt(g)!='='&&g<e.length)++g;if(g>=e.length){b+=e.substring(f,g);break};++g;b+=e.substring(f,g);f=g;if(e.charAt(g)=='"'||e.charAt(g)=="'"){var h=g++;while(g<e.length){if(e.charAt(g)==e.charAt(h)){g++;break}else if(e.charAt(g)=="\\")g++;g++};b+=e.substring(f,g);f=g}else{b+="\"";var i=e.slice(g).search(/\s/);g=(i!=-1)?(g+i):e.length;b+=e.slice(f,g);b+="\"";f=g}}};b+=d;return b};Spry.Utils.fixUpIEInnerHTML=function(a){var b="";var c=new RegExp("<\\!--|<\\!\\[CDATA\\[|<\\w+[^<>]*>|-->|\\]\\](>|\&gt;)","g");var d=0;var e=0;while(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 if(!e&&f[0].charAt(0)=='<')b+=Spry.Utils.fixupIETagAttributes(f[0]);else b+=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(e){try{var d=new DOMParser;b=d.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="";var 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(var i=0;i<a.length;i++){if(!c)b+=", ";b+=Spry.Utils.serializeObject(a[i]);c=false}b+="]"}else if(d=="object"){b+="{";for(var p in a){if(!c)b+=", ";b+="\""+p+"\": "+Spry.Utils.serializeObject(a[p]);c=false}b+="}"}return b};Spry.Utils.getNodesByFunc=function(a,b){var c=new Array;var d=new Array;var f=a;while(f){if(b(f))d.push(f);if(f.hasChildNodes()){c.push(f);f=f.firstChild}else{if(f==a)f=null;else try{f=f.nextSibling}catch(e){f=null}}while(!f&&c.length>0){f=c.pop();if(f==a)f=null;else try{f=f.nextSibling}catch(e){f=null}}}if(c&&c.length>0)Spry.Debug.trace("-- WARNING: Spry.Utils.getNodesByFunc() failed to traverse all nodes!\n");return d};Spry.Utils.addClassName=function(a,b){a=$(a);if(!a||!b||(a.className&&a.className.search(new RegExp("\\b"+b+"\\b"))!=-1))return;a.className+=(a.className?" ":"")+b};Spry.Utils.removeClassName=function(a,b){a=$(a);if(!a||!b||(a.className&&a.className.search(new RegExp("\\b"+b+"\\b"))==-1))return;a.className=a.className.replace(new RegExp("\\s*\\b"+b+"\\b","g"),"")};Spry.Utils.getFirstChildWithNodeName=function(a,b){var c=a.firstChild;while(c){if(c.nodeName==b)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(a){var b="";if(!a)return;try{var c=a.firstChild;while(c){try{if(c.nodeType==3)b+=Spry.Utils.encodeEntities(c.data);else if(c.nodeType==4)b+=c.data}catch(e){Spry.Debug.reportError("Spry.Utils.getNodeText() exception caught: "+e+"\n")};c=c.nextSibling}}catch(e){Spry.Debug.reportError("Spry.Utils.getNodeText() exception caught: "+e+"\n")}return b};Spry.Utils.CreateObjectForNode=function(a){if(!a)return null;var b=null;var i=0;var c=null;try{for(i=0;i<a.attributes.length;i++){c=a.attributes[i];if(c&&c.nodeType==2){if(!b){b=new Object();if(!b){Spry.Debug.reportError("Spry.Utils.CreateObjectForNode(): Object creation failed!");return null}}b["@"+c.name]=c.value}}}catch(e){Spry.Debug.reportError("Spry.Utils.CreateObjectForNode() caught exception while accessing attributes: "+e+"\n")}var d=a.firstChild;if(d&&!d.nextSibling&&d.nodeType!=1){if(!b){b=new Object();if(!b){Spry.Debug.reportError("Spry.Utils.CreateObjectForNode(): Object creation failed!");return null}};b[a.nodeName]=Spry.Utils.getNodeText(a)}while(d){if(d.nodeType==1){if(!Spry.Utils.nodeContainsElementNode(d)){var f=Spry.Utils.getNodeText(d);if(!b){b=new Object();if(!b){Spry.Debug.reportError("Spry.Utils.CreateObjectForNode(): Object creation failed!");return null}}b[d.nodeName]=f;try{var g=d.nodeName+"/@";for(i=0;i<d.attributes.length;i++){c=d.attributes[i];if(c&&c.nodeType==2)b[g+c.name]=c.value}}catch(e){Spry.Debug.reportError("Spry.Utils.CreateObjectForNode() caught exception while accessing attributes: "+e+"\n")}}};d=d.nextSibling}return b};Spry.Utils.getRecordSetFromXMLDoc=function(a,b){if(!a||!b)return null;var c=new Object();c.xmlDoc=a;c.xmlPath=b;c.dataHash=new Object;c.data=new Array;c.getData=function(){return this.data};var d=new ExprContext(a);var f=xpathParse(b);var e=f.evaluate(d);var g=e.nodeSetValue();var h=true;if(g&&g.length>0)h=g[0].nodeType!=2;var j=0;for(var i=0;i<g.length;i++){var k=null;if(h)k=Spry.Utils.CreateObjectForNode(g[i]);else{k=new Object;k["@"+g[i].name]=g[i].value}if(k){k['ds_RowID']=j++;c.dataHash[k['ds_RowID']]=k;c.data.push(k)}}return c};Spry.Utils.setOptions=function(a,b,c){if(!b)return;for(var d in b){if(c&&b[d]==undefined)continue;a[d]=b[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(a,b,c){var d=null;if(!c){this.clearSelection()}else{for(var i=0;i<this.selectedElements.length;i++){d=this.selectedElements[i].element;if(d.element==a){if(d.className!=b){Spry.Utils.removeClassName(a,d.className);Spry.Utils.addClassName(a,b)}return}}};d=new Object;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 i=0;i<this.selectedElements.length;i++){var b=this.selectedElements[i].element;if(b.element==a){Spry.Utils.removeClassName(b.element,b.className);return}}};Spry.Utils.SelectionManager.SelectionGroup.prototype.clearSelection=function(){var a=null;do{a=this.selectedElements.shift();if(a)Spry.Utils.removeClassName(a.element,a.className)}while(a)};Spry.Utils.SelectionManager.getSelectionGroup=function(a){if(!a)return null;var b=Spry.Utils.SelectionManager.selectionGroups[a];if(!b){b=new Spry.Utils.SelectionManager.SelectionGroup();Spry.Utils.SelectionManager.selectionGroups[a]=b};return b};Spry.Utils.SelectionManager.select=function(a,b,c,d){var e=Spry.Utils.SelectionManager.getSelectionGroup(a);if(!e)return;e.select(b,c,d)};Spry.Utils.SelectionManager.unSelect=function(a,b){var c=Spry.Utils.SelectionManager.getSelectionGroup(a);if(!c)return;c.unSelect(b,className)};Spry.Utils.SelectionManager.clearSelection=function(a){var b=Spry.Utils.SelectionManager.getSelectionGroup(a);if(!b)return;b.clearSelection()};function $(){var a=new Array();for(var i=0;i<arguments.length;i++){var b=arguments[i];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(a){if(!a)return;var b=this.observers.length;for(var i=0;i<b;i++){if(this.observers[i]==a)return}this.observers[b]=a};Spry.Utils.Notifier.prototype.removeObserver=function(a){if(!a)return;for(var i=0;i<this.observers.length;i++){if(this.observers[i]==a){this.observers.splice(i,1);break}}};Spry.Utils.Notifier.prototype.notifyObservers=function(a,b){if(!a)return;if(!this.suppressNotifications){var c=this.observers.length;for(var i=0;i<c;i++){var d=this.observers[i];if(d){if(typeof d=="function")d(a,this,b);else if(d[a])d[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.createDebugWindow=function(){if(!Spry.Debug.enableTrace||Spry.Debug.debugWindow)return;try{Spry.Debug.debugWindow=document.createElement("div");var a=Spry.Debug.debugWindow;a.style.fontSize="12px";a.style.fontFamily="console";a.style.position="absolute";a.style.width="400px";a.style.height="300px";a.style.overflow="auto";a.style.border="solid 1px black";a.style.backgroundColor="white";a.style.color="black";a.style.bottom="0px";a.style.right="0px";a.setAttribute("id","SpryDebugWindow");document.body.appendChild(Spry.Debug.debugWindow)}catch(e){}};Spry.Debug.debugOut=function(a,b){if(!Spry.Debug.debugWindow){Spry.Debug.createDebugWindow();if(!Spry.Debug.debugWindow)return};var d=document.createElement("div");if(b)d.style.backgroundColor=b;d.innerHTML=a;Spry.Debug.debugWindow.appendChild(d)};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(t){if(!t)t=document.body;var u=null;var v=Spry.Utils.getNodesByFunc(t,function(a){try{if(a.nodeType!=1)return false;var b="spry:region";var c=a.attributes.getNamedItem(b);if(!c){b="spry:detailregion";c=a.attributes.getNamedItem(b)}if(c){if(u){var d=a.parentNode;while(d){if(d==u){Spry.Debug.reportError("Found a nested "+b+" in the following markup. Nested regions are currently not supported.<br/><pre>"+Spry.Utils.encodeEntities(d.innerHTML)+"</pre>");return false}d=d.parentNode}};if(c.value){c=a.attributes.getNamedItem("id");if(!c||!c.value){a.setAttribute("id","spryregion"+(++Spry.Data.initRegions.nextUniqueRegionID))};u=a;return true}else Spry.Debug.reportError(b+" attributes require one or more data set names as values!")}}catch(e){}return false});var w,dataSets,i;for(i=0;i<v.length;i++){var x=v[i];var y=false;w=x.attributes.getNamedItem("id").value;attr=x.attributes.getNamedItem("spry:region");if(!attr){attr=x.attributes.getNamedItem("spry:detailregion");y=true};if(!attr.value){Spry.Debug.reportError("spry:region and spry:detailregion attributes require one or more data set names as values!");continue};x.attributes.removeNamedItem(attr.nodeName);Spry.Utils.removeClassName(x,Spry.Data.Region.hiddenRegionClassName);dataSets=Spry.Data.Region.strToDataSetsArray(attr.value);if(!dataSets.length){Spry.Debug.reportError("spry:region or spry:detailregion attribute has no data set!");continue}var z=false;var A=false;var B="";var C=null;var D={};var E={};attr=x.attributes.getNamedItem("spry:readystate");if(attr&&attr.value)E["ready"]=attr.value;attr=x.attributes.getNamedItem("spry:errorstate");if(attr&&attr.value)E["error"]=attr.value;attr=x.attributes.getNamedItem("spry:loadingstate");if(attr&&attr.value)E["loading"]=attr.value;var F=Spry.Utils.getNodesByFunc(x,function(a){try{if(a.nodeType==1){var b=a.attributes;var c=Spry.Data.Region.PI.orderedInstructions.length;var d=null;var f=null;for(var i=0;i<c;i++){var g=Spry.Data.Region.PI.orderedInstructions[i];var h=b.getNamedItem(g);if(!h)continue;var j=Spry.Data.Region.PI.instructions[g];var k=(a==x)?true:j.childrenOnly;var l=j.getOpenTag(a,g);var m=j.getCloseTag(a,g);if(k){var n=document.createComment(l);var o=document.createComment(m);if(!d)a.insertBefore(n,a.firstChild);else a.insertBefore(n,d.nextSibling);d=n;if(!f)a.appendChild(o);else a.insertBefore(o,f);f=o}else{var p=a.parentNode;p.insertBefore(document.createComment(l),a);p.insertBefore(document.createComment(m),a.nextSibling)};if(g=="spry:state")D[h.value]=true;a.removeAttribute(g)};if(Spry.Data.Region.enableBehaviorAttributes){var q=Spry.Data.Region.behaviorAttrs;for(var r in q){var s=b.getNamedItem(r);if(s){z=true;if(q[r].setup)q[r].setup(a,s.value)}}}}}catch(e){}return false});B=x.innerHTML;if(window.ActiveXObject&&!Spry.Data.Region.disableIEInnerHTMLFixUp&&B.search(/=\{/)!=-1){if(Spry.Data.Region.debug)Spry.Debug.trace("<hr />Performing IE innerHTML fix up of Region: "+w+"<br /><br />"+Spry.Utils.encodeEntities(B));B=Spry.Utils.fixUpIEInnerHTML(B)};if(Spry.Data.Region.debug)Spry.Debug.trace("<hr />Region template markup for '"+w+"':<br /><br />"+Spry.Utils.encodeEntities(B));if(!A){x.innerHTML=""};var G=new Spry.Data.Region(x,w,y,B,dataSets,D,E,z);Spry.Data.regionsArray[G.name]=G};Spry.Data.updateAllRegions()};Spry.Data.initRegions.nextUniqueRegionID=0;Spry.Data.updateRegion=function(a){if(!a||!Spry.Data.regionsArray||!Spry.Data.regionsArray[a])return;try{Spry.Data.regionsArray[a].updateContent()}catch(e){Spry.Debug.reportError("Spry.Data.updateRegion("+a+") caught an exception: "+e+"\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(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)return;var b={oldRowID:this.curRowID,newRowID:a};this.curRowID=a;this.notifyObservers("onCurrentRowChanged",b)};Spry.Data.DataSet.prototype.getRowNumber=function(a){if(a&&this.data&&this.data.length){var b=this.data.length;for(var i=0;i<b;i++){if(this.data[i]==a)return i}};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(a,b,c){var d=[];var e=this.getData(c);if(e){var f=e.length;for(var i=0;i<f;i++){var g=e[i];var h=true;for(var j in a){if(a[j]!=g[j]){h=false;break}}if(h){if(b)return g;d.push(g)}}};return d};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 a=this.data;this.data=[];this.dataHash={};var b={};var i=0;for(var i=0;i<a.length;i++){var c=a[i];var d="";for(var e in c){if(e!="ds_RowID"){if(d)d+=",";d+=e+":"+"\""+c[e]+"\""}}if(!b[d]){this.data.push(c);this.dataHash[c['ds_RowID']]=c;b[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(a,b){if(!a)return;if(typeof a=="string")a=[a,"ds_RowID"];else if(a.length<2&&a[0]!="ds_RowID")a.push("ds_RowID");if(!b)b="toggle";if(b=="toggle"){if(this.lastSortColumns.length>0&&this.lastSortColumns[0]==a[0]&&this.lastSortOrder=="ascending")b="descending";else b="ascending"};if(b!="ascending"&&b!="descending"){Spry.Debug.reportError("Invalid sort order type specified: "+b+"\n");return};var c={oldSortColumns:this.lastSortColumns,oldSortOrder:this.lastSortOrder,newSortColumns:a,newSortOrder:b};this.notifyObservers("onPreSort",c);var d=a[a.length-1];var e=Spry.Data.DataSet.prototype.sort.getSortFunc(d,this.getColumnType(d),b);for(var i=a.length-2;i>=0;i--){d=a[i];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);if(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(m,n,o){var p=null;if(n=="number"){if(o=="ascending")p=function(a,b){return a[m]-b[m]};else p=function(a,b){return b[m]-a[m]}}else if(n=="date"){if(o=="ascending")p=function(a,b){var c=a[m];var d=b[m];c=c?(new Date(c)):0;d=d?(new Date(d)):0;return c-d};else p=function(a,b){var c=a[m];var d=b[m];c=c?(new Date(c)):0;d=d?(new Date(d)):0;return d-c}}else{if(o=="ascending")p=function(a,b){var c=a[m].toString();var d=b[m].toString();var e=c.toLowerCase();var f=d.toLowerCase();var g=c.length>d.length?d.length:c.length;for(var i=0;i<g;i++){var h=e.charAt(i);var j=f.charAt(i);var k=c.charAt(i);var l=d.charAt(i);if(h>j){return 1}else if(h<j){return-1}else if(k>l){return 1}else if(k<l){return-1}}if(c.length==d.length){return 0}else if(c.length>d.length){return 1}else{return-1}};else p=function(a,b){var c=a[m].toString();var d=b[m].toString();var e=c.toLowerCase();var f=d.toLowerCase();var g=c.length>d.length?d.length:c.length;for(var i=0;i<g;i++){var h=e.charAt(i);var j=f.charAt(i);var k=c.charAt(i);var l=d.charAt(i);if(h>j){return-1}else if(h<j){return 1}else if(k>l){return-1}else if(k<l){return 1}}if(c.length==d.length){return 0}else if(c.length>d.length){return-1}else{return 1}}};return p};Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc=function(d,e){return function(a,b){var c=d(a,b);if(c==0)c=e(a,b);return c}};Spry.Data.DataSet.prototype.filterData=function(a,b){var c=false;if(!a){this.filterDataFunc=null;c=true}else{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}var d=this.data;this.data=[];this.dataHash={};for(var i=0;i<d.length;i++){var e=a(this,d[i],i);if(e){this.data.push(e);this.dataHash[e["ds_RowID"]]=e}}c=true}};if(c){if(!b){this.disableNotifications();if(this.filterFunc)this.filter(this.filterFunc,true);this.enableNotifications()};this.notifyObservers("onDataChanged")}};Spry.Data.DataSet.prototype.filter=function(a,b){var c=false;if(!a){if(this.filterFunc&&this.unfilteredData){this.data=this.unfilteredData;this.unfilteredData=null;this.filterFunc=null;c=true}}else{this.filterFunc=a;if(this.dataWasLoaded&&(this.unfilteredData||(this.data&&this.data.length))){if(!this.unfilteredData)this.unfilteredData=this.data;var d=this.unfilteredData;this.data=[];for(var i=0;i<d.length;i++){var e=a(this,d[i],i);if(e)this.data.push(e)}c=true}};if(c)this.notifyObservers("onDataChanged")};Spry.Data.DataSet.prototype.startLoadInterval=function(a){this.stopLoadInterval();if(a>0){var b=this;this.loadInterval=a;this.loadIntervalID=setInterval(function(){b.loadData()},a)}};Spry.Data.DataSet.prototype.stopLoadInterval=function(){if(this.loadIntervalID)clearInterval(this.loadIntervalID);this.loadInterval=0;this.loadIntervalID=null};Spry.Data.DataSet.nextDataSetID=0;Spry.Data.XMLDataSet=function(a,b,c){Spry.Data.DataSet.call(this);this.url=a;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(c,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,c,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 a=this.dataSetsForDataRefStrings[i];if(a)a.removeObserver(this)};this.dataSetsForDataRefStrings=new Array();var b=[this.url,this.xpath,this.requestInfo.postData];var c=this.requestInfo.postData;if(c&&(typeof c)=="string")b.push(c);var d=0;for(var n=0;n<b.length;n++){var f=Spry.Data.Region.getTokensFromStr(b[n]);for(i=0;f&&i<f.length;i++){if(f[i].search(/{[^}:]+::[^}]+}/)!=-1){var g=f[i].replace(/^\{|::.*\}/g,"");var a=null;if(!this.dataSetsForDataRefStrings[g]){try{a=eval(g)}catch(e){a=null}if(g&&a){this.dataSetsForDataRefStrings[g]=a;this.dataSetsForDataRefStrings[d++]=a;this.hasDataRefStrings=true}}}}};for(i=0;i<this.dataSetsForDataRefStrings.length;i++){var a=this.dataSetsForDataRefStrings[i];a.addObserver(this)}};Spry.Data.XMLDataSet.prototype.attemptLoadData=function(){for(var i=0;i<this.dataSetsForDataRefStrings.length;i++){var a=this.dataSetsForDataRefStrings[i];if(a.getLoadDataRequestIsPending()||!a.getDataWasLoaded())return};this.loadData()};Spry.Data.XMLDataSet.prototype.onCurrentRowChanged=function(a,b){this.attemptLoadData()};Spry.Data.XMLDataSet.prototype.onPostSort=function(a,b){this.attemptLoadData()};Spry.Data.XMLDataSet.prototype.onDataChanged=function(a,b){this.attemptLoadData()};Spry.Data.XMLDataSet.prototype.loadData=function(){if(!this.url||!this.xpath)return;this.cancelLoadData();var a=this.url;var b=this.requestInfo.postData;if(this.hasDataRefStrings){var c=true;for(var i=0;i<this.dataSetsForDataRefStrings.length;i++){var d=this.dataSetsForDataRefStrings[i];if(d.getLoadDataRequestIsPending())c=false;else if(!d.getDataWasLoaded()){d.loadData();c=false}};if(!c)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.unfilteredData=null;this.dataHash=null;this.curRowID=0;var e=this.requestInfo.clone();e.url=a;e.postData=b;this.pendingRequest=new Object;this.pendingRequest.data=Spry.Data.XMLDataSet.LoadManager.loadData(e,this,this.useCache)};Spry.Data.XMLDataSet.prototype.cancelLoadData=function(){if(this.pendingRequest){Spry.Data.XMLDataSet.LoadManager.cancelLoadData(this.pendingRequest.data,this);this.pendingRequest=null}};Spry.Data.XMLDataSet.prototype.getURL=function(){return this.url};Spry.Data.XMLDataSet.prototype.setURL=function(a,b){if(this.url==a)return;this.url=a;if(b)this.requestInfo.extractRequestOptions(b);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(a){this.pendingRequest=null;var b=null;b=Spry.Utils.getRecordSetFromXMLDoc(a,Spry.Data.Region.processDataRefString(null,this.xpath,this.dataSetsForDataRefStrings));if(!b){Spry.Debug.reportError("Spry.Data.XMLDataSet.setDataFromDoc() failed to create dataSet '"+this.name+"'for '"+this.xpath+"' - "+this.url+"\n");return};this.doc=b.xmlDoc;this.data=b.data;this.dataHash=b.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 b=this;this.cancelLoadData();this.doc=null;this.state=Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED;var c=this.reqInfo.clone();c.successCallback=function(a){b.loadDataCallback(a)};c.errorCallback=c.successCallback;this.timer=setTimeout(function(){b.timer=null;Spry.Utils.loadURL(c.method,c.url,c.async,c.successCallback,c)},0)};Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype.cancelLoadData=function(){if(this.state==Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED){if(this.timer){this.timer.clearTimeout();this.timer=null};this.doc=null;this.state=Spry.Data.XMLDataSet.LoadManager.CachedRequest.NOT_LOADED}};Spry.Data.XMLDataSet.LoadManager.getCacheKey=function(a){return a.method+"::"+a.url+"::"+a.postData+"::"+a.username};Spry.Data.XMLDataSet.LoadManager.loadData=function(a,b,c){if(!a)return null;var d=null;var e=null;if(c){e=Spry.Data.XMLDataSet.LoadManager.getCacheKey(a);d=Spry.Data.XMLDataSet.LoadManager.cache[e]};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(c){Spry.Data.XMLDataSet.LoadManager.cache[e]=d;d.addObserver({onRequestError:function(){Spry.Data.XMLDataSet.LoadManager.cache[e]=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(a,b,c,d,f,g,h,j){this.regionNode=a;this.name=b;this.isDetailRegion=c;this.data=d;this.dataSets=f;this.hasBehaviorAttributes=j;this.tokens=null;this.currentState=null;this.states={ready:true};this.stateMap={};Spry.Utils.setOptions(this.states,g);Spry.Utils.setOptions(this.stateMap,h);for(var i=0;i<this.dataSets.length;i++){var k=this.dataSets[i];try{if(k)k.addObserver(this)}catch(e){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 n=Spry.Data.Region.notifiers[a];if(!n){n=new Spry.Utils.Notifier();Spry.Data.Region.notifiers[a]=n}n.addObserver(b)};Spry.Data.Region.removeObserver=function(a,b){var n=Spry.Data.Region.notifiers[a];if(n)n.removeObserver(b)};Spry.Data.Region.notifyObservers=function(a,b,c){var n=Spry.Data.Region.notifiers[b.name];if(n){var d={};if(c&&typeof c=="object")d=c;else d.data=c;d.region=b;d.regionID=b.name;d.regionNode=b.regionNode;n.notifyObservers(a,d)}};Spry.Data.Region.RS_Error=0x01;Spry.Data.Region.RS_LoadingData=0x02;Spry.Data.Region.RS_PreUpdate=0x04;Spry.Data.Region.RS_PostUpdate=0x08;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)};if(!b)Spry.Data.Region.notifyObservers("onPreStateChange",this,c);this.currentState=c.mappedState?c.mappedState:a;if(this.states[a]){if(!b)Spry.Data.Region.notifyObservers("onPreUpdate",this,{state:this.currentState});var d=this.transform();if(Spry.Data.Region.debug)Spry.Debug.trace("<hr />Generated region markup for '"+this.name+"':<br /><br />"+Spry.Utils.encodeEntities(d));Spry.Utils.setInnerHTML(this.regionNode,d,!Spry.Data.Region.evalScripts);if(this.hasBehaviorAttributes)this.attachBehaviors();if(!b)Spry.Data.Region.notifyObservers("onPostUpdate",this,{state:this.currentState})};if(!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)return;if(!this.dataSets)this.dataSets=new Array;for(var i=0;i<this.dataSets.length;i++){if(this.dataSets[i]==a)return};this.dataSets.push(a);a.addObserver(this)};Spry.Data.Region.prototype.removeDataSet=function(a){if(!a||this.dataSets)return;for(var i=0;i<this.dataSets.length;i++){if(this.dataSets[i]==a){this.dataSets.splice(i,1);a.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(b,c,d){var f=null;try{f=c.attributes.getNamedItem("spry:selectgroup").value}catch(e){}if(!f)f="default";Spry.Utils.addEventListener(c,"click",function(a){Spry.Utils.SelectionManager.select(f,c,d)},false);if(c.attributes.getNamedItem("spry:selected"))Spry.Utils.SelectionManager.select(f,c,d)}};Spry.Data.Region.behaviorAttrs["spry:hover"]={attach:function(b,c,d){Spry.Utils.addEventListener(c,"mouseover",function(a){Spry.Utils.addClassName(c,d)},false);Spry.Utils.addEventListener(c,"mouseout",function(a){Spry.Utils.removeClassName(c,d)},false)}};Spry.Data.Region.setUpRowNumberForEvenOddAttr=function(a,b,c,d){if(!c){Spry.Debug.showError("The "+b+" attribute requires a CSS class name as its value!");a.attributes.removeNamedItem(b);return};var e="";var f=c.split(/\s/);if(f.length>1){e=f[0];a.setAttribute(b,f[1])};a.setAttribute(d,"{"+(e?(e+"::"):"")+"ds_RowNumber}")};Spry.Data.Region.behaviorAttrs["spry:even"]={setup:function(a,b){Spry.Data.Region.setUpRowNumberForEvenOddAttr(a,"spry:even",b,"spryevenrownumber")},attach:function(a,b,c){if(c){rowNumAttr=b.attributes.getNamedItem("spryevenrownumber");if(rowNumAttr&&rowNumAttr.value){var d=parseInt(rowNumAttr.value);if(d%2)Spry.Utils.addClassName(b,c)}}b.removeAttribute("spry:even");b.removeAttribute("spryevenrownumber")}};Spry.Data.Region.behaviorAttrs["spry:odd"]={setup:function(a,b){Spry.Data.Region.setUpRowNumberForEvenOddAttr(a,"spry:odd",b,"spryoddrownumber")},attach:function(a,b,c){if(c){rowNumAttr=b.attributes.getNamedItem("spryoddrownumber");if(rowNumAttr&&rowNumAttr.value){var d=parseInt(rowNumAttr.value);if(d%2==0)Spry.Utils.addClassName(b,c)}}b.removeAttribute("spry:odd");b.removeAttribute("spryoddrownumber")}};Spry.Data.Region.setRowAttrClickHandler=function(b,c,d,f){if(c){var g=null;try{g=Spry.Utils.eval(c)}catch(e){g=null};if(g){rowIDAttr=b.attributes.getNamedItem(d);if(rowIDAttr){var h=rowIDAttr.value;if(h)Spry.Utils.addEventListener(b,"click",function(a){g[f](h)},false)}}}};Spry.Data.Region.behaviorAttrs["spry:setrow"]={setup:function(a,b){if(!b){Spry.Debug.reportError("The spry:setrow attribute requires a data set name as its value!");a.removeAttribute("spry:setrow");return};a.setAttribute("spryrowid","{"+b+"::ds_RowID}")},attach:function(a,b,c){Spry.Data.Region.setRowAttrClickHandler(b,c,"spryrowid","setCurrentRow");b.removeAttribute("spry:setrow");b.removeAttribute("spryrowid")}};Spry.Data.Region.behaviorAttrs["spry:setrownumber"]={setup:function(a,b){if(!b){Spry.Debug.reportError("The spry:setrownumber attribute requires a data set name as its value!");a.removeAttribute("spry:setrownumber");return};a.setAttribute("spryrownumber","{"+b+"::ds_RowID}")},attach:function(a,b,c){Spry.Data.Region.setRowAttrClickHandler(b,c,"spryrownumber","setCurrentRowNumber");b.removeAttribute("spry:setrownumber");b.removeAttribute("spryrownumber")}};Spry.Data.Region.behaviorAttrs["spry:sort"]={attach:function(b,c,d){if(!d)return;var f=b.getDataSets()[0];var g="toggle";var h=d.split(/\s/);if(h.length>1){try{var i=eval(h[0]);if(i&&(typeof i)=="object"){f=i;h.shift()}}catch(e){};if(h.length>1){var j=h[h.length-1];if(j=="ascending"||j=="descending"||j=="toggle"){g=j;h.pop()}}};if(f&&h.length>0)Spry.Utils.addEventListener(c,"click",function(a){f.sort(h,g)},false);c.removeAttribute("spry:sort")}};Spry.Data.Region.prototype.attachBehaviors=function(){var g=this;Spry.Utils.getNodesByFunc(this.regionNode,function(a){if(!a||a.nodeType!=1)return false;try{var b=Spry.Data.Region.behaviorAttrs;for(var c in b){var d=a.attributes.getNamedItem(c);if(d){var f=b[c];if(f&&f.attach)f.attach(g,a,d.value)}}}catch(e){};return false})};Spry.Data.Region.prototype.updateContent=function(){var a=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 i=0;i<b.length;i++){var c=b[i];if(c){if(c.getLoadDataRequestIsPending())a=false;else if(!c.getDataWasLoaded()){c.loadData();a=false}}};if(!a){Spry.Data.Region.notifyObservers("onLoadingData",this);return};this.setState("ready")};Spry.Data.Region.prototype.clearContent=function(){this.regionNode.innerHTML=""};Spry.Data.Region.processContentPI=function(a){var b="";var c=/<!--\s*<\/?spry:content\s*[^>]*>\s*-->/mg;var d=0;var e=0;while(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;if(e)Spry.Debug.reportError("Nested spry:content regions are not allowed!\n")}else{++e;var g=f[0].replace(/.*\bdataref="/,"");b+=g.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);var c=new Array;var d=Spry.Data.Region.processContentPI(a);c.push(b);var f=/((<!--\s*){0,1}<\/{0,1}spry:[^>]+>(\s*-->){0,1})|((\{|%7[bB])[^\}\s%]+(\}|%7[dD]))/mg;var g=0;while(d.length){var h=f.exec(d);var i=null;if(!h||!h[0]){var j=d.substr(g,d.length-g);i=new Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN,null,j,j);c[c.length-1].addChild(i);break};if(h.index!=g){var j=d.substr(g,h.index-g);i=new Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN,null,j,j);c[c.length-1].addChild(i)};if(h[0].search(/^({|%7[bB])/)!=-1){var k=h[0];var l=h[0];k=k.replace(/^({|%7[bB])/,"");k=k.replace(/(}|%7[dD])$/,"");var m=null;var n=k.split(/::/);if(n.length>1){m=n[0];k=n[1]};l=l.replace(/^%7[bB]/,"{");l=l.replace(/%7[dD]$/,"}");i=new Spry.Data.Region.Token(Spry.Data.Region.Token.VALUE_TOKEN,m,k,new String(l));c[c.length-1].addChild(i)}else if(h[0].charAt(0)=='<'){var o=h[0].replace(/^(<!--\s*){0,1}<\/?/,"");o=o.replace(/>(\s*-->){0,1}|\s.*$/,"");if(h[0].search(/<\//)!=-1){if(c[c.length-1].tokenType!=Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN){Spry.Debug.reportError("Invalid processing instruction close tag: "+o+" -- "+h[0]+"\n");return null};c.pop()}else{var p=Spry.Data.Region.PI.instructions[o];if(p){var q=null;var r="";if(h[0].search(/^.*\bselect=\"/)!=-1){r=h[0].replace(/^.*\bselect=\"/,"");r=r.replace(/".*$/,"");if(r){try{q=eval(r)}catch(e){Spry.Debug.reportError("Caught exception in tokenizeData() while trying to retrieve data set ("+r+"): "+e+"\n");q=null;r=""}}};var s=null;if(h[0].search(/^.*\btest=\"/)!=-1){s=h[0].replace(/^.*\btest=\"/,"");s=s.replace(/".*$/,"");s=Spry.Utils.decodeEntities(s)};var t=null;if(h[0].search(/^.*\bname=\"/)!=-1){t=h[0].replace(/^.*\bname=\"/,"");t=t.replace(/".*$/,"");t=Spry.Utils.decodeEntities(t)};var u=new Spry.Data.Region.Token.PIData(o,r,s,t);i=new Spry.Data.Region.Token(Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN,q,u,new String(h[0]));c[c.length-1].addChild(i);c.push(i)}else{Spry.Debug.reportError("Unsupported region processing instruction: "+h[0]+"\n");return null}}}else{Spry.Debug.reportError("Invalid region token: "+h[0]+"\n");return null};g=f.lastIndex};return b};Spry.Data.Region.prototype.processTokenChildren=function(a,b){var c=[""];var d=a.children.length;var e=a.children;for(var i=0;i<d;i++)c.push(this.processTokens(e[i],b));return c.join("")};Spry.Data.Region.prototype.processTokens=function(a,b){if(!b){b=new Spry.Data.Region.ProcessingContext(this);if(!b)return""};var c="";var i=0;switch(a.tokenType){case Spry.Data.Region.Token.LIST_TOKEN:c+=this.processTokenChildren(a,b);break;case Spry.Data.Region.Token.STRING_TOKEN:c+=a.data;break;case Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN:if(a.data.name=="spry:repeat"){var d=null;if(a.dataSet)d=a.dataSet;else d=this.dataSets[0];if(d){var f=b.getDataSetContext(d);if(!f){Spry.Debug.reportError("processTokens() failed to get a data set context!\n");break};var g=f.getNumRows();var h=d.getData();f.pushState();for(i=0;i<g;i++){f.setRowIndex(i);var k=true;if(a.data.jsExpr){var l=Spry.Data.Region.processDataRefString(b,a.data.jsExpr,null,true);try{k=Spry.Utils.eval(l)}catch(e){Spry.Debug.trace("Caught exception in Spry.Data.Region.prototype.processTokens while evaluating: "+l+"\n    Exception:"+e+"\n");k=true}};if(k)c+=this.processTokenChildren(a,b)};f.popState()}}else if(a.data.name=="spry:if"){var k=true;if(a.data.jsExpr){var l=Spry.Data.Region.processDataRefString(b,a.data.jsExpr,null,true);try{k=Spry.Utils.eval(l)}catch(e){Spry.Debug.trace("Caught exception in Spry.Data.Region.prototype.processTokens while evaluating: "+l+"\n    Exception:"+e+"\n");k=true}}if(k)c+=this.processTokenChildren(a,b)}else if(a.data.name=="spry:choose"){var m=null;var n=null;var k=false;var j=0;for(j=0;j<a.children.length;j++){var o=a.children[j];if(o.tokenType==Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN){if(o.data.name=="spry:when"){if(o.data.jsExpr){var l=Spry.Data.Region.processDataRefString(b,o.data.jsExpr,null,true);try{k=Spry.Utils.eval(l)}catch(e){Spry.Debug.trace("Caught exception in Spry.Data.Region.prototype.processTokens while evaluating: "+l+"\n    Exception:"+e+"\n");k=false};if(k){n=o;break}}}else if(o.data.name=="spry:default")m=o}};if(!n&&m)n=m;if(n)c+=this.processTokenChildren(n,b)}else if(a.data.name=="spry:state"){var k=true;if(!a.data.regionState||a.data.regionState==this.currentState)c+=this.processTokenChildren(a,b)}else{Spry.Debug.reportError("processTokens(): Unknown processing instruction: "+a.data.name+"\n");return""}break;case Spry.Data.Region.Token.VALUE_TOKEN:var d=a.dataSet;if(!d&&this.dataSets&&this.dataSets.length>0&&this.dataSets[0]){d=this.dataSets[0]}if(!d){Spry.Debug.reportError("processTokens(): Value reference has no data set specified: "+a.regionStr+"\n");return""};var f=b.getDataSetContext(d);if(!f){Spry.Debug.reportError("processTokens: Failed to get a data set context!\n");return""};var p=f.getDataSet();if(a.data=="ds_RowNumber")c+=f.getRowIndex();else if(a.data=="ds_RowNumberPlus1")c+=(f.getRowIndex()+1);else if(a.data=="ds_RowCount")c+=f.getNumRows();else if(a.data=="ds_UnfilteredRowCount")c+=f.getNumRows(true);else if(a.data=="ds_CurrentRowNumber")c+=p.getRowNumber(p.getCurrentRow());else if(a.data=="ds_CurrentRowID")c+=p.curRowID;else if(a.data=="ds_EvenOddRow")c+=(f.getRowIndex()%2)?Spry.Data.Region.evenRowClassName:Spry.Data.Region.oddRowClassName;else if(a.data=="ds_SortOrder")c+=p.getSortOrder();else if(a.data=="ds_SortColumn")c+=p.getSortColumn();else{var q=f.getCurrentRow();if(q)c+=q[a.data]}break;default:Spry.Debug.reportError("processTokens(): Invalid token type: "+a.regionStr+"\n");break};return c};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,b,c){if(!a||!b)return"";var d="";try{var f=a.attributes.getNamedItem(b);if(f&&f.value)d=Spry.Utils.encodeEntities(f.value)}catch(e){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""};var f="";try{var g=a.attributes.getNamedItem("spry:test");if(g){if(g.value)f=" test=\""+Spry.Utils.encodeEntities(g.value)+"\"";a.attributes.removeNamedItem(g.nodeName)}}catch(e){f=""};return"<"+Spry.Data.Region.PI.instructions[b].tagName+" select=\""+c+"\""+f+">"};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;var e="";var f=new RegExp("\\{([^\\}:]+::)?[^\\}]+\\}","g");var g=0;while(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 j=h[0].replace(/^\{|.*::|\}/g,"");var k=null;if(a){var l=a.getDataSetContext(i);if(j=="ds_RowNumber"){e+=l.getRowIndex();k=null}else if(j=="ds_RowNumberPlus1"){e+=(l.getRowIndex()+1);k=null}else if(j=="ds_RowCount"){e+=l.getNumRows();k=null}else if(j=="ds_UnfilteredRowCount"){e+=l.getNumRows(true);k=null}else if(j=="ds_CurrentRowNumber"){var m=l.getDataSet();e+=m.getRowNumber(m.getCurrentRow());k=null}else if(j=="ds_CurrentRowID"){var m=l.getDataSet();e+=""+m.curRowID;k=null}else if(j=="ds_EvenOddRow"){e+=(l.getRowIndex()%2)?Spry.Data.Region.evenRowClassName:Spry.Data.Region.oddRowClassName;k=null}else if(j=="ds_SortOrder"){e+=l.getDataSet().getSortOrder();k=null}else if(j=="ds_SortColumn"){e+=l.getDataSet().getSortColumn();k=null}else k=a.getCurrentRowForDataSet(i)}else{var m=i?c[i]:c[0];if(m)k=m.getCurrentRow()};if(k)e+=d?Spry.Utils.escapeQuotesAndLineBreaks(""+k[j]):k[j];if(g==f.lastIndex){var n=h.index+h[0].length;if(n<b.length)e+=b.substr(n);break};g=f.lastIndex};return e};Spry.Data.Region.strToDataSetsArray=function(a,b){var c=new Array;var d={};if(!a)return c;a=a.replace(/\s+/g," ");a=a.replace(/^\s|\s$/g,"");var f=a.split(/ /);for(var i=0;i<f.length;i++){if(f[i]&&!Spry.Data.Region.PI.instructions[f[i]]){try{var g=eval(f[i]);if(!d[f[i]]){if(b)c.push(f[i]);else c.push(g);d[f[i]]=true}}catch(e){}}};return c};Spry.Data.Region.DSContext=function(c){var d=this;var e=c;var f=[-1];function getInternalRowIndex(){return f[f.length-1]};this.resetAll=function(){f=[e.getCurrentRow()]};this.getDataSet=function(){return e};this.getNumRows=function(a){return e.getRowCount(a)};this.getCurrentRow=function(){if(f.length<2||getInternalRowIndex()<0)return e.getCurrentRow();var a=e.getData();var b=getInternalRowIndex();if(b<0||b>a.length){Spry.Debug.reportError("Invalid index used in Spry.Data.Region.DSContext.getCurrentRow()!\n");return null}return a[b]};this.getRowIndex=function(){var a=getInternalRowIndex();if(a>=0)return a;return e.getRowNumber(e.getCurrentRow())};this.setRowIndex=function(a){f[f.length-1]=a};this.pushState=function(){f.push(getInternalRowIndex())};this.popState=function(){if(f.length<2){Spry.Debug.reportError("Stack underflow in Spry.Data.Region.DSContext.popState()!\n");return}f.pop()}};Spry.Data.Region.ProcessingContext=function(c){var d=this;var f=c;var g=[];if(c&&c.dataSets){for(var i=0;i<c.dataSets.length;i++)g.push(new Spry.Data.Region.DSContext(c.dataSets[i]))};this.getDataSetContext=function(a){if(!a){if(g.length>0)return g[0];return null};if(typeof a=='string'){try{a=eval(a)}catch(e){a=null}if(!a)return null}for(var i=0;i<g.length;i++){var b=g[i];if(b.getDataSet()==a)return b}return null};this.getCurrentRowForDataSet=function(a){var b=d.getDataSetContext(a);if(b)return b.getCurrentRow();return null}};Spry.Data.Region.Token=function(a,b,c,d){var e=this;this.tokenType=a;this.dataSet=b;this.data=c;this.regionStr=d;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(a,b,c,d){var e=this;this.name=a;this.data=b;this.jsExpr=c;this.regionState=d};Spry.Utils.addLoadListener(function(){setTimeout(function(){Spry.Data.initRegions()},0)});