var REGEXP_UNICODE=function(){var b=[" ","\u0120",-1,"!","\u0120",-1,"\u0120","\u0120",0,"\u0121","\u0120",-1,"\u0121","\u0120|\u0121",0,"\u0122","\u0120|\u0121",-1,"\u0120","[\u0120]",0,"\u0121","[\u0120]",-1,"\u0121","[\u0120\u0121]",0,"\u0122","[\u0120\u0121]",-1,"\u0121","[\u0120-\u0121]",0,"\u0122","[\u0120-\u0121]",-1];for(var a=0;a<b.length;a+=3){if(b[a].search(new RegExp(b[a+1]))!=b[a+2]){return false}}return true}();var XML_S="[ \t\r\n]+";var XML_EQ="("+XML_S+")?=("+XML_S+")?";var XML_CHAR_REF="&#[0-9]+;|&#x[0-9a-fA-F]+;";var XML10_VERSION_INFO=XML_S+"version"+XML_EQ+"(\"1\\.0\"|'1\\.0')";var XML10_BASE_CHAR=(REGEXP_UNICODE)?"\u0041-\u005a\u0061-\u007a\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff\u0100-\u0131\u0134-\u013e\u0141-\u0148\u014a-\u017e\u0180-\u01c3\u01cd-\u01f0\u01f4-\u01f5\u01fa-\u0217\u0250-\u02a8\u02bb-\u02c1\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03ce\u03d0-\u03d6\u03da\u03dc\u03de\u03e0\u03e2-\u03f3\u0401-\u040c\u040e-\u044f\u0451-\u045c\u045e-\u0481\u0490-\u04c4\u04c7-\u04c8\u04cb-\u04cc\u04d0-\u04eb\u04ee-\u04f5\u04f8-\u04f9\u0531-\u0556\u0559\u0561-\u0586\u05d0-\u05ea\u05f0-\u05f2\u0621-\u063a\u0641-\u064a\u0671-\u06b7\u06ba-\u06be\u06c0-\u06ce\u06d0-\u06d3\u06d5\u06e5-\u06e6\u0905-\u0939\u093d\u0958-\u0961\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09dc-\u09dd\u09df-\u09e1\u09f0-\u09f1\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8b\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abd\u0ae0\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b36-\u0b39\u0b3d\u0b5c-\u0b5d\u0b5f-\u0b61\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb5\u0bb7-\u0bb9\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c60-\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cde\u0ce0-\u0ce1\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d28\u0d2a-\u0d39\u0d60-\u0d61\u0e01-\u0e2e\u0e30\u0e32-\u0e33\u0e40-\u0e45\u0e81-\u0e82\u0e84\u0e87-\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa-\u0eab\u0ead-\u0eae\u0eb0\u0eb2-\u0eb3\u0ebd\u0ec0-\u0ec4\u0f40-\u0f47\u0f49-\u0f69\u10a0-\u10c5\u10d0-\u10f6\u1100\u1102-\u1103\u1105-\u1107\u1109\u110b-\u110c\u110e-\u1112\u113c\u113e\u1140\u114c\u114e\u1150\u1154-\u1155\u1159\u115f-\u1161\u1163\u1165\u1167\u1169\u116d-\u116e\u1172-\u1173\u1175\u119e\u11a8\u11ab\u11ae-\u11af\u11b7-\u11b8\u11ba\u11bc-\u11c2\u11eb\u11f0\u11f9\u1e00-\u1e9b\u1ea0-\u1ef9\u1f00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2126\u212a-\u212b\u212e\u2180-\u2182\u3041-\u3094\u30a1-\u30fa\u3105-\u312c\uac00-\ud7a3":"A-Za-z";var XML10_IDEOGRAPHIC=(REGEXP_UNICODE)?"\u4e00-\u9fa5\u3007\u3021-\u3029":"";var XML10_COMBINING_CHAR=(REGEXP_UNICODE)?"\u0300-\u0345\u0360-\u0361\u0483-\u0486\u0591-\u05a1\u05a3-\u05b9\u05bb-\u05bd\u05bf\u05c1-\u05c2\u05c4\u064b-\u0652\u0670\u06d6-\u06dc\u06dd-\u06df\u06e0-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0901-\u0903\u093c\u093e-\u094c\u094d\u0951-\u0954\u0962-\u0963\u0981-\u0983\u09bc\u09be\u09bf\u09c0-\u09c4\u09c7-\u09c8\u09cb-\u09cd\u09d7\u09e2-\u09e3\u0a02\u0a3c\u0a3e\u0a3f\u0a40-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a70-\u0a71\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0b01-\u0b03\u0b3c\u0b3e-\u0b43\u0b47-\u0b48\u0b4b-\u0b4d\u0b56-\u0b57\u0b82-\u0b83\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c82-\u0c83\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5-\u0cd6\u0d02-\u0d03\u0d3e-\u0d43\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86-\u0f8b\u0f90-\u0f95\u0f97\u0f99-\u0fad\u0fb1-\u0fb7\u0fb9\u20d0-\u20dc\u20e1\u302a-\u302f\u3099\u309a":"";var XML10_DIGIT=(REGEXP_UNICODE)?"\u0030-\u0039\u0660-\u0669\u06f0-\u06f9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be7-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29":"0-9";var XML10_EXTENDER=(REGEXP_UNICODE)?"\u00b7\u02d0\u02d1\u0387\u0640\u0e46\u0ec6\u3005\u3031-\u3035\u309d-\u309e\u30fc-\u30fe":"";var XML10_LETTER=XML10_BASE_CHAR+XML10_IDEOGRAPHIC;var XML10_NAME_CHAR=XML10_LETTER+XML10_DIGIT+"\\._:"+XML10_COMBINING_CHAR+XML10_EXTENDER+"-";var XML10_NAME="["+XML10_LETTER+"_:]["+XML10_NAME_CHAR+"]*";var XML10_ENTITY_REF="&"+XML10_NAME+";";var XML10_REFERENCE=XML10_ENTITY_REF+"|"+XML_CHAR_REF;var XML10_ATT_VALUE='"(([^<&"]|'+XML10_REFERENCE+")*)\"|'(([^<&']|"+XML10_REFERENCE+")*)'";var XML10_ATTRIBUTE="("+XML10_NAME+")"+XML_EQ+"("+XML10_ATT_VALUE+")";var XML11_VERSION_INFO=XML_S+"version"+XML_EQ+"(\"1\\.1\"|'1\\.1')";var XML11_NAME_START_CHAR=(REGEXP_UNICODE)?":A-Z_a-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd":":A-Z_a-z";var XML11_NAME_CHAR=XML11_NAME_START_CHAR+((REGEXP_UNICODE)?"\\.0-9\u00b7\u0300-\u036f\u203f-\u2040-":"\\.0-9-");var XML11_NAME="["+XML11_NAME_START_CHAR+"]["+XML11_NAME_CHAR+"]*";var XML11_ENTITY_REF="&"+XML11_NAME+";";var XML11_REFERENCE=XML11_ENTITY_REF+"|"+XML_CHAR_REF;var XML11_ATT_VALUE='"(([^<&"]|'+XML11_REFERENCE+")*)\"|'(([^<&']|"+XML11_REFERENCE+")*)'";var XML11_ATTRIBUTE="("+XML11_NAME+")"+XML_EQ+"("+XML11_ATT_VALUE+")";var XML_NC_NAME_CHAR=XML10_LETTER+XML10_DIGIT+"\\._"+XML10_COMBINING_CHAR+XML10_EXTENDER+"-";var XML_NC_NAME="["+XML10_LETTER+"_]["+XML_NC_NAME_CHAR+"]*";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;function xpathLog(a){}function xsltLog(a){}function xsltLogXml(a){}function assert(a){if(!a){throw"Assertion failed"}}function stringSplit(e,g){var d=e.indexOf(g);if(d==-1){return[e]}var f=[];f.push(e.substr(0,d));while(d!=-1){var b=e.indexOf(g,d+1);if(b!=-1){f.push(e.substr(d+1,b-d-1))}else{f.push(e.substr(d+1))}d=b}return f}function mapExec(c,b){for(var a=0;a<c.length;++a){b.call(this,c[a],a)}}function mapExpr(d,c){var a=[];for(var b=0;b<d.length;++b){a.push(c(d[b]))}return a}function reverseInplace(d){for(var a=0;a<d.length/2;++a){var c=d[a];var b=d.length-a-1;d[a]=d[b];d[b]=c}}function removeFromArray(e,c,d){var a=0;for(var b=0;b<e.length;++b){if(e[b]===c||(d&&e[b]==c)){e.splice(b--,1);a++}}return a}function copyArray(c,b){for(var a=0;a<b.length;++a){c.push(b[a])}}function xmlValue(c){if(!c){return""}var a="";if(c.nodeType==DOM_TEXT_NODE||c.nodeType==DOM_CDATA_SECTION_NODE||c.nodeType==DOM_ATTRIBUTE_NODE){a+=c.nodeValue}else{if(c.nodeType==DOM_ELEMENT_NODE||c.nodeType==DOM_DOCUMENT_NODE||c.nodeType==DOM_DOCUMENT_FRAGMENT_NODE){for(var b=0;b<c.childNodes.length;++b){a+=arguments.callee(c.childNodes[b])}}}return a}function xpathParse(n){xpathLog("parse "+n);xpathParseInit();var a=xpathCacheLookup(n);if(a){xpathLog(" ... cached");return a}if(n.match(/^(\$|@)?\w+$/i)){var j=makeSimpleExpr(n);xpathParseCache[n]=j;xpathLog(" ... simple");return j}if(n.match(/^\w+(\/\w+)*$/i)){var j=makeSimpleExpr2(n);xpathParseCache[n]=j;xpathLog(" ... simple 2");return j}var k=n;var m=[];var b=null;var g=null;var c=false;var h=0;var f=0;var p=0;while(!c){h++;n=n.replace(/^\s*/,"");g=b;b=null;var l=null;var e="";for(var d=0;d<xpathTokenRules.length;++d){var o=xpathTokenRules[d].re.exec(n);f++;if(o&&o.length>0&&o[0].length>e.length){l=xpathTokenRules[d];e=o[0];break}}if(l&&(l==TOK_DIV||l==TOK_MOD||l==TOK_AND||l==TOK_OR)&&(!g||g.tag==TOK_AT||g.tag==TOK_DSLASH||g.tag==TOK_SLASH||g.tag==TOK_AXIS||g.tag==TOK_DOLLAR)){l=TOK_QNAME}if(l){n=n.substr(e.length);xpathLog("token: "+e+" -- "+l.label);b={tag:l,match:e,prec:l.prec?l.prec:0,expr:makeTokenExpr(e)}}else{xpathLog("DONE");c=true}while(xpathReduce(m,b)){p++;xpathLog("stack: "+stackToString(m))}}xpathLog("stack: "+stackToString(m));if(m.length!=1){throw"XPath parse error "+k+":\n"+stackToString(m)}var o=m[0].expr;xpathParseCache[k]=o;xpathLog("XPath parse: "+h+" / "+f+" / "+p);return o}var xpathParseCache={};function xpathCacheLookup(a){return xpathParseCache[a]}function xpathReduce(h,a){var e=null;if(h.length>0){var f=h[h.length-1];var j=xpathRules[f.tag.key];if(j){for(var b=0;b<j.length;++b){var g=j[b];var c=xpathMatchStack(h,g[1]);if(c.length){e={tag:g[0],rule:g,match:c};e.prec=xpathGrammarPrecedence(e);break}}}}var d;if(e&&(!a||e.prec>a.prec||(a.tag.left&&e.prec>=a.prec))){for(var b=0;b<e.match.matchlength;++b){h.pop()}xpathLog("reduce "+e.tag.label+" "+e.prec+" ahead "+(a?a.tag.label+" "+a.prec+(a.tag.left?" left":""):" none "));var k=mapExpr(e.match,function(l){return l.expr});e.expr=e.rule[3].apply(null,k);h.push(e);d=true}else{if(a){xpathLog("shift "+a.tag.label+" "+a.prec+(a.tag.left?" left":"")+" over "+(e?e.tag.label+" "+e.prec:" none"));h.push(a)}d=false}return d}function xpathMatchStack(h,g){var d=h.length;var f=g.length;var b,j;var e=[];e.matchlength=0;var c=0;for(b=f-1,j=d-1;b>=0&&j>=0;--b,j-=c){c=0;var a=[];if(g[b]==Q_MM){b-=1;e.push(a);while(j-c>=0&&h[j-c].tag==g[b]){a.push(h[j-c]);c+=1;e.matchlength+=1}}else{if(g[b]==Q_01){b-=1;e.push(a);while(j-c>=0&&c<2&&h[j-c].tag==g[b]){a.push(h[j-c]);c+=1;e.matchlength+=1}}else{if(g[b]==Q_1M){b-=1;e.push(a);if(h[j].tag==g[b]){while(j-c>=0&&h[j-c].tag==g[b]){a.push(h[j-c]);c+=1;e.matchlength+=1}}else{return[]}}else{if(h[j].tag==g[b]){e.push(h[j]);c+=1;e.matchlength+=1}else{return[]}}}}reverseInplace(a);a.expr=mapExpr(a,function(k){return k.expr})}reverseInplace(e);if(b==-1){return e}else{return[]}}function xpathTokenPrecedence(a){return a.prec||2}function xpathGrammarPrecedence(e){var b=0;if(e.rule){if(e.rule.length>=3&&e.rule[2]>=0){b=e.rule[2]}else{for(var c=0;c<e.rule[1].length;++c){var d=xpathTokenPrecedence(e.rule[1][c]);b=Math.max(b,d)}}}else{if(e.tag){b=xpathTokenPrecedence(e.tag)}else{if(e.length){for(var a=0;a<e.length;++a){var d=xpathGrammarPrecedence(e[a]);b=Math.max(b,d)}}}}return b}function stackToString(a){var b="";for(var c=0;c<a.length;++c){if(b){b+="\n"}b+=a[c].tag.label}return b}function ExprContext(c,a,d,b){this.node=c;this.position=a||0;this.nodelist=d||[c];this.variables={};this.parent=b||null;if(b){this.root=b.root}else{if(this.node.nodeType==DOM_DOCUMENT_NODE){this.root=c}else{this.root=c.ownerDocument}}}ExprContext.prototype.clone=function(c,a,b){return new ExprContext(c||this.node,typeof a!="undefined"?a:this.position,b||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){this.node=this.nodelist[a];this.position=a};ExprContext.prototype.contextSize=function(){return this.nodelist.length};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};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};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};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(a){this.value=a}TokenExpr.prototype.evaluate=function(){return new StringValue(this.value)};function LocationExpr(){this.absolute=false;this.steps=[]}LocationExpr.prototype.appendStep=function(a){this.steps.push(a)};LocationExpr.prototype.prependStep=function(c){var a=this.steps;this.steps=[c];for(var b=0;b<a.length;++b){this.steps.push(a[b])}};LocationExpr.prototype.evaluate=function(a){var c;if(this.absolute){c=a.root}else{c=a.node}var b=[];xPathStep(b,this.steps,0,c,a);return new NodeSetValue(b)};function xPathStep(a,e,b,f,h){var j=e[b];var d=h.clone(f);var g=j.evaluate(d).nodeSetValue();for(var c=0;c<g.length;++c){if(b==e.length-1){a.push(g[c])}else{xPathStep(a,e,b+1,g[c],h)}}}function StepExpr(b,c,a){this.axis=b;this.nodetest=c;this.predicate=a||[]}StepExpr.prototype.appendPredicate=function(a){this.predicate.push(a)};StepExpr.prototype.evaluate=function(a){var c=a.node;var f=[];if(this.axis==xpathAxis.ANCESTOR_OR_SELF){f.push(c);for(var h=c.parentNode;h;h=h.parentNode){f.push(h)}}else{if(this.axis==xpathAxis.ANCESTOR){for(var h=c.parentNode;h;h=h.parentNode){f.push(h)}}else{if(this.axis==xpathAxis.ATTRIBUTE){copyArray(f,c.attributes)}else{if(this.axis==xpathAxis.CHILD){copyArray(f,c.childNodes)}else{if(this.axis==xpathAxis.DESCENDANT_OR_SELF){f.push(c);xpathCollectDescendants(f,c)}else{if(this.axis==xpathAxis.DESCENDANT){xpathCollectDescendants(f,c)}else{if(this.axis==xpathAxis.FOLLOWING){for(var h=c;h;h=h.parentNode){for(var g=h.nextSibling;g;g=g.nextSibling){f.push(g);xpathCollectDescendants(f,g)}}}else{if(this.axis==xpathAxis.FOLLOWING_SIBLING){for(var h=c.nextSibling;h;h=h.nextSibling){f.push(h)}}else{if(this.axis==xpathAxis.NAMESPACE){alert("not implemented: axis namespace")}else{if(this.axis==xpathAxis.PARENT){if(c.parentNode){f.push(c.parentNode)}}else{if(this.axis==xpathAxis.PRECEDING){for(var h=c;h;h=h.parentNode){for(var g=h.previousSibling;g;g=g.previousSibling){f.push(g);xpathCollectDescendantsReverse(f,g)}}}else{if(this.axis==xpathAxis.PRECEDING_SIBLING){for(var h=c.previousSibling;h;h=h.previousSibling){f.push(h)}}else{if(this.axis==xpathAxis.SELF){f.push(c)}else{throw"ERROR -- NO SUCH AXIS: "+this.axis}}}}}}}}}}}}}var b=f;f=[];for(var d=0;d<b.length;++d){var h=b[d];if(this.nodetest.evaluate(a.clone(h,d,b)).booleanValue()){f.push(h)}}for(var d=0;d<this.predicate.length;++d){var b=f;f=[];for(var e=0;e<b.length;++e){var h=b[e];if(this.predicate[d].evaluate(a.clone(h,e,b)).booleanValue()){f.push(h)}}}return new NodeSetValue(f)};function NodeTestAny(){this.value=new BooleanValue(true)}NodeTestAny.prototype.evaluate=function(a){return this.value};function NodeTestElementOrAttribute(){}NodeTestElementOrAttribute.prototype.evaluate=function(a){return new BooleanValue(a.node.nodeType==DOM_ELEMENT_NODE||a.node.nodeType==DOM_ATTRIBUTE_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 b=a.node;return new BooleanValue(this.regex.match(b.nodeName))};function NodeTestName(a){this.name=a}NodeTestName.prototype.evaluate=function(a){var b=a.node;return new BooleanValue(b.nodeName==this.name)};function PredicateExpr(a){this.expr=a}PredicateExpr.prototype.evaluate=function(a){var b=this.expr.evaluate(a);if(b.type=="number"){return new BooleanValue(a.position==b.numberValue()-1)}else{return new BooleanValue(b.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 c=this.xpathfunctions[b];if(c){return c.call(this,a)}else{xpathLog("XPath NO SUCH FUNCTION "+b);return new BooleanValue(false)}};FunctionCallExpr.prototype.xpathfunctions={last:function(a){assert(this.args.length==0);return new NumberValue(a.contextSize())},position:function(a){assert(this.args.length==0);return new NumberValue(a.position+1)},count:function(a){assert(this.args.length==1);var b=this.args[0].evaluate(a);return new NumberValue(b.nodeSetValue().length)},id:function(m){assert(this.args.length==1);var g=this.args[0].evaluate(m);var h=[];var a;if(g.type=="node-set"){a=[];var b=g.nodeSetValue();for(var f=0;f<b.length;++f){var k=xmlValue(b[f]).split(/\s+/);for(var l=0;l<k.length;++l){a.push(k[l])}}}else{a=g.stringValue().split(/\s+/)}var j=m.node.ownerDocument;for(var f=0;f<a.length;++f){var c=j.getElementById(a[f]);if(c){h.push(c)}}return new NodeSetValue(h)},"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 b;if(this.args.length==0){b=[a.node]}else{b=this.args[0].evaluate(a).nodeSetValue()}if(b.length==0){return new StringValue("")}else{return new StringValue(b[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 c=0;c<this.args.length;++c){b+=this.args[c].evaluate(a).stringValue()}return new StringValue(b)},"starts-with":function(a){assert(this.args.length==2);var c=this.args[0].evaluate(a).stringValue();var b=this.args[1].evaluate(a).stringValue();return new BooleanValue(c.indexOf(b)==0)},contains:function(a){assert(this.args.length==2);var c=this.args[0].evaluate(a).stringValue();var b=this.args[1].evaluate(a).stringValue();return new BooleanValue(c.indexOf(b)!=-1)},"substring-before":function(a){assert(this.args.length==2);var e=this.args[0].evaluate(a).stringValue();var d=this.args[1].evaluate(a).stringValue();var c=e.indexOf(d);var b;if(c==-1){b=""}else{b=e.substr(0,c)}return new StringValue(b)},"substring-after":function(a){assert(this.args.length==2);var e=this.args[0].evaluate(a).stringValue();var d=this.args[1].evaluate(a).stringValue();var c=e.indexOf(d);var b;if(c==-1){b=""}else{b=e.substr(c+d.length)}return new StringValue(b)},substring:function(a){assert(this.args.length==2||this.args.length==3);var f=this.args[0].evaluate(a).stringValue();var d=this.args[1].evaluate(a).numberValue();var c;if(this.args.length==2){var g=Math.max(0,Math.round(d)-1);c=f.substr(g)}else{var b=this.args[2].evaluate(a).numberValue();var h=Math.round(d)-1;var g=Math.max(0,h);var e=Math.round(b)-Math.max(0,-h);c=f.substr(g,e)}return new StringValue(c)},"string-length":function(a){var b;if(this.args.length>0){b=this.args[0].evaluate(a).stringValue()}else{b=new NodeSetValue([a.node]).stringValue()}return new NumberValue(b.length)},"normalize-space":function(a){var b;if(this.args.length>0){b=this.args[0].evaluate(a).stringValue()}else{b=new NodeSetValue([a.node]).stringValue()}b=b.replace(/^\s*/,"").replace(/\s*$/,"").replace(/\s+/g," ");return new StringValue(b)},translate:function(a){assert(this.args.length==3);var e=this.args[0].evaluate(a).stringValue();var d=this.args[1].evaluate(a).stringValue();var b=this.args[2].evaluate(a).stringValue();for(var c=0;c<d.length;++c){e=e.replace(new RegExp(d.charAt(c),"g"),b.charAt(c))}return new StringValue(e)},"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 c=this.args[0].evaluate(a).stringValue();var e;var d=a.node;while(d&&d!=d.parentNode){e=d.getAttribute("xml:lang");if(e){break}d=d.parentNode}if(!e){return new BooleanValue(false)}else{var b=new RegExp("^"+c+"$","i");return new BooleanValue(e.match(b)||e.replace(/_.*$/,"").match(b))}},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 d=this.args[0].evaluate(a).nodeSetValue();var c=0;for(var b=0;b<d.length;++b){c+=xmlValue(d[b])-0}return new NumberValue(c)},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 e=this.args[1].evaluate(a).stringValue();var c="";for(var d=0;d<b.length;++d){if(c){c+=e}c+=xmlValue(b[d])}return new StringValue(c)},"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-cardinal":function(a){assert(this.args.length>=1);var e=this.args[0].evaluate(a).numberValue();var b=[];for(var d=0;d<e;++d){b.push(a.node)}return new NodeSetValue(b)}};function UnionExpr(b,a){this.expr1=b;this.expr2=a}UnionExpr.prototype.evaluate=function(c){var b=this.expr1.evaluate(c).nodeSetValue();var a=this.expr2.evaluate(c).nodeSetValue();var f=b.length;for(var d=0;d<a.length;++d){var h=a[d];var g=false;for(var e=0;e<f;++e){if(b[e]==h){g=true;e=f}}if(!g){b.push(h)}}return new NodeSetValue(b)};function PathExpr(b,a){this.filter=b;this.rel=a}PathExpr.prototype.evaluate=function(b){var d=this.filter.evaluate(b).nodeSetValue();var a=[];for(var e=0;e<d.length;++e){var c=this.rel.evaluate(b.clone(d[e],e,d)).nodeSetValue();for(var f=0;f<c.length;++f){a.push(c[f])}}return new NodeSetValue(a)};function FilterExpr(b,a){this.expr=b;this.predicate=a}FilterExpr.prototype.evaluate=function(a){var c=this.expr.evaluate(a).nodeSetValue();for(var e=0;e<this.predicate.length;++e){var b=c;c=[];for(var d=0;d<b.length;++d){var f=b[d];if(this.predicate[e].evaluate(a.clone(f,d,b)).booleanValue()){c.push(f)}}}return new NodeSetValue(c)};function UnaryMinusExpr(a){this.expr=a}UnaryMinusExpr.prototype.evaluate=function(a){return new NumberValue(-this.expr.evaluate(a).numberValue())};function BinaryExpr(b,c,a){this.expr1=b;this.expr2=a;this.op=c}BinaryExpr.prototype.evaluate=function(a){var b;switch(this.op.value){case"or":b=new BooleanValue(this.expr1.evaluate(a).booleanValue()||this.expr2.evaluate(a).booleanValue());break;case"and":b=new BooleanValue(this.expr1.evaluate(a).booleanValue()&&this.expr2.evaluate(a).booleanValue());break;case"+":b=new NumberValue(this.expr1.evaluate(a).numberValue()+this.expr2.evaluate(a).numberValue());break;case"-":b=new NumberValue(this.expr1.evaluate(a).numberValue()-this.expr2.evaluate(a).numberValue());break;case"*":b=new NumberValue(this.expr1.evaluate(a).numberValue()*this.expr2.evaluate(a).numberValue());break;case"mod":b=new NumberValue(this.expr1.evaluate(a).numberValue()%this.expr2.evaluate(a).numberValue());break;case"div":b=new NumberValue(this.expr1.evaluate(a).numberValue()/this.expr2.evaluate(a).numberValue());break;case"=":b=this.compare(a,function(d,c){return d==c});break;case"!=":b=this.compare(a,function(d,c){return d!=c});break;case"<":b=this.compare(a,function(d,c){return d<c});break;case"<=":b=this.compare(a,function(d,c){return d<=c});break;case">":b=this.compare(a,function(d,c){return d>c});break;case">=":b=this.compare(a,function(d,c){return d>=c});break;default:alert("BinaryExpr.evaluate: "+this.op.value)}return b};BinaryExpr.prototype.compare=function(m,h){var k=this.expr1.evaluate(m);var j=this.expr2.evaluate(m);var g;if(k.type=="node-set"&&j.type=="node-set"){var f=k.nodeSetValue();var e=j.nodeSetValue();g=false;for(var c=0;c<f.length;++c){for(var b=0;b<e.length;++b){if(h(xmlValue(f[c]),xmlValue(e[b]))){g=true;b=e.length;c=f.length}}}}else{if(k.type=="node-set"||j.type=="node-set"){if(k.type=="number"){var o=k.numberValue();var a=j.nodeSetValue();g=false;for(var d=0;d<a.length;++d){var l=xmlValue(a[d])-0;if(h(o,l)){g=true;break}}}else{if(j.type=="number"){var a=k.nodeSetValue();var o=j.numberValue();g=false;for(var d=0;d<a.length;++d){var l=xmlValue(a[d])-0;if(h(l,o)){g=true;break}}}else{if(k.type=="string"){var o=k.stringValue();var a=j.nodeSetValue();g=false;for(var d=0;d<a.length;++d){var l=xmlValue(a[d]);if(h(o,l)){g=true;break}}}else{if(j.type=="string"){var a=k.nodeSetValue();var o=j.stringValue();g=false;for(var d=0;d<a.length;++d){var l=xmlValue(a[d]);if(h(l,o)){g=true;break}}}else{g=h(k.booleanValue(),j.booleanValue())}}}}}else{if(k.type=="boolean"||j.type=="boolean"){g=h(k.booleanValue(),j.booleanValue())}else{if(k.type=="number"||j.type=="number"){g=h(k.numberValue(),j.numberValue())}else{g=h(k.stringValue(),j.stringValue())}}}}return new BooleanValue(g)};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(a){return new TokenExpr(a)}function passExpr(a){return a}function makeLocationExpr1(b,a){a.absolute=true;return a}function makeLocationExpr2(b,a){a.absolute=true;a.prependStep(makeAbbrevStep(b.value));return a}function makeLocationExpr3(b){var a=new LocationExpr();a.appendStep(makeAbbrevStep("."));a.absolute=true;return a}function makeLocationExpr4(b){var a=new LocationExpr();a.absolute=true;a.appendStep(makeAbbrevStep(b.value));return a}function makeLocationExpr5(b){var a=new LocationExpr();a.appendStep(b);return a}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(b,a){b.appendPredicate(a);return b}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 NodeTestElementOrAttribute}function makeNodeTestExpr2(a,b,c){return new NodeTestNC(a.value)}function makeNodeTestExpr3(a){return new NodeTestName(a.value)}function makeNodeTestExpr4(c,a){var b=c.value.replace(/\s*\($/,"");switch(b){case"node":return new NodeTestAny;case"text":return new NodeTestText;case"comment":return new NodeTestComment;case"processing-instruction":return new NodeTestPI("")}}function makeNodeTestExpr5(d,c,a){var b=d.replace(/\s*\($/,"");if(b!="processing-instruction"){throw b}return new NodeTestPI(c.value)}function makePredicateExpr(c,b,a){return new PredicateExpr(b)}function makePrimaryExpr(c,b,a){return b}function makeFunctionCallExpr1(b,c,a){return new FunctionCallExpr(b)}function makeFunctionCallExpr2(e,g,d,c,a){var b=new FunctionCallExpr(e);b.appendArg(d);for(var f=0;f<c.length;++f){b.appendArg(c[f])}return b}function makeArgumentExpr(a,b){return b}function makeUnionExpr(c,a,b){return new UnionExpr(c,b)}function makePathExpr1(c,b,a){return new PathExpr(c,a)}function makePathExpr2(c,b,a){a.prependStep(makeAbbrevStep(b.value));return new PathExpr(c,a)}function makeFilterExpr(b,a){if(a.length>0){return new FilterExpr(b,a)}else{return b}}function makeUnaryMinusExpr(a,b){return new UnaryMinusExpr(b)}function makeBinaryExpr(b,c,a){return new BinaryExpr(b,c,a)}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(f){if(f.charAt(0)=="$"){return new VariableExpr(f.substr(1))}else{if(f.charAt(0)=="@"){var e=new NodeTestName(f.substr(1));var d=new StepExpr("attribute",e);var g=new LocationExpr();g.appendStep(d);return g}else{if(f.match(/^[0-9]+$/)){return new NumberExpr(f)}else{var e=new NodeTestName(f);var d=new StepExpr("child",e);var g=new LocationExpr();g.appendStep(d);return g}}}}function makeSimpleExpr2(h){var f=stringSplit(h,"/");var j=new LocationExpr();for(var g=0;g<f.length;++g){var e=new NodeTestName(f[g]);var d=new StepExpr("child",e);j.appendStep(d)}return j}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("^"+XML_NC_NAME)};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("^("+XML_NC_NAME+":)?"+XML_NC_NAME)};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(j,h){var l=j[1].length;var k=h[1].length;if(l<k){return 1}else{if(l>k){return -1}else{return 0}}});var a=1;for(var c=0;c<xpathNonTerminals.length;++c){xpathNonTerminals[c].key=a++}for(c=0;c<xpathTokenRules.length;++c){xpathTokenRules[c].key=a++}xpathLog("XPath parse INIT: "+a+" rules");function e(k,h,j){if(!k[h]){k[h]=[]}k[h].push(j)}for(c=0;c<xpathGrammarRules.length;++c){var g=xpathGrammarRules[c];var f=g[1];for(var b=f.length-1;b>=0;--b){if(f[b]==Q_1M){e(xpathRules,f[b-1].key,g);break}else{if(f[b]==Q_MM||f[b]==Q_01){e(xpathRules,f[b-1].key,g);--b}else{e(xpathRules,f[b].key,g);break}}}}xpathLog("XPath parse INIT: "+xpathRules.length+" rule bins");var d=0;mapExec(xpathRules,function(h){if(h){d+=h.length}});xpathLog("XPath parse INIT: "+(d/xpathRules.length)+" average bin size")}function xpathCollectDescendants(b,a){for(var c=a.firstChild;c;c=c.nextSibling){b.push(c);arguments.callee(b,c)}}function xpathCollectDescendantsReverse(b,a){for(var c=a.lastChild;c;c=c.previousSibling){b.push(c);arguments.callee(b,c)}}function xpathDomEval(c,b){var d=xpathParse(c);var a=d.evaluate(new ExprContext(b));return a}function xpathSort(h,f){if(f.length==0){return}var n=[];for(var g=0;g<h.contextSize();++g){var c=h.nodelist[g];var d={node:c,key:[]};var b=h.clone(c,0,[c]);for(var e=0;e<f.length;++e){var m=f[e];var l=m.expr.evaluate(b);var k;if(m.type=="text"){k=l.stringValue()}else{if(m.type=="number"){k=l.numberValue()}}d.key.push({value:k,order:m.order})}d.key.push({value:g,order:"ascending"});n.push(d)}n.sort(xpathSortByKey);var a=[];for(var g=0;g<n.length;++g){a.push(n[g].node)}h.nodelist=a;h.setNode(0)}function xpathSortByKey(d,c){for(var a=0;a<d.key.length;++a){var b=d.key[a].order=="descending"?-1:1;if(d.key[a].value>c.key[a].value){return +1*b}else{if(d.key[a].value<c.key[a].value){return -1*b}}}return 0}function xpathEval(a,c){var d=xpathParse(a);var b=d.evaluate(c);return b}var Spry;if(!Spry){Spry={}}if(!Spry.Utils){Spry.Utils={}}Spry.Utils.msProgIDs=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0"];Spry.Utils.createXMLHttpRequest=function(){var a=null;try{if(window.ActiveXObject){while(!a&&Spry.Utils.msProgIDs.length){try{a=new ActiveXObject(Spry.Utils.msProgIDs[0])}catch(b){a=null}if(!a){Spry.Utils.msProgIDs.splice(0,1)}}}if(!a&&window.XMLHttpRequest){a=new XMLHttpRequest()}}catch(b){a=null}if(!a){Spry.Debug.reportError("Failed to create an XMLHttpRequest object!")}return a};Spry.Utils.loadURL=function(j,b,c,h,f){var d=new Spry.Utils.loadURL.Request();d.method=j;d.url=b;d.async=c;d.successCallback=h;Spry.Utils.setOptions(d,f);try{d.xhRequest=Spry.Utils.createXMLHttpRequest();if(!d.xhRequest){return null}if(d.async){d.xhRequest.onreadystatechange=function(){Spry.Utils.loadURL.callback(d)}}d.xhRequest.open(d.method,d.url,d.async,d.username,d.password);if(d.headers){for(var a in d.headers){d.xhRequest.setRequestHeader(a,d.headers[a])}}d.xhRequest.send(d.postData);if(!d.async){Spry.Utils.loadURL.callback(d)}}catch(g){if(d.errorCallback){d.errorCallback(d)}else{Spry.Debug.reportError("Exception caught while loading "+b+": "+g)}d=null}return d};Spry.Utils.loadURL.callback=function(a){if(!a||a.xhRequest.readyState!=4){return}if(a.successCallback&&(a.xhRequest.status==200||a.xhRequest.status==0)){a.successCallback(a)}else{if(a.errorCallback){a.errorCallback(a)}}};Spry.Utils.loadURL.Request=function(){var b=Spry.Utils.loadURL.Request.props;var c=b.length;for(var a=0;a<c;a++){this[b[a]]=null}this.method="GET";this.async=true;this.headers={}};Spry.Utils.loadURL.Request.props=["method","url","async","username","password","postData","successCallback","errorCallback","headers","userData","xhRequest"];Spry.Utils.loadURL.Request.prototype.extractRequestOptions=function(d,c){if(!d){return}var b=Spry.Utils.loadURL.Request.props;var e=b.length;for(var a=0;a<e;a++){var f=b[a];if(d[f]!=undefined){this[f]=d[f];if(c){d[f]=undefined}}}};Spry.Utils.loadURL.Request.prototype.clone=function(){var b=Spry.Utils.loadURL.Request.props;var d=b.length;var c=new Spry.Utils.loadURL.Request;for(var a=0;a<d;a++){c[b[a]]=this[b[a]]}if(this.headers){c.headers={};Spry.Utils.setOptions(c.headers,this.headers)}return c};Spry.Utils.setInnerHTML=function(ele,str,preventScripts){if(!ele){return}ele=Spry.$(ele);var scriptExpr="<script[^>]*>(.|s|\n|\r)*?<\/script>";ele.innerHTML=str.replace(new RegExp(scriptExpr,"img"),"");if(preventScripts){return}var matches=str.match(new RegExp(scriptExpr,"img"));if(matches){var numMatches=matches.length;for(var i=0;i<numMatches;i++){var s=matches[i].replace(/<script[^>]*>[\s\r\n]*(<\!--)?|(-->)?[\s\r\n]*<\/script>/img,"");Spry.Utils.eval(s)}}};Spry.Utils.updateContent=function(d,b,a,c){Spry.Utils.loadURL("GET",b,true,function(e){Spry.Utils.setInnerHTML(d,e.xhRequest.responseText);if(a){a(d,b)}},c)};if(!Spry.$$){Spry.Utils.addEventListener=function(c,b,d,a){try{c=Spry.$(c);if(c.addEventListener){c.addEventListener(b,d,a)}else{if(c.attachEvent){c.attachEvent("on"+b,d)}}}catch(f){}};Spry.Utils.removeEventListener=function(c,b,d,a){try{c=Spry.$(c);if(c.removeEventListener){c.removeEventListener(b,d,a)}else{if(c.detachEvent){c.detachEvent("on"+b,d)}}}catch(f){}};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.addClassName=function(b,a){b=Spry.$(b);if(!b||!a||(b.className&&b.className.search(new RegExp("\\b"+a+"\\b"))!=-1)){return}b.className+=(b.className?" ":"")+a};Spry.Utils.removeClassName=function(b,a){b=Spry.$(b);if(!b||!a||(b.className&&b.className.search(new RegExp("\\b"+a+"\\b"))==-1)){return}b.className=b.className.replace(new RegExp("\\s*\\b"+a+"\\b","g"),"")};Spry.$=function(b){if(arguments.length>1){for(var a=0,d=[],c=arguments.length;a<c;a++){d.push(Spry.$(arguments[a]))}return d}if(typeof b=="string"){b=document.getElementById(b)}return b}}Spry.Utils.getObjectByName=function(c){var a=null;if(c){var e=window;var b=c.split(".");for(var d=0;e&&d<b.length;d++){a=e[b[d]];e=a}}return a};Spry.Utils.eval=function(str){return eval(str)};Spry.Utils.escapeQuotesAndLineBreaks=function(a){if(a){a=a.replace(/\\/g,"\\\\");a=a.replace(/["']/g,"\\$&");a=a.replace(/\n/g,"\\n");a=a.replace(/\r/g,"\\r")}return a};Spry.Utils.encodeEntities=function(a){if(a&&a.search(/[&<>"]/)!=-1){a=a.replace(/&/g,"&amp;");a=a.replace(/</g,"&lt;");a=a.replace(/>/g,"&gt;");a=a.replace(/"/g,"&quot;")}return a};Spry.Utils.decodeEntities=function(b){var a=Spry.Utils.decodeEntities.div;if(!a){a=document.createElement("div");Spry.Utils.decodeEntities.div=a;if(!a){return b}}a.innerHTML=b;if(a.childNodes.length==1&&a.firstChild.nodeType==3&&a.firstChild.nextSibling==null){b=a.firstChild.data}else{b=b.replace(/&lt;/gi,"<");b=b.replace(/&gt;/gi,">");b=b.replace(/&quot;/gi,'"');b=b.replace(/&amp;/gi,"&")}return b};Spry.Utils.fixupIETagAttributes=function(h){var b="";var a=h.match(/^<[^\s>]+\s*/)[0];var e=h.match(/\s*\/?>$/)[0];var j=h.replace(/^<[^\s>]+\s*|\s*\/?>/g,"");b+=a;if(j){var g=0;var c=0;while(g<j.length){while(j.charAt(c)!="="&&c<j.length){++c}if(c>=j.length){b+=j.substring(g,c);break}++c;b+=j.substring(g,c);g=c;if(j.charAt(c)=='"'||j.charAt(c)=="'"){var f=c++;while(c<j.length){if(j.charAt(c)==j.charAt(f)){c++;break}else{if(j.charAt(c)=="\\"){c++}}c++}b+=j.substring(g,c);g=c}else{b+='"';var d=j.slice(c).search(/\s/);c=(d!=-1)?(c+d):j.length;b+=j.slice(g,c);b+='"';g=c}}}b+=e;return b};Spry.Utils.fixUpIEInnerHTML=function(f){var e="";var d=new RegExp("<\\!--|<\\!\\[CDATA\\[|<\\w+[^<>]*>|-->|\\]\\](>|&gt;)","g");var a=0;var b=0;while(f.length){var c=d.exec(f);if(!c||!c[0]){e+=f.substr(a,f.length-a);break}if(c.index!=a){e+=f.substr(a,c.index-a)}if(c[0]=="<!--"||c[0]=="<![CDATA["){++b;e+=c[0]}else{if(c[0]=="-->"||c[0]=="]]>"||(b&&c[0]=="]]&gt;")){--b;e+=c[0]}else{if(!b&&c[0].charAt(0)=="<"){e+=Spry.Utils.fixupIETagAttributes(c[0])}else{e+=c[0]}}}a=d.lastIndex}return e};Spry.Utils.stringToXMLDoc=function(f){var b=null;try{var a=new ActiveXObject("Microsoft.XMLDOM");a.async=false;a.loadXML(f);b=a}catch(c){try{var d=new DOMParser;b=d.parseFromString(f,"text/xml")}catch(c){Spry.Debug.reportError("Caught exception in Spry.Utils.stringToXMLDoc(): "+c+"\n");b=null}}return b};Spry.Utils.serializeObject=function(d){var f="";var c=true;if(d==null||d==undefined){return f+d}var e=typeof d;if(e=="number"||e=="boolean"){f+=d}else{if(e=="string"){f+='"'+Spry.Utils.escapeQuotesAndLineBreaks(d)+'"'}else{if(d.constructor==Array){f+="[";for(var a=0;a<d.length;a++){if(!c){f+=", "}f+=Spry.Utils.serializeObject(d[a]);c=false}f+="]"}else{if(e=="object"){f+="{";for(var b in d){if(!c){f+=", "}f+='"'+b+'": '+Spry.Utils.serializeObject(d[b]);c=false}f+="}"}}}}return f};Spry.Utils.getNodesByFunc=function(a,d){var f=new Array;var c=new Array;var b=a;while(b){if(d(b)){c.push(b)}if(b.hasChildNodes()){f.push(b);b=b.firstChild}else{if(b==a){b=null}else{try{b=b.nextSibling}catch(g){b=null}}}while(!b&&f.length>0){b=f.pop();if(b==a){b=null}else{try{b=b.nextSibling}catch(g){b=null}}}}if(f&&f.length>0){Spry.Debug.trace("-- WARNING: Spry.Utils.getNodesByFunc() failed to traverse all nodes!\n")}return c};Spry.Utils.getFirstChildWithNodeName=function(a,c){var b=a.firstChild;while(b){if(b.nodeName==c){return b}b=b.nextSibling}return null};Spry.Utils.setOptions=function(d,c,a){if(!c){return}for(var b in c){if(a&&c[b]==undefined){continue}d[b]=c[b]}};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(b,c,e){var d=null;if(!e){this.clearSelection()}else{for(var a=0;a<this.selectedElements.length;a++){d=this.selectedElements[a].element;if(d.element==b){if(d.className!=c){Spry.Utils.removeClassName(b,d.className);Spry.Utils.addClassName(b,c)}return}}}d=new Object;d.element=b;d.className=c;this.selectedElements.push(d);Spry.Utils.addClassName(b,c)};Spry.Utils.SelectionManager.SelectionGroup.prototype.unSelect=function(b){for(var a=0;a<this.selectedElements.length;a++){var c=this.selectedElements[a].element;if(c.element==b){Spry.Utils.removeClassName(c.element,c.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,e){var d=Spry.Utils.SelectionManager.getSelectionGroup(a);if(!d){return}d.select(b,c,e)};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()};Spry.Utils.Notifier=function(){this.observers=[];this.suppressNotifications=0};Spry.Utils.Notifier.prototype.addObserver=function(b){if(!b){return}var a=this.observers.length;for(var c=0;c<a;c++){if(this.observers[c]==b){return}}this.observers[a]=b};Spry.Utils.Notifier.prototype.removeObserver=function(a){if(!a){return}for(var b=0;b<this.observers.length;b++){if(this.observers[b]==a){this.observers.splice(b,1);break}}};Spry.Utils.Notifier.prototype.notifyObservers=function(b,d){if(!b){return}if(!this.suppressNotifications){var a=this.observers.length;for(var c=0;c<a;c++){var e=this.observers[c];if(e){if(typeof e=="function"){e(b,this,d)}else{if(e[b]){e[b](this,d)}}}}}};Spry.Utils.Notifier.prototype.enableNotifications=function(){if(--this.suppressNotifications<0){this.suppressNotifications=0;Spry.Debug.reportError("Unbalanced enableNotifications() call!\n")}};Spry.Utils.Notifier.prototype.disableNotifications=function(){++this.suppressNotifications};Spry.Debug={};Spry.Debug.enableTrace=true;Spry.Debug.debugWindow=null;Spry.Debug.onloadDidFire=false;Spry.Utils.addLoadListener(function(){Spry.Debug.onloadDidFire=true;Spry.Debug.flushQueuedMessages()});Spry.Debug.flushQueuedMessages=function(){if(Spry.Debug.flushQueuedMessages.msgs){var b=Spry.Debug.flushQueuedMessages.msgs;for(var a=0;a<b.length;a++){Spry.Debug.debugOut(b[a].msg,b[a].color)}Spry.Debug.flushQueuedMessages.msgs=null}};Spry.Debug.createDebugWindow=function(){if(!Spry.Debug.enableTrace||Spry.Debug.debugWindow||!Spry.Debug.onloadDidFire){return}try{Spry.Debug.debugWindow=document.createElement("div");var b=Spry.Debug.debugWindow;b.style.fontSize="12px";b.style.fontFamily="console";b.style.position="absolute";b.style.width="400px";b.style.height="300px";b.style.overflow="auto";b.style.border="solid 1px black";b.style.backgroundColor="white";b.style.color="black";b.style.bottom="0px";b.style.right="0px";b.setAttribute("id","SpryDebugWindow");document.body.appendChild(Spry.Debug.debugWindow)}catch(a){}};Spry.Debug.debugOut=function(c,a){if(!Spry.Debug.debugWindow){Spry.Debug.createDebugWindow();if(!Spry.Debug.debugWindow){if(!Spry.Debug.flushQueuedMessages.msgs){Spry.Debug.flushQueuedMessages.msgs=new Array}Spry.Debug.flushQueuedMessages.msgs.push({msg:c,color:a});return}}var b=document.createElement("div");if(a){b.style.backgroundColor=a}b.innerHTML=c;Spry.Debug.debugWindow.appendChild(b)};Spry.Debug.trace=function(a){Spry.Debug.debugOut(a)};Spry.Debug.reportError=function(a){Spry.Debug.debugOut(a,"red")};Spry.Data={};Spry.Data.regionsArray={};Spry.Data.initRegionsOnLoad=true;Spry.Data.initRegions=function(d){d=d?Spry.$(d):document.body;var n=null;var g=Spry.Utils.getNodesByFunc(d,function(v){try{if(v.nodeType!=1){return false}var t="spry:region";var s=v.attributes.getNamedItem(t);if(!s){t="spry:detailregion";s=v.attributes.getNamedItem(t)}if(s){if(n){var u=v.parentNode;while(u){if(u==n){Spry.Debug.reportError("Found a nested "+t+" in the following markup. Nested regions are currently not supported.<br/><pre>"+Spry.Utils.encodeEntities(u.innerHTML)+"</pre>");return false}u=u.parentNode}}if(s.value){s=v.attributes.getNamedItem("id");if(!s||!s.value){v.setAttribute("id","spryregion"+(++Spry.Data.initRegions.nextUniqueRegionID))}n=v;return true}else{Spry.Debug.reportError(t+" attributes require one or more data set names as values!")}}}catch(w){}return false});var a,o,j;var h=[];for(j=0;j<g.length;j++){var c=g[j];var k=false;a=c.attributes.getNamedItem("id").value;attr=c.attributes.getNamedItem("spry:region");if(!attr){attr=c.attributes.getNamedItem("spry:detailregion");k=true}if(!attr.value){Spry.Debug.reportError("spry:region and spry:detailregion attributes require one or more data set names as values!");continue}c.attributes.removeNamedItem(attr.nodeName);Spry.Utils.removeClassName(c,Spry.Data.Region.hiddenRegionClassName);o=Spry.Data.Region.strToDataSetsArray(attr.value);if(!o.length){Spry.Debug.reportError("spry:region or spry:detailregion attribute has no data set!");continue}var l=false;var q=false;var f="";var r=null;var b={};var e={};attr=c.attributes.getNamedItem("spry:readystate");if(attr&&attr.value){e.ready=attr.value}attr=c.attributes.getNamedItem("spry:errorstate");if(attr&&attr.value){e.error=attr.value}attr=c.attributes.getNamedItem("spry:loadingstate");if(attr&&attr.value){e.loading=attr.value}attr=c.attributes.getNamedItem("spry:expiredstate");if(attr&&attr.value){e.expired=attr.value}var m=Spry.Utils.getNodesByFunc(c,function(H){try{if(H.nodeType==1){var z=H.attributes;var v=Spry.Data.Region.PI.orderedInstructions.length;var t=null;var s=null;for(var J=0;J<v;J++){var I=Spry.Data.Region.PI.orderedInstructions[J];var G=z.getNamedItem(I);if(!G){continue}var F=Spry.Data.Region.PI.instructions[I];var B=(H==c)?true:F.childrenOnly;var E=F.getOpenTag(H,I);var y=F.getCloseTag(H,I);if(B){var C=document.createComment(E);var D=document.createComment(y);if(!t){H.insertBefore(C,H.firstChild)}else{H.insertBefore(C,t.nextSibling)}t=C;if(!s){H.appendChild(D)}else{H.insertBefore(D,s)}s=D}else{var A=H.parentNode;A.insertBefore(document.createComment(E),H);A.insertBefore(document.createComment(y),H.nextSibling)}if(I=="spry:state"){b[G.value]=true}H.removeAttribute(I)}if(Spry.Data.Region.enableBehaviorAttributes){var L=Spry.Data.Region.behaviorAttrs;for(var u in L){var w=z.getNamedItem(u);if(w){l=true;if(L[u].setup){L[u].setup(H,w.value)}}}}}}catch(K){}return false});f=c.innerHTML;if(window.ActiveXObject&&!Spry.Data.Region.disableIEInnerHTMLFixUp&&f.search(/=\{/)!=-1){if(Spry.Data.Region.debug){Spry.Debug.trace("<hr />Performing IE innerHTML fix up of Region: "+a+"<br /><br />"+Spry.Utils.encodeEntities(f))}f=Spry.Utils.fixUpIEInnerHTML(f)}if(Spry.Data.Region.debug){Spry.Debug.trace("<hr />Region template markup for '"+a+"':<br /><br />"+Spry.Utils.encodeEntities(f))}if(!q){c.innerHTML=""}var p=new Spry.Data.Region(c,a,k,f,o,b,e,l);Spry.Data.regionsArray[p.name]=p;h.push(p)}for(var j=0;j<h.length;j++){h[j].updateContent()}};Spry.Data.initRegions.nextUniqueRegionID=0;Spry.Data.updateRegion=function(b){if(!b||!Spry.Data.regionsArray||!Spry.Data.regionsArray[b]){return}try{Spry.Data.regionsArray[b].updateContent()}catch(a){Spry.Debug.reportError("Spry.Data.updateRegion("+b+") caught an exception: "+a+"\n")}};Spry.Data.getRegion=function(a){return Spry.Data.regionsArray[a]};Spry.Data.updateAllRegions=function(){if(!Spry.Data.regionsArray){return}for(var a in Spry.Data.regionsArray){Spry.Data.updateRegion(a)}};Spry.Data.getDataSetByName=function(a){var b=Spry.Utils.getObjectByName(a);if(typeof b!="object"||!b.getData||!b.filter){return null}return b};Spry.Data.DataSet=function(a){Spry.Utils.Notifier.call(this);this.name="";this.internalID=Spry.Data.DataSet.nextDataSetID++;this.curRowID=0;this.data=[];this.unfilteredData=null;this.dataHash={};this.columnTypes={};this.filterFunc=null;this.filterDataFunc=null;this.distinctOnLoad=false;this.distinctFieldsOnLoad=null;this.sortOnLoad=null;this.sortOrderOnLoad="ascending";this.keepSorted=false;this.dataWasLoaded=false;this.pendingRequest=null;this.lastSortColumns=[];this.lastSortOrder="";this.loadIntervalID=0;Spry.Utils.setOptions(this,a)};Spry.Data.DataSet.prototype=new Spry.Utils.Notifier();Spry.Data.DataSet.prototype.constructor=Spry.Data.DataSet;Spry.Data.DataSet.prototype.getData=function(a){return(a&&this.unfilteredData)?this.unfilteredData:this.data};Spry.Data.DataSet.prototype.getUnfilteredData=function(){return this.getData(true)};Spry.Data.DataSet.prototype.getLoadDataRequestIsPending=function(){return this.pendingRequest!=null};Spry.Data.DataSet.prototype.getDataWasLoaded=function(){return this.dataWasLoaded};Spry.Data.DataSet.prototype.getValue=function(c,b){var a=undefined;if(!b){b=this.getCurrentRow()}switch(c){case"ds_RowNumber":a=this.getRowNumber(b);break;case"ds_RowNumberPlus1":a=this.getRowNumber(b)+1;break;case"ds_RowCount":a=this.getRowCount();break;case"ds_UnfilteredRowCount":a=this.getRowCount(true);break;case"ds_CurrentRowNumber":a=this.getCurrentRowNumber();break;case"ds_CurrentRowID":a=this.getCurrentRowID();break;case"ds_EvenOddRow":a=(this.getRowNumber(b)%2)?Spry.Data.Region.evenRowClassName:Spry.Data.Region.oddRowClassName;break;case"ds_SortOrder":a=this.getSortOrder();break;case"ds_SortColumn":a=this.getSortColumn();break;default:if(b){a=b[c]}break}return a};Spry.Data.DataSet.prototype.setDataFromArray=function(a,e){this.notifyObservers("onPreLoad");this.unfilteredData=null;this.filteredData=null;this.data=[];this.dataHash={};var b=a.length;for(var c=0;c<b;c++){var d=a[c];if(d.ds_RowID==undefined){d.ds_RowID=c}this.dataHash[d.ds_RowID]=d;this.data.push(d)}this.loadData(e)};Spry.Data.DataSet.prototype.loadData=function(c){var a=this;this.pendingRequest=new Object;this.dataWasLoaded=false;var b=function(){a.pendingRequest=null;a.dataWasLoaded=true;a.applyColumnTypes();a.disableNotifications();a.filterAndSortData();a.enableNotifications();a.notifyObservers("onPostLoad");a.notifyObservers("onDataChanged")};if(c){b()}else{this.pendingRequest.timer=setTimeout(b,0)}};Spry.Data.DataSet.prototype.filterAndSortData=function(){if(this.filterDataFunc){this.filterData(this.filterDataFunc,true)}if(this.distinctOnLoad){this.distinct(this.distinctFieldsOnLoad)}if(this.keepSorted&&this.getSortColumn()){this.sort(this.lastSortColumns,this.lastSortOrder)}else{if(this.sortOnLoad){this.sort(this.sortOnLoad,this.sortOrderOnLoad)}}if(this.filterFunc){this.filter(this.filterFunc,true)}if(this.data&&this.data.length>0){this.curRowID=this.data[0]["ds_RowID"]}else{this.curRowID=0}};Spry.Data.DataSet.prototype.cancelLoadData=function(){if(this.pendingRequest&&this.pendingRequest.timer){clearTimeout(this.pendingRequest.timer)}this.pendingRequest=null};Spry.Data.DataSet.prototype.getRowCount=function(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(b){if(this.curRowID==b){return}var a={oldRowID:this.curRowID,newRowID:b};this.curRowID=b;this.notifyObservers("onCurrentRowChanged",a)};Spry.Data.DataSet.prototype.getRowNumber=function(e,a){if(e){var c=this.getData(a);if(c&&c.length){var d=c.length;for(var b=0;b<d;b++){if(c[b]==e){return b}}}}return -1};Spry.Data.DataSet.prototype.getCurrentRowNumber=function(){return this.getRowNumber(this.getCurrentRow())};Spry.Data.DataSet.prototype.getCurrentRowID=function(){return this.curRowID};Spry.Data.DataSet.prototype.setCurrentRowNumber=function(a){if(!this.data||a>=this.data.length){Spry.Debug.trace("Invalid row number: "+a+"\n");return}var b=this.data[a]["ds_RowID"];if(b==undefined||this.curRowID==b){return}this.setCurrentRow(b)};Spry.Data.DataSet.prototype.findRowsWithColumnValues=function(f,a,c){var d=[];var k=this.getData(c);if(k){var g=k.length;for(var e=0;e<g;e++){var j=k[e];var b=true;for(var h in f){if(f[h]!=j[h]){b=false;break}}if(b){if(a){return j}d.push(j)}}}return a?null:d};Spry.Data.DataSet.prototype.setColumnType=function(c,b){if(c){if(typeof c=="string"){c=[c]}for(var a=0;a<c.length;a++){this.columnTypes[c[a]]=b}}};Spry.Data.DataSet.prototype.getColumnType=function(a){if(this.columnTypes[a]){return this.columnTypes[a]}return"string"};Spry.Data.DataSet.prototype.applyColumnTypes=function(){var d=this.getData(true);var f=d.length;var e=[];if(f<1){return}for(var a in this.columnTypes){var c=this.columnTypes[a];if(c!="string"){for(var b=0;b<f;b++){var h=d[b];var g=h[a];if(g!=undefined){if(c=="number"){h[a]=new Number(g)}else{if(c=="html"){h[a]=Spry.Utils.decodeEntities(g)}}}}}}};Spry.Data.DataSet.prototype.distinct=function(h){if(this.data){var f=this.data;this.data=[];this.dataHash={};var d=false;var g={};var e=0;var l=[];if(typeof h=="string"){l=[h]}else{if(h){l=h}else{for(var a in f[0]){l[e++]=a}}}for(var e=0;e<f.length;e++){var b=f[e];var k="";for(var c=0;c<l.length;c++){a=l[c];if(a!="ds_RowID"){if(k){k+=","}k+=a+':"'+b[a]+'"'}}if(!g[k]){this.data.push(b);this.dataHash[b.ds_RowID]=b;g[k]=true}else{d=true}}if(d){this.notifyObservers("onDataChanged")}}};Spry.Data.DataSet.prototype.getSortColumn=function(){return(this.lastSortColumns&&this.lastSortColumns.length>0)?this.lastSortColumns[0]:""};Spry.Data.DataSet.prototype.getSortOrder=function(){return this.lastSortOrder?this.lastSortOrder:""};Spry.Data.DataSet.prototype.sort=function(f,e){if(!f){return}if(typeof f=="string"){f=[f,"ds_RowID"]}else{if(f.length<2&&f[0]!="ds_RowID"){f.push("ds_RowID")}}if(!e){e="toggle"}if(e=="toggle"){if(this.lastSortColumns.length>0&&this.lastSortColumns[0]==f[0]&&this.lastSortOrder=="ascending"){e="descending"}else{e="ascending"}}if(e!="ascending"&&e!="descending"){Spry.Debug.reportError("Invalid sort order type specified: "+e+"\n");return}var d={oldSortColumns:this.lastSortColumns,oldSortOrder:this.lastSortOrder,newSortColumns:f,newSortOrder:e};this.notifyObservers("onPreSort",d);var b=f[f.length-1];var a=Spry.Data.DataSet.prototype.sort.getSortFunc(b,this.getColumnType(b),e);for(var c=f.length-2;c>=0;c--){b=f[c];a=Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc(Spry.Data.DataSet.prototype.sort.getSortFunc(b,this.getColumnType(b),e),a)}if(this.unfilteredData){this.unfilteredData.sort(a);if(this.filterFunc){this.filter(this.filterFunc,true)}}else{this.data.sort(a)}this.lastSortColumns=f.slice(0);this.lastSortOrder=e;this.notifyObservers("onPostSort",d)};Spry.Data.DataSet.prototype.sort.getSortFunc=function(d,c,a){var b=null;if(c=="number"){if(a=="ascending"){b=function(f,e){f=f[d];e=e[d];if(f==undefined||e==undefined){return(f==e)?0:(f?1:-1)}return f-e}}else{b=function(f,e){f=f[d];e=e[d];if(f==undefined||e==undefined){return(f==e)?0:(f?-1:1)}return e-f}}}else{if(c=="date"){if(a=="ascending"){b=function(g,e){var h=g[d];var f=e[d];h=h?(new Date(h)):0;f=f?(new Date(f)):0;return h-f}}else{b=function(g,e){var h=g[d];var f=e[d];h=h?(new Date(h)):0;f=f?(new Date(f)):0;return f-h}}}else{if(a=="ascending"){b=function(l,k){l=l[d];k=k[d];if(l==undefined||k==undefined){return(l==k)?0:(l?1:-1)}var o=l.toString();var m=k.toString();var e=o.toLowerCase();var f=m.toLowerCase();var h=o.length>m.length?m.length:o.length;for(var g=0;g<h;g++){var p=e.charAt(g);var n=f.charAt(g);var j=o.charAt(g);var q=m.charAt(g);if(p>n){return 1}else{if(p<n){return -1}else{if(j>q){return 1}else{if(j<q){return -1}}}}}if(o.length==m.length){return 0}else{if(o.length>m.length){return 1}}return -1}}else{b=function(l,k){l=l[d];k=k[d];if(l==undefined||k==undefined){return(l==k)?0:(l?-1:1)}var o=l.toString();var m=k.toString();var e=o.toLowerCase();var f=m.toLowerCase();var h=o.length>m.length?m.length:o.length;for(var g=0;g<h;g++){var p=e.charAt(g);var n=f.charAt(g);var j=o.charAt(g);var q=m.charAt(g);if(p>n){return -1}else{if(p<n){return 1}else{if(j>q){return -1}else{if(j<q){return 1}}}}}if(o.length==m.length){return 0}else{if(o.length>m.length){return -1}}return 1}}}}return b};Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc=function(b,a){return function(d,c){var e=b(d,c);if(e==0){e=a(d,c)}return e}};Spry.Data.DataSet.prototype.filterData=function(e,c){var d=false;if(!e){this.filterDataFunc=null;d=true}else{this.filterDataFunc=e;if(this.dataWasLoaded&&((this.unfilteredData&&this.unfilteredData.length)||(this.data&&this.data.length))){if(this.unfilteredData){this.data=this.unfilteredData;this.unfilteredData=null}var f=this.data;this.data=[];this.dataHash={};for(var b=0;b<f.length;b++){var a=e(this,f[b],b);if(a){this.data.push(a);this.dataHash[a.ds_RowID]=a}}d=true}}if(d){if(!c){this.disableNotifications();if(this.filterFunc){this.filter(this.filterFunc,true)}this.enableNotifications()}this.notifyObservers("onDataChanged")}};Spry.Data.DataSet.prototype.filter=function(f,c){var e=false;if(!f){if(this.filterFunc&&this.unfilteredData){this.data=this.unfilteredData;this.unfilteredData=null;this.filterFunc=null;e=true}}else{this.filterFunc=f;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 b=0;b<d.length;b++){var a=f(this,d[b],b);if(a){this.data.push(a)}}e=true}}if(e){this.notifyObservers("onDataChanged")}};Spry.Data.DataSet.prototype.startLoadInterval=function(b){this.stopLoadInterval();if(b>0){var a=this;this.loadInterval=b;this.loadIntervalID=setInterval(function(){a.loadData()},b)}};Spry.Data.DataSet.prototype.stopLoadInterval=function(){if(this.loadIntervalID){clearInterval(this.loadIntervalID)}this.loadInterval=0;this.loadIntervalID=null};Spry.Data.DataSet.nextDataSetID=0;Spry.Data.HTTPSourceDataSet=function(a,b){Spry.Data.DataSet.call(this);this.url=a;this.dataSetsForDataRefStrings=new Array;this.hasDataRefStrings=false;this.useCache=true;this.setRequestInfo(b,true);Spry.Utils.setOptions(this,b,true);this.recalculateDataSetDependencies();if(this.loadInterval>0){this.startLoadInterval(this.loadInterval)}};Spry.Data.HTTPSourceDataSet.prototype=new Spry.Data.DataSet();Spry.Data.HTTPSourceDataSet.prototype.constructor=Spry.Data.HTTPSourceDataSet;Spry.Data.HTTPSourceDataSet.prototype.setRequestInfo=function(a,b){this.requestInfo=new Spry.Utils.loadURL.Request();this.requestInfo.extractRequestOptions(a,b);if(this.requestInfo.method=="POST"){if(!this.requestInfo.headers){this.requestInfo.headers={}}if(!this.requestInfo.headers["Content-Type"]){this.requestInfo.headers["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8"}}};Spry.Data.HTTPSourceDataSet.prototype.recalculateDataSetDependencies=function(){this.hasDataRefStrings=false;var b=0;for(b=0;b<this.dataSetsForDataRefStrings.length;b++){var d=this.dataSetsForDataRefStrings[b];if(d){d.removeObserver(this)}}this.dataSetsForDataRefStrings=new Array();var a=this.getDataRefStrings();var c=0;for(var g=0;g<a.length;g++){var e=Spry.Data.Region.getTokensFromStr(a[g]);for(b=0;e&&b<e.length;b++){if(e[b].search(/{[^}:]+::[^}]+}/)!=-1){var f=e[b].replace(/^\{|::.*\}/g,"");var d=null;if(!this.dataSetsForDataRefStrings[f]){d=Spry.Data.getDataSetByName(f);if(f&&d){this.dataSetsForDataRefStrings[f]=d;this.dataSetsForDataRefStrings[c++]=d;this.hasDataRefStrings=true}}}}}for(b=0;b<this.dataSetsForDataRefStrings.length;b++){var d=this.dataSetsForDataRefStrings[b];d.addObserver(this)}};Spry.Data.HTTPSourceDataSet.prototype.getDataRefStrings=function(){var a=[];if(this.url){a.push(this.url)}if(this.requestInfo&&this.requestInfo.postData){a.push(this.requestInfo.postData)}return a};Spry.Data.HTTPSourceDataSet.prototype.attemptLoadData=function(){for(var a=0;a<this.dataSetsForDataRefStrings.length;a++){var b=this.dataSetsForDataRefStrings[a];if(b.getLoadDataRequestIsPending()||!b.getDataWasLoaded()){return}}this.loadData()};Spry.Data.HTTPSourceDataSet.prototype.onCurrentRowChanged=function(b,a){this.attemptLoadData()};Spry.Data.HTTPSourceDataSet.prototype.onPostSort=function(b,a){this.attemptLoadData()};Spry.Data.HTTPSourceDataSet.prototype.onDataChanged=function(b,a){this.attemptLoadData()};Spry.Data.HTTPSourceDataSet.prototype.loadData=function(){if(!this.url){return}this.cancelLoadData();var c=this.url;var a=this.requestInfo.postData;if(this.hasDataRefStrings){var b=true;for(var d=0;d<this.dataSetsForDataRefStrings.length;d++){var f=this.dataSetsForDataRefStrings[d];if(f.getLoadDataRequestIsPending()){b=false}else{if(!f.getDataWasLoaded()){f.loadData();b=false}}}if(!b){return}c=Spry.Data.Region.processDataRefString(null,this.url,this.dataSetsForDataRefStrings);if(!c){return}if(a&&(typeof a)=="string"){a=Spry.Data.Region.processDataRefString(null,a,this.dataSetsForDataRefStrings)}}this.notifyObservers("onPreLoad");this.data=null;this.dataWasLoaded=false;this.unfilteredData=null;this.dataHash=null;this.curRowID=0;var e=this.requestInfo.clone();e.url=c;e.postData=a;this.pendingRequest=new Object;this.pendingRequest.data=Spry.Data.HTTPSourceDataSet.LoadManager.loadData(e,this,this.useCache)};Spry.Data.HTTPSourceDataSet.prototype.cancelLoadData=function(){if(this.pendingRequest){Spry.Data.HTTPSourceDataSet.LoadManager.cancelLoadData(this.pendingRequest.data,this);this.pendingRequest=null}};Spry.Data.HTTPSourceDataSet.prototype.getURL=function(){return this.url};Spry.Data.HTTPSourceDataSet.prototype.setURL=function(b,a){if(this.url==b){if(!a||(this.requestInfo.method==a.method&&(a.method!="POST"||this.requestInfo.postData==a.postData))){return}}this.url=b;this.setRequestInfo(a);this.cancelLoadData();this.recalculateDataSetDependencies();this.dataWasLoaded=false};Spry.Data.HTTPSourceDataSet.prototype.setDataFromDoc=function(a){this.pendingRequest=null;this.loadDataIntoDataSet(a);this.applyColumnTypes();this.disableNotifications();this.filterAndSortData();this.enableNotifications();this.notifyObservers("onPostLoad");this.notifyObservers("onDataChanged")};Spry.Data.HTTPSourceDataSet.prototype.loadDataIntoDataSet=function(a){this.dataHash=new Object;this.data=new Array;this.dataWasLoaded=true};Spry.Data.HTTPSourceDataSet.prototype.xhRequestProcessor=function(a){var b=a.responseText;if(a.status==200||a.status==0){return b}return null};Spry.Data.HTTPSourceDataSet.prototype.sessionExpiredChecker=function(a){if(a.xhRequest.responseText=="session expired"){return true}return false};Spry.Data.HTTPSourceDataSet.prototype.setSessionExpiredChecker=function(a){this.sessionExpiredChecker=a};Spry.Data.HTTPSourceDataSet.prototype.onRequestResponse=function(a,b){this.setDataFromDoc(a.rawData)};Spry.Data.HTTPSourceDataSet.prototype.onRequestError=function(a,b){this.notifyObservers("onLoadError",b)};Spry.Data.HTTPSourceDataSet.prototype.onRequestSessionExpired=function(a,b){this.notifyObservers("onSessionExpired",b)};Spry.Data.HTTPSourceDataSet.LoadManager={};Spry.Data.HTTPSourceDataSet.LoadManager.cache=[];Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest=function(a,b,c){Spry.Utils.Notifier.call(this);this.reqInfo=a;this.rawData=null;this.timer=null;this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.NOT_LOADED;this.xhRequestProcessor=b;this.sessionExpiredChecker=c};Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.prototype=new Spry.Utils.Notifier();Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.prototype.constructor=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest;Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.NOT_LOADED=1;Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_REQUESTED=2;Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_FAILED=3;Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL=4;Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.prototype.loadDataCallback=function(a){if(a.xhRequest.readyState!=4){return}var b=null;if(this.xhRequestProcessor){b=this.xhRequestProcessor(a.xhRequest)}if(this.sessionExpiredChecker){Spry.Utils.setOptions(a,{rawData:b},false);if(this.sessionExpiredChecker(a)){this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_FAILED;this.notifyObservers("onRequestSessionExpired",a);this.observers.length=0;return}}if(!b){this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_FAILED;this.notifyObservers("onRequestError",a);this.observers.length=0;return}this.rawData=b;this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL;this.notifyObservers("onRequestResponse",a);this.observers.length=0};Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.prototype.loadData=function(){var a=this;this.cancelLoadData();this.rawData=null;this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_REQUESTED;var b=this.reqInfo.clone();b.successCallback=function(c){a.loadDataCallback(c)};b.errorCallback=b.successCallback;this.timer=setTimeout(function(){a.timer=null;Spry.Utils.loadURL(b.method,b.url,b.async,b.successCallback,b)},0)};Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.prototype.cancelLoadData=function(){if(this.state==Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_REQUESTED){if(this.timer){this.timer.clearTimeout();this.timer=null}this.rawData=null;this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.NOT_LOADED}};Spry.Data.HTTPSourceDataSet.LoadManager.getCacheKey=function(a){return a.method+"::"+a.url+"::"+a.postData+"::"+a.username};Spry.Data.HTTPSourceDataSet.LoadManager.loadData=function(c,d,b){if(!c){return null}var a=null;var e=null;if(b){e=Spry.Data.HTTPSourceDataSet.LoadManager.getCacheKey(c);a=Spry.Data.HTTPSourceDataSet.LoadManager.cache[e]}if(a){if(a.state==Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_REQUESTED){if(d){a.addObserver(d)}return a}else{if(a.state==Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL){if(d){setTimeout(function(){d.setDataFromDoc(a.rawData)},0)}return a}}}if(!a){a=new Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest(c,(d?d.xhRequestProcessor:null),(d?d.sessionExpiredChecker:null));if(b){Spry.Data.HTTPSourceDataSet.LoadManager.cache[e]=a;a.addObserver({onRequestError:function(){Spry.Data.HTTPSourceDataSet.LoadManager.cache[e]=undefined}})}}if(d){a.addObserver(d)}a.loadData();return a};Spry.Data.HTTPSourceDataSet.LoadManager.cancelLoadData=function(a,b){if(a){if(b){a.removeObserver(b)}else{a.cancelLoadData()}}};Spry.Data.XMLDataSet=function(b,a,d){this.xpath=a;this.doc=null;this.subPaths=[];this.entityEncodeStrings=true;Spry.Data.HTTPSourceDataSet.call(this,b,d);var c=typeof this.subPaths;if(c=="string"||(c=="object"&&this.subPaths.constructor!=Array)){this.subPaths=[this.subPaths]}};Spry.Data.XMLDataSet.prototype=new Spry.Data.HTTPSourceDataSet();Spry.Data.XMLDataSet.prototype.constructor=Spry.Data.XMLDataSet;Spry.Data.XMLDataSet.prototype.getDataRefStrings=function(){var a=[];if(this.url){a.push(this.url)}if(this.xpath){a.push(this.xpath)}if(this.requestInfo&&this.requestInfo.postData){a.push(this.requestInfo.postData)}return a};Spry.Data.XMLDataSet.prototype.getDocument=function(){return this.doc};Spry.Data.XMLDataSet.prototype.getXPath=function(){return this.xpath};Spry.Data.XMLDataSet.prototype.setXPath=function(a){if(this.xpath!=a){this.xpath=a;if(this.dataWasLoaded&&this.doc){this.notifyObservers("onPreLoad");this.setDataFromDoc(this.doc)}}};Spry.Data.XMLDataSet.nodeContainsElementNode=function(a){if(a){a=a.firstChild;while(a){if(a.nodeType==1){return true}a=a.nextSibling}}return false};Spry.Data.XMLDataSet.getNodeText=function(d,c,b){var a="";if(!d){return}try{var g=d.firstChild;while(g){try{if(g.nodeType==3){a+=c?Spry.Utils.encodeEntities(g.data):g.data}else{if(g.nodeType==4){a+=b?Spry.Utils.encodeEntities(g.data):g.data}}}catch(f){Spry.Debug.reportError("Spry.Data.XMLDataSet.getNodeText() exception caught: "+f+"\n")}g=g.nextSibling}}catch(f){Spry.Debug.reportError("Spry.Data.XMLDataSet.getNodeText() exception caught: "+f+"\n")}return a};Spry.Data.XMLDataSet.createObjectForNode=function(c,h,k){if(!c){return null}var d=new Object();var f=0;var j=null;try{for(f=0;f<c.attributes.length;f++){j=c.attributes[f];if(j&&j.nodeType==2){d["@"+j.name]=j.value}}}catch(g){Spry.Debug.reportError("Spry.Data.XMLDataSet.createObjectForNode() caught exception while accessing attributes: "+g+"\n")}var b=c.firstChild;if(b&&!b.nextSibling&&b.nodeType!=1){d[c.nodeName]=Spry.Data.XMLDataSet.getNodeText(c,h,k)}while(b){if(b.nodeType==1){if(!Spry.Data.XMLDataSet.nodeContainsElementNode(b)){d[b.nodeName]=Spry.Data.XMLDataSet.getNodeText(b,h,k);try{var a=b.nodeName+"/@";for(f=0;f<b.attributes.length;f++){j=b.attributes[f];if(j&&j.nodeType==2){d[a+j.name]=j.value}}}catch(g){Spry.Debug.reportError("Spry.Data.XMLDataSet.createObjectForNode() caught exception while accessing attributes: "+g+"\n")}}}b=b.nextSibling}return d};Spry.Data.XMLDataSet.getRecordSetFromXMLDoc=function(q,p,l,m){if(!q||!p){return null}var n=new Object();n.xmlDoc=q;n.xmlPath=p;n.dataHash=new Object;n.data=new Array;n.getData=function(){return this.data};var o=new ExprContext(q);var b=xpathParse(p);var h=b.evaluate(o);var c=h.nodeSetValue();var a=true;if(c&&c.length>0){a=c[0].nodeType!=2}var f=0;var g=true;var k=false;if(typeof m=="boolean"){g=k=m}for(var d=0;d<c.length;d++){var j=null;if(l){j=new Object}else{if(a){j=Spry.Data.XMLDataSet.createObjectForNode(c[d],g,k)}else{j=new Object;j["@"+c[d].name]=c[d].value}}if(j){j.ds_RowID=f++;j.ds_XMLNode=c[d];n.dataHash[j.ds_RowID]=j;n.data.push(j)}}return n};Spry.Data.XMLDataSet.PathNode=function(a){this.path=a;this.subPaths=[];this.xpath=""};Spry.Data.XMLDataSet.PathNode.prototype.addSubPath=function(b){var a=this.findSubPath(b);if(!a){a=new Spry.Data.XMLDataSet.PathNode(b);this.subPaths.push(a)}return a};Spry.Data.XMLDataSet.PathNode.prototype.findSubPath=function(d){var a=this.subPaths.length;for(var c=0;c<a;c++){var b=this.subPaths[c];if(d==b.path){return b}}return null};Spry.Data.XMLDataSet.PathNode.prototype.consolidate=function(){var a=this.subPaths.length;if(!this.xpath&&a==1){var b=this.subPaths[0];this.path+=((b[0]!="/")?"/":"")+b.path;this.xpath=b.xpath;this.subPaths=b.subPaths;this.consolidate();return}for(var c=0;c<a;c++){this.subPaths[c].consolidate()}};Spry.Data.XMLDataSet.prototype.convertXPathsToPathTree=function(h){var e=h.length;var l=new Spry.Data.XMLDataSet.PathNode("");for(var g=0;g<e;g++){var k=h[g];var d=k.replace(/\/\//g,"/__SPRYDS__");d=d.replace(/^\//,"");var a=d.split(/\//);var b=a.length;var c=l;for(var f=0;f<b;f++){var m=a[f].replace(/__SPRYDS__/,"//");c=c.addSubPath(m)}c.xpath=k}l.consolidate();return l};Spry.Data.XMLDataSet.prototype.flattenSubPaths=function(s,n){if(!s||!n){return}var z=n.length;if(z<1){return}var G=s.data;var w={};var o=[];var a=[];for(var C=0;C<z;C++){var p=n[C];if(typeof p=="object"){p=p.path}if(!p){p=""}o[C]=Spry.Data.Region.processDataRefString(null,p,this.dataSetsForDataRefStrings);a[C]=o[C].replace(/\[.*\]/g,"")}var q;var m=G.length;var t=[];for(var C=0;C<m;C++){q=G[C];var E=[q];for(var B=0;B<z;B++){var F=Spry.Data.XMLDataSet.getRecordSetFromXMLDoc(q.ds_XMLNode,o[B],(n[B].xpath?false:true),this.entityEncodeStrings);if(F&&F.data&&F.data.length){if(typeof n[B]=="object"&&n[B].subPaths){var D=n[B].subPaths;spType=typeof D;if(spType=="string"){D=[D]}else{if(spType=="object"&&spType.constructor==Object){D=[D]}}this.flattenSubPaths(F,D)}var v=F.data;var e=v.length;var u=a[B]+"/";var d=E.length;var r=[];for(var A=0;A<d;A++){var g=E[A];for(var y=0;y<e;y++){var c=new Object;var b=v[y];for(f in g){c[f]=g[f]}for(var f in b){var h=u+f;if(u==(f+"/")||u.search(new RegExp("\\/"+f+"\\/$"))!=-1){h=a[B]}c[h]=b[f]}r.push(c)}}E=r}}t=t.concat(E)}G=t;m=G.length;for(C=0;C<m;C++){q=G[C];q.ds_RowID=C;w[q.ds_RowID]=q}s.data=G;s.dataHash=w};Spry.Data.XMLDataSet.prototype.loadDataIntoDataSet=function(e){var b=null;var a=Spry.Data.Region.processDataRefString(null,this.xpath,this.dataSetsForDataRefStrings);var f=this.subPaths;var g=false;if(this.subPaths&&this.subPaths.length>0){var k=[];var j=f.length;for(var d=0;d<j;d++){var h=Spry.Data.Region.processDataRefString(null,f[d],this.dataSetsForDataRefStrings);if(h.charAt(0)!="/"){h=a+"/"+h}k.push(h)}k.unshift(a);var c=this.convertXPathsToPathTree(k);a=c.path;f=c.subPaths;g=c.xpath?false:true}b=Spry.Data.XMLDataSet.getRecordSetFromXMLDoc(e,a,g,this.entityEncodeStrings);if(!b){Spry.Debug.reportError("Spry.Data.XMLDataSet.loadDataIntoDataSet() failed to create dataSet '"+this.name+"'for '"+this.xpath+"' - "+this.url+"\n");return}this.flattenSubPaths(b,f);this.doc=b.xmlDoc;this.data=b.data;this.dataHash=b.dataHash;this.dataWasLoaded=(this.doc!=null)};Spry.Data.XMLDataSet.prototype.xhRequestProcessor=function(b){var c=b.responseXML;var a=false;if(b.status!=200){if(b.status==0){if(b.responseText&&(!c||!c.firstChild)){a=true}}}else{if(!c){a=true}}if(a){c=Spry.Utils.stringToXMLDoc(b.responseText)}if(!c||!c.firstChild||c.firstChild.nodeName=="parsererror"){return null}return c};Spry.Data.XMLDataSet.prototype.sessionExpiredChecker=function(a){if(a.xhRequest.responseText=="session expired"){return true}else{if(a.rawData){var b=a.rawData.documentElement.firstChild;if(b&&b.nodeValue=="session expired"){return true}}}return false};Spry.Data.Region=function(d,a,j,h,m,b,f,l){this.regionNode=d;this.name=a;this.isDetailRegion=j;this.data=h;this.dataSets=m;this.hasBehaviorAttributes=l;this.tokens=null;this.currentState=null;this.states={ready:true};this.stateMap={};Spry.Utils.setOptions(this.states,b);Spry.Utils.setOptions(this.stateMap,f);for(var g=0;g<this.dataSets.length;g++){var c=this.dataSets[g];try{if(c){c.addObserver(this)}}catch(k){Spry.Debug.reportError("Failed to add '"+this.name+"' as a dataSet observer!\n")}}};Spry.Data.Region.hiddenRegionClassName="SpryHiddenRegion";Spry.Data.Region.evenRowClassName="even";Spry.Data.Region.oddRowClassName="odd";Spry.Data.Region.notifiers={};Spry.Data.Region.evalScripts=true;Spry.Data.Region.addObserver=function(b,a){var c=Spry.Data.Region.notifiers[b];if(!c){c=new Spry.Utils.Notifier();Spry.Data.Region.notifiers[b]=c}c.addObserver(a)};Spry.Data.Region.removeObserver=function(b,a){var c=Spry.Data.Region.notifiers[b];if(c){c.removeObserver(a)}};Spry.Data.Region.notifyObservers=function(b,d,c){var e=Spry.Data.Region.notifiers[d.name];if(e){var a={};if(c&&typeof c=="object"){a=c}else{a.data=c}a.region=d;a.regionID=d.name;a.regionNode=d.regionNode;e.notifyObservers(b,a)}};Spry.Data.Region.RS_Error=1;Spry.Data.Region.RS_LoadingData=2;Spry.Data.Region.RS_PreUpdate=4;Spry.Data.Region.RS_PostUpdate=8;Spry.Data.Region.prototype.getState=function(){return this.currentState};Spry.Data.Region.prototype.mapState=function(b,a){this.stateMap[b]=a};Spry.Data.Region.prototype.getMappedState=function(b){var a=this.stateMap[b];return a?a:b};Spry.Data.Region.prototype.setState=function(b,c){var a={state:b,mappedState:this.getMappedState(b)};if(!c){Spry.Data.Region.notifyObservers("onPreStateChange",this,a)}this.currentState=a.mappedState?a.mappedState:b;if(this.states[b]){var e={state:this.currentState};if(!c){Spry.Data.Region.notifyObservers("onPreUpdate",this,e)}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(!c){Spry.Data.Region.notifyObservers("onPostUpdate",this,e)}}if(!c){Spry.Data.Region.notifyObservers("onPostStateChange",this,a)}};Spry.Data.Region.prototype.getDataSets=function(){return this.dataSets};Spry.Data.Region.prototype.addDataSet=function(b){if(!b){return}if(!this.dataSets){this.dataSets=new Array}for(var a=0;a<this.dataSets.length;a++){if(this.dataSets[a]==b){return}}this.dataSets.push(b);b.addObserver(this)};Spry.Data.Region.prototype.removeDataSet=function(b){if(!b||this.dataSets){return}for(var a=0;a<this.dataSets.length;a++){if(this.dataSets[a]==b){this.dataSets.splice(a,1);b.removeObserver(this);return}}};Spry.Data.Region.prototype.onPreLoad=function(a){if(this.currentState!="loading"){this.setState("loading")}};Spry.Data.Region.prototype.onLoadError=function(a){if(this.currentState!="error"){this.setState("error")}Spry.Data.Region.notifyObservers("onError",this)};Spry.Data.Region.prototype.onSessionExpired=function(a){if(this.currentState!="expired"){this.setState("expired")}Spry.Data.Region.notifyObservers("onExpired",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(a,c,d){var b=null;try{b=c.attributes.getNamedItem("spry:selectgroup").value}catch(f){}if(!b){b="default"}Spry.Utils.addEventListener(c,"click",function(e){Spry.Utils.SelectionManager.select(b,c,d)},false);if(c.attributes.getNamedItem("spry:selected")){Spry.Utils.SelectionManager.select(b,c,d)}}};Spry.Data.Region.behaviorAttrs["spry:hover"]={attach:function(a,b,c){Spry.Utils.addEventListener(b,"mouseover",function(d){Spry.Utils.addClassName(b,c)},false);Spry.Utils.addEventListener(b,"mouseout",function(d){Spry.Utils.removeClassName(b,c)},false)}};Spry.Data.Region.setUpRowNumberForEvenOddAttr=function(d,a,e,b){if(!e){Spry.Debug.showError("The "+a+" attribute requires a CSS class name as its value!");d.attributes.removeNamedItem(a);return}var f="";var c=e.split(/\s/);if(c.length>1){f=c[0];d.setAttribute(a,c[1])}d.setAttribute(b,"{"+(f?(f+"::"):"")+"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(c,f,a,e){if(f){var d=Spry.Data.getDataSetByName(f);if(d){rowIDAttr=c.attributes.getNamedItem(a);if(rowIDAttr){var b=rowIDAttr.value;if(b){Spry.Utils.addEventListener(c,"click",function(g){d[e](b)},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(a,d,f){if(!f){return}var e=a.getDataSets()[0];var c="toggle";var h=f.split(/\s/);if(h.length>1){var b=Spry.Data.getDataSetByName(h[0]);if(b){e=b;h.shift()}if(h.length>1){var g=h[h.length-1];if(g=="ascending"||g=="descending"||g=="toggle"){c=g;h.pop()}}}if(e&&h.length>0){Spry.Utils.addEventListener(d,"click",function(j){e.sort(h,c)},false)}d.removeAttribute("spry:sort")}};Spry.Data.Region.prototype.attachBehaviors=function(){var a=this;Spry.Utils.getNodesByFunc(this.regionNode,function(g){if(!g||g.nodeType!=1){return false}try{var c=Spry.Data.Region.behaviorAttrs;for(var d in c){var b=g.attributes.getNamedItem(d);if(b){var f=c[d];if(f&&f.attach){f.attach(a,g,b.value)}}}}catch(h){}return false})};Spry.Data.Region.prototype.updateContent=function(){var a=true;var d=this.getDataSets();if(!d||d.length<1){Spry.Debug.reportError("updateContent(): Region '"+this.name+"' has no data set!\n");return}for(var b=0;b<d.length;b++){var c=d[b];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(g){var f="";var d=/<!--\s*<\/?spry:content\s*[^>]*>\s*-->/mg;var a=0;var c=0;while(g.length){var b=d.exec(g);if(!b||!b[0]){f+=g.substr(a,g.length-a);break}if(!c&&b.index!=a){f+=g.substr(a,b.index-a)}if(b[0].search(/<\//)!=-1){--c;if(c){Spry.Debug.reportError("Nested spry:content regions are not allowed!\n")}}else{++c;var e=b[0].replace(/.*\bdataref="/,"");f+=e.replace(/".*$/,"")}a=d.lastIndex}return f};Spry.Data.Region.prototype.tokenizeData=function(q){if(!q){return null}var h=new Spry.Data.Region.Token(Spry.Data.Region.Token.LIST_TOKEN,null,null,null);var f=new Array;var a=Spry.Data.Region.processContentPI(q);f.push(h);var u=/((<!--\s*){0,1}<\/{0,1}spry:[^>]+>(\s*-->){0,1})|((\{|%7[bB])[^\}\s%]+(\}|%7[dD]))/mg;var b=0;while(a.length){var l=u.exec(a);var g=null;if(!l||!l[0]){var m=a.substr(b,a.length-b);g=new Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN,null,m,m);f[f.length-1].addChild(g);break}if(l.index!=b){var m=a.substr(b,l.index-b);g=new Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN,null,m,m);f[f.length-1].addChild(g)}if(l[0].search(/^({|%7[bB])/)!=-1){var k=l[0];var e=l[0];k=k.replace(/^({|%7[bB])/,"");k=k.replace(/(}|%7[dD])$/,"");var t=null;var s=k.split(/::/);if(s.length>1){t=s[0];k=s[1]}e=e.replace(/^%7[bB]/,"{");e=e.replace(/%7[dD]$/,"}");g=new Spry.Data.Region.Token(Spry.Data.Region.Token.VALUE_TOKEN,t,k,new String(e));f[f.length-1].addChild(g)}else{if(l[0].charAt(0)=="<"){var p=l[0].replace(/^(<!--\s*){0,1}<\/?/,"");p=p.replace(/>(\s*-->){0,1}|\s.*$/,"");if(l[0].search(/<\//)!=-1){if(f[f.length-1].tokenType!=Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN){Spry.Debug.reportError("Invalid processing instruction close tag: "+p+" -- "+l[0]+"\n");return null}f.pop()}else{var j=Spry.Data.Region.PI.instructions[p];if(j){var o=null;var c="";if(l[0].search(/^.*\bselect=\"/)!=-1){c=l[0].replace(/^.*\bselect=\"/,"");c=c.replace(/".*$/,"");if(c){o=Spry.Data.getDataSetByName(c);if(!o){Spry.Debug.reportError("Failed to retrieve data set ("+c+") for "+p+"\n");c=""}}}var d=null;if(l[0].search(/^.*\btest=\"/)!=-1){d=l[0].replace(/^.*\btest=\"/,"");d=d.replace(/".*$/,"");d=Spry.Utils.decodeEntities(d)}var r=null;if(l[0].search(/^.*\bname=\"/)!=-1){r=l[0].replace(/^.*\bname=\"/,"");r=r.replace(/".*$/,"");r=Spry.Utils.decodeEntities(r)}var n=new Spry.Data.Region.Token.PIData(p,c,d,r);g=new Spry.Data.Region.Token(Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN,o,n,new String(l[0]));f[f.length-1].addChild(g);f.push(g)}else{Spry.Debug.reportError("Unsupported region processing instruction: "+l[0]+"\n");return null}}}else{Spry.Debug.reportError("Invalid region token: "+l[0]+"\n");return null}}b=u.lastIndex}return h};Spry.Data.Region.prototype.callScriptFunction=function(d,b){var a=undefined;d=d.replace(/^\s*\{?\s*function::\s*|\s*\}?\s*$/g,"");var c=Spry.Utils.getObjectByName(d);if(c){a=c(this.name,function(){return b.getValueFromDataSet.apply(b,arguments)})}return a};Spry.Data.Region.prototype.evaluateExpression=function(exprStr,processContext){var result=undefined;try{if(exprStr.search(/^\s*function::/)!=-1){result=this.callScriptFunction(exprStr,processContext)}else{result=Spry.Utils.eval(Spry.Data.Region.processDataRefString(processContext,exprStr,null,true))}}catch(e){Spry.Debug.trace("Caught exception in Spry.Data.Region.prototype.evaluateExpression() while evaluating: "+Spry.Utils.encodeEntities(exprStr)+"\n    Exception:"+e+"\n")}return result};Spry.Data.Region.prototype.processTokenChildren=function(f,e,b){var d=e.children;var a=d.length;for(var c=0;c<a;c++){this.processTokens(f,d[c],b)}};Spry.Data.Region.prototype.processTokens=function(l,d,p){var g=0;switch(d.tokenType){case Spry.Data.Region.Token.LIST_TOKEN:this.processTokenChildren(l,d,p);break;case Spry.Data.Region.Token.STRING_TOKEN:l.push(d.data);break;case Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN:if(d.data.name=="spry:repeat"){var h=null;if(d.dataSet){h=d.dataSet}else{h=this.dataSets[0]}if(h){var f=p.getDataSetContext(h);if(!f){Spry.Debug.reportError("processTokens() failed to get a data set context!\n");break}f.pushState();var n=f.getData();var m=n.length;for(g=0;g<m;g++){f.setRowIndex(g);var o=true;if(d.data.jsExpr){o=this.evaluateExpression(d.data.jsExpr,p)}if(o){this.processTokenChildren(l,d,p)}}f.popState()}}else{if(d.data.name=="spry:if"){var o=true;if(d.data.jsExpr){o=this.evaluateExpression(d.data.jsExpr,p)}if(o){this.processTokenChildren(l,d,p)}}else{if(d.data.name=="spry:choose"){var a=null;var k=null;var o=false;var e=0;for(e=0;e<d.children.length;e++){var b=d.children[e];if(b.tokenType==Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN){if(b.data.name=="spry:when"){if(b.data.jsExpr){o=this.evaluateExpression(b.data.jsExpr,p);if(o){k=b;break}}}else{if(b.data.name=="spry:default"){a=b}}}}if(!k&&a){k=a}if(k){this.processTokenChildren(l,k,p)}}else{if(d.data.name=="spry:state"){var o=true;if(!d.data.regionState||d.data.regionState==this.currentState){this.processTokenChildren(l,d,p)}}else{Spry.Debug.reportError("processTokens(): Unknown processing instruction: "+d.data.name+"\n");return""}}}}break;case Spry.Data.Region.Token.VALUE_TOKEN:var h=d.dataSet;var c=undefined;if(h&&h=="function"){c=this.callScriptFunction(d.data,p)}else{if(!h&&this.dataSets&&this.dataSets.length>0&&this.dataSets[0]){h=this.dataSets[0]}if(!h){Spry.Debug.reportError("processTokens(): Value reference has no data set specified: "+d.regionStr+"\n");return""}c=p.getValueFromDataSet(h,d.data)}if(typeof c!="undefined"){l.push(c+"")}break;default:Spry.Debug.reportError("processTokens(): Invalid token type: "+d.regionStr+"\n");break}};Spry.Data.Region.prototype.transform=function(){if(this.data&&!this.tokens){this.tokens=this.tokenizeData(this.data)}if(!this.tokens){return""}processContext=new Spry.Data.Region.ProcessingContext(this);if(!processContext){return""}var a=[""];this.processTokens(a,this.tokens,processContext);return a.join("")};Spry.Data.Region.PI={};Spry.Data.Region.PI.instructions={};Spry.Data.Region.PI.buildOpenTagForValueAttr=function(c,a,b){if(!c||!a){return""}var g="";try{var f=c.attributes.getNamedItem(a);if(f&&f.value){g=Spry.Utils.encodeEntities(f.value)}}catch(d){g=""}if(!g){Spry.Debug.reportError(a+" attribute requires a JavaScript expression that returns true or false!\n");return""}return"<"+Spry.Data.Region.PI.instructions[a].tagName+" "+b+'="'+g+'">'};Spry.Data.Region.PI.buildOpenTagForTest=function(b,a){return Spry.Data.Region.PI.buildOpenTagForValueAttr(b,a,"test")};Spry.Data.Region.PI.buildOpenTagForState=function(b,a){return Spry.Data.Region.PI.buildOpenTagForValueAttr(b,a,"name")};Spry.Data.Region.PI.buildOpenTagForRepeat=function(d,b){if(!d||!b){return""}var a="";try{var h=d.attributes.getNamedItem(b);if(h&&h.value){a=h.value;a=a.replace(/\s/g,"")}}catch(g){a=""}if(!a){Spry.Debug.reportError(b+" attribute requires a data set name!\n");return""}var c="";try{var f=d.attributes.getNamedItem("spry:test");if(f){if(f.value){c=' test="'+Spry.Utils.encodeEntities(f.value)+'"'}d.attributes.removeNamedItem(f.nodeName)}}catch(g){c=""}return"<"+Spry.Data.Region.PI.instructions[b].tagName+' select="'+a+'"'+c+">"};Spry.Data.Region.PI.buildOpenTagForContent=function(c,a){if(!c||!a){return""}var f="";try{var b=c.attributes.getNamedItem(a);if(b&&b.value){f=Spry.Utils.encodeEntities(b.value)}}catch(d){f=""}if(!f){Spry.Debug.reportError(a+" attribute requires a data reference!\n");return""}return"<"+Spry.Data.Region.PI.instructions[a].tagName+' dataref="'+f+'">'};Spry.Data.Region.PI.buildOpenTag=function(b,a){return"<"+Spry.Data.Region.PI.instructions[a].tagName+">"};Spry.Data.Region.PI.buildCloseTag=function(b,a){return"</"+Spry.Data.Region.PI.instructions[a].tagName+">"};Spry.Data.Region.PI.instructions["spry:state"]={tagName:"spry:state",childrenOnly:false,getOpenTag:Spry.Data.Region.PI.buildOpenTagForState,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:if"]={tagName:"spry:if",childrenOnly:false,getOpenTag:Spry.Data.Region.PI.buildOpenTagForTest,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:repeat"]={tagName:"spry:repeat",childrenOnly:false,getOpenTag:Spry.Data.Region.PI.buildOpenTagForRepeat,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:repeatchildren"]={tagName:"spry:repeat",childrenOnly:true,getOpenTag:Spry.Data.Region.PI.buildOpenTagForRepeat,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:choose"]={tagName:"spry:choose",childrenOnly:true,getOpenTag:Spry.Data.Region.PI.buildOpenTag,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:when"]={tagName:"spry:when",childrenOnly:false,getOpenTag:Spry.Data.Region.PI.buildOpenTagForTest,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:default"]={tagName:"spry:default",childrenOnly:false,getOpenTag:Spry.Data.Region.PI.buildOpenTag,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:content"]={tagName:"spry:content",childrenOnly:true,getOpenTag:Spry.Data.Region.PI.buildOpenTagForContent,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.orderedInstructions=["spry:state","spry:if","spry:repeat","spry:repeatchildren","spry:choose","spry:when","spry:default","spry:content"];Spry.Data.Region.getTokensFromStr=function(a){if(!a){return null}return a.match(/{[^}]+}/g)};Spry.Data.Region.processDataRefString=function(k,l,g,a){if(!l){return""}if(!k&&!g){return l}var h="";var n=new RegExp("\\{([^\\}:]+::)?[^\\}]+\\}","g");var j=0;while(j<l.length){var f=n.exec(l);if(!f||!f[0]){h+=l.substr(j,l.length-j);return h}if(f.index!=j){h+=l.substr(j,f.index-j)}var b="";if(f[0].search(/^\{[^}:]+::/)!=-1){b=f[0].replace(/^\{|::.*/g,"")}var m=f[0].replace(/^\{|.*::|\}/g,"");var o=null;var e="";if(k){e=k.getValueFromDataSet(b,m)}else{var d=b?g[b]:g[0];if(d){e=d.getValue(m)}}if(typeof e!="undefined"){e+="";h+=a?Spry.Utils.escapeQuotesAndLineBreaks(e):e}if(j==n.lastIndex){var c=f.index+f[0].length;if(c<l.length){h+=l.substr(c)}break}j=n.lastIndex}return h};Spry.Data.Region.strToDataSetsArray=function(j,f){var h=new Array;var b={};if(!j){return h}j=j.replace(/\s+/g," ");j=j.replace(/^\s|\s$/g,"");var a=j.split(/ /);for(var d=0;d<a.length;d++){if(a[d]&&!Spry.Data.Region.PI.instructions[a[d]]){try{var c=Spry.Data.getDataSetByName(a[d]);if(!b[a[d]]){if(f){h.push(a[d])}else{h.push(c)}b[a[d]]=true}}catch(g){}}}return h};Spry.Data.Region.DSContext=function(c,f){var d=c;var a=f;var g=[{rowIndex:-1}];var b=null;var e=[];var h=function(){return g[g.length-1].rowIndex};this.resetAll=function(){g=[{rowIndex:d.getCurrentRow()}]};this.getDataSet=function(){return d};this.getNumRows=function(j){var k=this.getCurrentState().data;return k?k.length:d.getRowCount(j)};this.getData=function(){var j=this.getCurrentState().data;return j?j:d.getData()};this.setData=function(j){this.getCurrentState().data=j};this.getValue=function(n,k){var j="";var m=this.getCurrentState();var l=m.nestedDS?m.nestedDS:this.getDataSet();if(l){j=l.getValue(n,k)}return j};this.getCurrentRow=function(){if(g.length<2||h()<0){return d.getCurrentRow()}var k=this.getData();var j=h();if(j<0||j>k.length){Spry.Debug.reportError("Invalid index used in Spry.Data.Region.DSContext.getCurrentRow()!\n");return null}return k[j]};this.getRowIndex=function(){var j=h();if(j>=0){return j}return d.getRowNumber(d.getCurrentRow())};this.setRowIndex=function(m){this.getCurrentState().rowIndex=m;var k=this.getData();var l=e.length;for(var j=0;j<l;j++){e[j].syncDataWithParentRow(this,m,k)}};this.syncDataWithParentRow=function(m,p,j){var o=j[p];if(o){nestedDS=d.getNestedDataSetForParentRow(o);if(nestedDS){var l=this.getCurrentState();l.nestedDS=nestedDS;l.data=nestedDS.getData();l.rowIndex=nestedDS.getCurrentRowNumber();l.rowIndex=l.rowIndex<0?0:l.rowIndex;var n=e.length;for(var k=0;k<n;k++){e[k].syncDataWithParentRow(this,l.rowIndex,l.data)}}}};this.pushState=function(){var m=this.getCurrentState();var l=new Object;l.rowIndex=m.rowIndex;l.data=m.data;l.nestedDS=m.nestedDS;g.push(l);var k=e.length;for(var j=0;j<k;j++){e[j].pushState()}};this.popState=function(){if(g.length<2){Spry.Debug.reportError("Stack underflow in Spry.Data.Region.DSContext.popState()!\n");return}var k=e.length;for(var j=0;j<k;j++){e[j].popState()}g.pop()};this.getCurrentState=function(){return g[g.length-1]};this.addChild=function(l){var k=e.length;for(var j=0;j<k;j++){if(e[j]==l){return}}e.push(l)}};Spry.Data.Region.ProcessingContext=function(f){this.region=f;this.dataSetContexts=[];if(f&&f.dataSets){var g=f.dataSets.slice(0);var e=g.length;for(var d=0;d<e;d++){var b=f.dataSets[d];while(b&&b.getParentDataSet){var k=false;b=b.getParentDataSet();if(b&&this.indexOf(g,b)==-1){g.push(b)}}}for(d=0;d<g.length;d++){this.dataSetContexts.push(new Spry.Data.Region.DSContext(g[d],this))}var l=this.dataSetContexts;var h=l.length;for(d=0;d<h;d++){var c=l[d];var b=c.getDataSet();if(b.getParentDataSet){var j=b.getParentDataSet();if(j){var a=this.getDataSetContext(j);if(a){a.addChild(c)}}}}}};Spry.Data.Region.ProcessingContext.prototype.indexOf=function(a,d){if(a){var b=a.length;for(var c=0;c<b;c++){if(a[c]==d){return c}}}return -1};Spry.Data.Region.ProcessingContext.prototype.getDataSetContext=function(b){if(!b){if(this.dataSetContexts.length>0){return this.dataSetContexts[0]}return null}if(typeof b=="string"){b=Spry.Data.getDataSetByName(b);if(!b){return null}}for(var a=0;a<this.dataSetContexts.length;a++){var c=this.dataSetContexts[a];if(c.getDataSet()==b){return c}}return null};Spry.Data.Region.ProcessingContext.prototype.getValueFromDataSet=function(){var e="";var d="";if(arguments.length>1){e=arguments[0];d=arguments[1]}else{var c=arguments[0].replace(/\s*{\s*|\s*}\s*/g,"");if(c.search("::")!=-1){e=c.replace(/::.*/,"");d=c.replace(/.*::/,"")}else{d=c}}var b="";var a=this.getDataSetContext(e);if(a){b=a.getValue(d,a.getCurrentRow())}else{Spry.Debug.reportError("getValueFromDataSet: Failed to get "+e+" context for the "+this.region.regionNode.id+" region.\n")}return b};Spry.Data.Region.ProcessingContext.prototype.$v=Spry.Data.Region.ProcessingContext.prototype.getValueFromDataSet;Spry.Data.Region.ProcessingContext.prototype.getCurrentRowForDataSet=function(a){var b=this.getDataSetContext(a);if(b){return b.getCurrentRow()}return null};Spry.Data.Region.Token=function(e,b,d,c){var a=this;this.tokenType=e;this.dataSet=b;this.data=d;this.regionStr=c;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(b,c,d,e){var a=this;this.name=b;this.data=c;this.jsExpr=d;this.regionState=e};Spry.Utils.addLoadListener(function(){setTimeout(function(){if(Spry.Data.initRegionsOnLoad){Spry.Data.initRegions()}},0)});var currencies=new Spry.Data.XMLDataSet("currencies.php","currencies/currency");var RoomRates=new Spry.Data.XMLDataSet("room-rates.xml","rooms/room",{subPaths:"rates"});var RoomRatesSR=new Spry.Data.XMLDataSet("room-rates.xml","rooms/room[description='Standard']",{subPaths:"rates"});var RoomRatesSU=new Spry.Data.XMLDataSet("room-rates.xml","rooms/room[description='Superior']",{subPaths:"rates"});var RoomRatesDR=new Spry.Data.XMLDataSet("room-rates.xml","rooms/room[description='Deluxe']",{subPaths:"rates"});var RoomRatesFR=new Spry.Data.XMLDataSet("room-rates.xml","rooms/room[description='Family']",{subPaths:"rates"});var RoomRatesPS=new Spry.Data.XMLDataSet("room-rates.xml","rooms/room[description='Premier-Suite']",{subPaths:"rates"});function FormattedPrice(b,a){return"$"+parseInt(a("{rate}")).toFixed(2)}function FXrate2(c,b){var a=b("{description}");switch(a){case"Standard":a=(b("{RoomRatesSR::rates/rate2}")/b("{currencies::rate}"));break;case"Superior":a=(b("{RoomRatesSU::rates/rate2}")/b("{currencies::rate}"));break;case"Deluxe":a=(b("{RoomRatesDR::rates/rate2}")/b("{currencies::rate}"));break;case"Family":a=(b("{RoomRatesFR::rates/rate2}")/b("{currencies::rate}"));break;case"Premier-Suite":a=(b("{RoomRatesPS::rates/rate2}")/b("{currencies::rate}"));break;default:a=(b("{RoomRatesSR::rates/rate2}")/b("{currencies::rate}"))}a=addCommas(a);return a}function addCommas(b){b=b.toFixed(0);b+="";x=b.split(".");x1=x[0];x2=x.length>1?"."+x[1]:"";var a=/(\d+)(\d{3})/;while(a.test(x1)){x1=x1.replace(a,"$1,$2")}return x1+x2}var daysinAdvance=1;var numberNights=5;var numberYears=2;var numberNightsMin=1;var wdDisplay=1;var numberNightsDisplay=0;var departDateDisplay=1;var departDateUpdate=1;var wdArray=new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");var nightTxt=" Night";var nightsTxt=" Nights";var invalidDateTxt="Invalid Arrival Date. Please check number of days selected";var invalidDatePriorTxt="Arrival Date selected is prior Today's date. Please change...";var invalidDepartDateTxt="Invalid Departure Date. Please check number of days selected";var invalidDepartTxt="Departure Date is prior to Arrival Date selected. Please change...";var invalidNightsTxt="Sorry, reservations under "+numberNightsMin+" nights are not accepted.";var aNumDays=new Array(31,0,31,30,31,30,31,31,30,31,30,31);if(departDateDisplay==0){numberNightsDisplay=0;departDateUpdate=0}function calendarCallback(a,e,c,d,b){if(d=="calendarArrive"){document.forms[b].fd.selectedIndex=a-1;document.forms[b].fm.selectedIndex=e-1;document.forms[b].fy.selectedIndex=c-document.forms[b].fy.options[0].text;updateDates(document.forms[b]);if(wdDisplay==1){setWkd(b,1)}}else{document.forms[b].td.selectedIndex=a-1;document.forms[b].tm.selectedIndex=e-1;document.forms[b].ty.selectedIndex=c-document.forms[b].ty.options[0].text;if(wdDisplay==1){setWkd(b,1)}}}function updateDates(c,j){if(c.fm.selectedIndex==1){var g=new Date(c.fy.options[c.fy.selectedIndex].text,c.fm.selectedIndex+1,1);var g=new Date(g-(24*60*60*1000));var e=g.getDate()}else{var e=aNumDays[c.fm.selectedIndex]}if(j==1||departDateUpdate==1){var f=new Date(c.fy.options[c.fy.selectedIndex].text,c.fm.selectedIndex,c.fd.selectedIndex);var h=new Date(f.getTime()+((numberNights+1)*86400000));var l=h.getDate();var a=h.getMonth();var d=h.getFullYear()-c.fy.options[0].text;var k=new Date(c.fy.options[c.fy.selectedIndex].text,c.fm.selectedIndex,c.fd.selectedIndex+1);var b=new Date(c.ty.options[c.ty.selectedIndex].text,c.tm.selectedIndex,c.td.selectedIndex+1);if(k>b){if(d==c.ty.length){c.td.options[30].selected=1;c.tm.options[11].selected=1;c.ty.options[c.ty.length-1].selected=1}else{c.td.options[l-1].selected=1;c.tm.options[a].selected=1;c.ty.options[d].selected=1}}}if(c.fd.selectedIndex+1>e){alert(invalidDateTxt);c.fd.selectedIndex=e-1}}function setWkd(f,h){if(h){f=document.forms[f]}for(var d=0;d<f.fy.length;d++){if(f.fy.options[d].selected){var c=f.fy.options[d].text}if(departDateDisplay==1&&f.ty.options[d].selected){var g=f.ty.options[d].text}}var b=new Date(c,f.fm.selectedIndex,f.fd.selectedIndex+1);if(departDateDisplay==1){var e=new Date(g,f.tm.selectedIndex,f.td.selectedIndex+1)}var a=Math.round((e-b)/86400000);if(a==1){a+=nightTxt}else{a+=nightsTxt}if(wdDisplay==1&&document.getElementById){document.getElementById("inWd").firstChild.nodeValue="("+wdArray[b.getDay()]+")";if(departDateDisplay==1){document.getElementById("outWd").firstChild.nodeValue="("+wdArray[e.getDay()]+")"}}if(numberNightsDisplay==1&&document.getElementById){document.getElementById("lengthStay").firstChild.nodeValue=a}}function LoadDates(c){var b=new Date();var d=new Date(b.getTime()+(daysinAdvance*86400000));var a=d.getDate();var f=d.getMonth();var e=d.getFullYear()-c.fy.options[0].text;c.fd.selectedIndex=a-1;c.fm.selectedIndex=f;c.fy.selectedIndex=e;updateDates(c,departDateDisplay);if(wdDisplay==1||numberNightsDisplay==1){setWkd(c)}}function checkDates(b){var d=new Date();for(var f=0;f<b.fy.length;f++){if(b.fy.options[f].selected){var h=b.fy.options[f].text}if(departDateDisplay==1&&b.ty.options[f].selected){var g=b.ty.options[f].text}}var k=new Date(h,b.fm.selectedIndex,b.fd.selectedIndex+2);if(departDateDisplay==1){if(b.tm.selectedIndex==1){var e=new Date(b.ty.options[b.ty.selectedIndex].text,b.tm.selectedIndex+1,1);var e=new Date(e-(24*60*60*1000));var c=e.getDate()}else{var c=aNumDays[b.tm.selectedIndex]}if(b.td.selectedIndex+1>c){alert(invalidDepartDateTxt);b.td.selectedIndex=c-1;return false}var a=new Date(g,b.tm.selectedIndex,b.td.selectedIndex+2);var j=Math.round((a-k)/86400000)}else{var j=b.numnights.selectedIndex+1}if(k.getTime()<d.getTime()){alert(invalidDatePriorTxt);return false}if(j<1){alert(invalidDepartTxt);return false}if(j<numberNightsMin){alert(invalidNightsTxt);return false}pageTracker._trackPageview("GlobeKeyClick.com")}function year_option(a){curDate=new Date();curYear=curDate.getFullYear();for(i=curYear;i<=curYear+(numberYears-1);i++){document.write('<option value="'+i+'">'+i+"</option>")}}var snifferLoaded=1;var agt=navigator.userAgent.toLowerCase();var is_major=parseInt(navigator.appVersion);var is_minor=parseFloat(navigator.appVersion);var is_nav=((agt.indexOf("mozilla")!=-1)&&(agt.indexOf("spoofer")==-1)&&(agt.indexOf("compatible")==-1)&&(agt.indexOf("opera")==-1)&&(agt.indexOf("webtv")==-1)&&(agt.indexOf("hotjava")==-1));var is_nav2=(is_nav&&(is_major==2));var is_nav3=(is_nav&&(is_major==3));var is_nav4=(is_nav&&(is_major==4));var is_nav4up=(is_nav&&(is_major>=4));var is_navonly=(is_nav&&((agt.indexOf(";nav")!=-1)||(agt.indexOf("; nav")!=-1)));var is_nav6=(is_nav&&(is_major==5));var is_nav6up=(is_nav&&(is_major>=5));var is_gecko=(agt.indexOf("gecko")!=-1);var is_ie=((agt.indexOf("msie")!=-1)&&(agt.indexOf("opera")==-1));var is_ie3=(is_ie&&(is_major<4));var is_ie4=(is_ie&&(is_major==4)&&(agt.indexOf("msie 4")!=-1));var is_ie4up=(is_ie&&(is_major>=4));var is_ie5=(is_ie&&(is_major==4)&&(agt.indexOf("msie 5.0")!=-1));var is_ie5_5=(is_ie&&(is_major==4)&&(agt.indexOf("msie 5.5")!=-1));var is_ie5up=(is_ie&&!is_ie3&&!is_ie4);var is_ie5_5up=(is_ie&&!is_ie3&&!is_ie4&&!is_ie5);var is_ie6=(is_ie&&(is_major==4)&&(agt.indexOf("msie 6.")!=-1));var is_ie6up=(is_ie&&!is_ie3&&!is_ie4&&!is_ie5&&!is_ie5_5);var is_aol=(agt.indexOf("aol")!=-1);var is_aol3=(is_aol&&is_ie3);var is_aol4=(is_aol&&is_ie4);var is_aol5=(agt.indexOf("aol 5")!=-1);var is_aol6=(agt.indexOf("aol 6")!=-1);var is_opera=(agt.indexOf("opera")!=-1);var is_opera2=(agt.indexOf("opera 2")!=-1||agt.indexOf("opera/2")!=-1);var is_opera3=(agt.indexOf("opera 3")!=-1||agt.indexOf("opera/3")!=-1);var is_opera4=(agt.indexOf("opera 4")!=-1||agt.indexOf("opera/4")!=-1);var is_opera5=(agt.indexOf("opera 5")!=-1||agt.indexOf("opera/5")!=-1);var is_opera5up=(is_opera&&!is_opera2&&!is_opera3&&!is_opera4);var is_webtv=(agt.indexOf("webtv")!=-1);var is_TVNavigator=((agt.indexOf("navio")!=-1)||(agt.indexOf("navio_aoltv")!=-1));var is_AOLTV=is_TVNavigator;var is_hotjava=(agt.indexOf("hotjava")!=-1);var is_hotjava3=(is_hotjava&&(is_major==3));var is_hotjava3up=(is_hotjava&&(is_major>=3));var is_js;if(is_nav2||is_ie3){is_js=1}else{if(is_nav3){is_js=1.1}else{if(is_opera5up){is_js=1.3}else{if(is_opera){is_js=1.1}else{if((is_nav4&&(is_minor<=4.05))||is_ie4){is_js=1.2}else{if((is_nav4&&(is_minor>4.05))||is_ie5){is_js=1.3}else{if(is_hotjava3up){is_js=1.4}else{if(is_nav6||is_gecko){is_js=1.5}else{if(is_nav6up){is_js=1.5}else{if(is_ie5up){is_js=1.3}else{is_js=0}}}}}}}}}}var is_win=((agt.indexOf("win")!=-1)||(agt.indexOf("16bit")!=-1));var is_win95=((agt.indexOf("win95")!=-1)||(agt.indexOf("windows 95")!=-1));var is_win16=((agt.indexOf("win16")!=-1)||(agt.indexOf("16bit")!=-1)||(agt.indexOf("windows 3.1")!=-1)||(agt.indexOf("windows 16-bit")!=-1));var is_win31=((agt.indexOf("windows 3.1")!=-1)||(agt.indexOf("win16")!=-1)||(agt.indexOf("windows 16-bit")!=-1));var is_winme=((agt.indexOf("win 9x 4.90")!=-1));var is_win2k=((agt.indexOf("windows nt 5.0")!=-1));var is_win98=((agt.indexOf("win98")!=-1)||(agt.indexOf("windows 98")!=-1));var is_winnt=((agt.indexOf("winnt")!=-1)||(agt.indexOf("windows nt")!=-1));var is_win32=(is_win95||is_winnt||is_win98||((is_major>=4)&&(navigator.platform=="Win32"))||(agt.indexOf("win32")!=-1)||(agt.indexOf("32bit")!=-1));var is_os2=((agt.indexOf("os/2")!=-1)||(navigator.appVersion.indexOf("OS/2")!=-1)||(agt.indexOf("ibm-webexplorer")!=-1));var is_mac=(agt.indexOf("mac")!=-1);if(is_mac&&is_ie5up){is_js=1.4}var is_mac68k=(is_mac&&((agt.indexOf("68k")!=-1)||(agt.indexOf("68000")!=-1)));var is_macppc=(is_mac&&((agt.indexOf("ppc")!=-1)||(agt.indexOf("powerpc")!=-1)));var is_sun=(agt.indexOf("sunos")!=-1);var is_sun4=(agt.indexOf("sunos 4")!=-1);var is_sun5=(agt.indexOf("sunos 5")!=-1);var is_suni86=(is_sun&&(agt.indexOf("i86")!=-1));var is_irix=(agt.indexOf("irix")!=-1);var is_irix5=(agt.indexOf("irix 5")!=-1);var is_irix6=((agt.indexOf("irix 6")!=-1)||(agt.indexOf("irix6")!=-1));var is_hpux=(agt.indexOf("hp-ux")!=-1);var is_hpux9=(is_hpux&&(agt.indexOf("09.")!=-1));var is_hpux10=(is_hpux&&(agt.indexOf("10.")!=-1));var is_aix=(agt.indexOf("aix")!=-1);var is_aix1=(agt.indexOf("aix 1")!=-1);var is_aix2=(agt.indexOf("aix 2")!=-1);var is_aix3=(agt.indexOf("aix 3")!=-1);var is_aix4=(agt.indexOf("aix 4")!=-1);var is_linux=(agt.indexOf("inux")!=-1);var is_sco=(agt.indexOf("sco")!=-1)||(agt.indexOf("unix_sv")!=-1);var is_unixware=(agt.indexOf("unix_system_v")!=-1);var is_mpras=(agt.indexOf("ncr")!=-1);var is_reliant=(agt.indexOf("reliantunix")!=-1);var is_dec=((agt.indexOf("dec")!=-1)||(agt.indexOf("osf1")!=-1)||(agt.indexOf("dec_alpha")!=-1)||(agt.indexOf("alphaserver")!=-1)||(agt.indexOf("ultrix")!=-1)||(agt.indexOf("alphastation")!=-1));var is_sinix=(agt.indexOf("sinix")!=-1);var is_freebsd=(agt.indexOf("freebsd")!=-1);var is_bsd=(agt.indexOf("bsd")!=-1);var is_unix=((agt.indexOf("x11")!=-1)||is_sun||is_irix||is_hpux||is_sco||is_unixware||is_mpras||is_reliant||is_dec||is_sinix||is_aix||is_linux||is_bsd||is_freebsd);var is_vms=((agt.indexOf("vax")!=-1)||(agt.indexOf("openvms")!=-1));dynCalendar_layers=new Array();dynCalendar_mouseoverStatus=0;dynCalendar_mouseX=0;dynCalendar_mouseY=0;var snifferLoaded;function dynCalendar(d,a,c,b,e){this.today=new Date();this.date=this.today.getDate();this.month=this.today.getMonth();this.year=this.today.getFullYear();this.objName=d;this.formName=b;this.callbackFunc=a;this.imagesPath=e;this.layerID="dynCalendar_layer_"+dynCalendar_layers.length;this.offsetX=5;this.offsetY=5;this.useMonthCombo=1;this.useYearCombo=1;this.yearComboRange=c-1;this.currentMonth=this.month;this.currentYear=this.year;this.show=dynCalendar_show;this.writeHTML=dynCalendar_writeHTML;this.setOffset=dynCalendar_setOffset;this.setOffsetX=dynCalendar_setOffsetX;this.setOffsetY=dynCalendar_setOffsetY;this.setImagesPath=dynCalendar_setImagesPath;this.setMonthCombo=dynCalendar_setMonthCombo;this.setYearCombo=dynCalendar_setYearCombo;this.setCurrentMonth=dynCalendar_setCurrentMonth;this.setCurrentYear=dynCalendar_setCurrentYear;this.setYearComboRange=dynCalendar_setYearComboRange;this._getLayer=dynCalendar_getLayer;this._hideLayer=dynCalendar_hideLayer;this._showLayer=dynCalendar_showLayer;this._setLayerPosition=dynCalendar_setLayerPosition;this._setHTML=dynCalendar_setHTML;this._getDaysInMonth=dynCalendar_getDaysInMonth;this._mouseover=dynCalendar_mouseover;dynCalendar_layers[dynCalendar_layers.length]=this;if(snifferLoaded){this.writeHTML()}}function dynCalendar_show(){var w,o;var f,u,h,r;var A,k,s,l,y,v,m;var a,z,q,c,b,e;var g,t,j,p,d,n;if(this.objName=="calendarArrive"){this.currentDay=document.forms[this.formName].fd.selectedIndex;this.currentMonth=document.forms[this.formName].fm.selectedIndex;this.currentYear=document.forms[this.formName].fy.options[document.forms[this.formName].fy.selectedIndex].text}else{if(this.objName=="calendarDepart"){this.currentDay=document.forms[this.formName].td.selectedIndex;this.currentMonth=document.forms[this.formName].tm.selectedIndex;this.currentYear=document.forms[this.formName].ty.options[document.forms[this.formName].ty.selectedIndex].text}}this.currentMonth=w=arguments[0]!=null?arguments[0]:this.currentMonth;this.currentYear=o=arguments[1]!=null?arguments[1]:this.currentYear;f=new Array("January","February","March","April","May","June","July","August","September","October","November","December");u=this._getDaysInMonth(w,o);h=new Date(o,w,1);r=h.getDay();A=new Array(new Array());for(s=0;s<r;s++){A[0][A[0].length]="<td>&nbsp;</td>"}k=0;s=1;while(s<=u){if(A[k].length==7){A[++k]=new Array()}l=(s==this.date&&w==this.month&&o==this.year)?"dynCalendar_today":"dynCalendar_day";if(new Date(o,w,s+1)<this.today){y=s++}else{if(s==this.currentDay+1){y='<a class="dynlinks" href="javascript: '+this.callbackFunc+"("+s+", "+(Number(w)+1)+", "+o+", '"+this.objName+"', '"+this.formName+"'); "+this.objName+'._hideLayer()" onMouseOver="window.status=\''+s+" "+f[Number(w)]+" "+o+"'; return true\" onMouseOut=\"window.status=''; return true\"><font color=red>"+(s++)+"</font></a>"}else{y='<a class="dynlinks" href="javascript: '+this.callbackFunc+"("+s+", "+(Number(w)+1)+", "+o+", '"+this.objName+"', '"+this.formName+"'); "+this.objName+'._hideLayer()" onMouseOver="window.status=\''+s+" "+f[Number(w)]+" "+o+"'; return true\" onMouseOut=\"window.status=''; return true\">"+(s++)+"</a>"}}A[k][A[k].length]='<td align="center" class="'+l+'">'+y+"</td>"}for(s=0;s<A.length;s++){A[s]=A[s].join("\n")+"\n"}m=h.getFullYear();v=h.getMonth()-1;if(v<0){v=11;m--}z=h.getFullYear();a=h.getMonth()+1;if(a>11){a=0;z++}if(h>new Date(this.year,this.month,1)){q='<img src="'+this.imagesPath+'/prev.gif" alt="'+f[v]+" "+m+'" border="0" />'}else{q=""}if(m>=this.year){c='<a href="javascript: '+this.objName+".show("+v+", "+m+')" onMouseOver="window.status=\'Previous Month\'; return true" onMouseOut="window.status=\'\'; return true">'+q+"</a>"}else{c=""}b='<img src="'+this.imagesPath+'/next.gif" alt="'+f[a]+" "+z+'" border="0" />';if(z<=(this.year+this.yearComboRange)){e='<a href="javascript: '+this.objName+".show("+a+", "+z+')" onMouseOver="window.status=\'Next Month\'; return true" onMouseOut="window.status=\'\'; return true">'+b+"</a>"}else{e=""}if(this.useMonthCombo){g="";for(s=0;s<12;s++){selected=(s==h.getMonth()?'selected="selected"':"");g+='<option value="'+s+'" '+selected+">"+f[s]+"</option>"}t='<select class="dynCalendar_select" name="months" onchange="'+this.objName+".show(this.options[this.selectedIndex].value, "+this.objName+'.currentYear)">'+g+"</select>"}else{t=f[h.getMonth()]}if(this.useYearCombo){j="";for(s=curYear;s<=(curYear+this.yearComboRange);s++){selected=(s==h.getFullYear()?'selected="selected"':"");j+='<option value="'+s+'" '+selected+">"+s+"</option>"}p='<select class="dynCalendar_select" style="border: 1px groove" name="years" onchange="'+this.objName+".show("+this.objName+'.currentMonth, this.options[this.selectedIndex].value)">'+j+"</select>"}d=h.getFullYear();n="";n+='<table border="0" bgcolor="#eeeeee" width="200" style="border-collapse: collapse">';n+='<tr><td class="dynCalendar_header">&nbsp;'+c+'</td><td colspan="5" align="center" class="dynCalendar_header" NOWRAP>'+t+" "+p+'</td><td align="right" class="dynCalendar_header">'+e+"&nbsp;</td></tr>";n+="<tr>";n+='<td class="dynCalendar_dayname" width="14%">Sun</td>';n+='<td class="dynCalendar_dayname" width="15%">Mon</td>';n+='<td class="dynCalendar_dayname" width="14%">Tue</td>';n+='<td class="dynCalendar_dayname" width="14%">Wed</td>';n+='<td class="dynCalendar_dayname" width="14%">Thu</td>';n+='<td class="dynCalendar_dayname" width="15%">Fri</td>';n+='<td class="dynCalendar_dayname" width="14%">Sat</td></tr>';n+="<tr>"+A.join("</tr>\n<tr>")+"</tr>";n+="</table>";n+='<table border="0" bgcolor="#eeeeee" width="200" style="border-collapse: collapse">';n+="<tr>";n+='<td align="center" class="dynCalendar_dayname" width="33%">';if(d-1>=this.year){n+='<a href="javascript: '+this.objName+".show("+this.month+", "+(d-1)+')" onMouseOver="window.status=\'Previous Year\'; return true" onMouseOut="window.status=\'\'; return true">';n+="<b>&lt;&lt;</b> ";n+=d-1;n+="</a>"}else{n+=d-1}n+="</td>";n+='<td width="33%" class="dynCalendar_dayname" align="center">';n+='<a class="dynlinks" href="javascript: '+this.objName+".show("+this.month+", "+this.year+')" onMouseOver="window.status=\'Current Date\'; return true" onMouseOut="window.status=\'\'; return true">';n+="Today";n+="</a>";n+="</td>";n+='<td align="center" class="dynCalendar_dayname">';if(d+1<=(this.year+this.yearComboRange)){n+='<a class="dynlinks" href="javascript: '+this.objName+".show("+this.month+", "+(d+1)+')" onMouseOver="window.status=\'Next Year\'; return true" onMouseOut="window.status=\'\'; return true">';n+=d+1;n+=" <b>&gt;&gt;</b> ";n+="</a>"}else{n+=d+1}n+="</td>";n+="</tr>";n+="</table>";this._setHTML(n);if(!arguments[0]&&!arguments[1]){this._showLayer();this._setLayerPosition()}}function dynCalendar_writeHTML(){if(is_ie5up||is_nav6up||is_gecko){document.write('<a href="javascript: '+this.objName+'.show()"><img src="'+this.imagesPath+'dynCalendar.gif" border="0" width="16" height="16" onMouseOver="window.status=\'Set Dates\'; return true" onMouseOut="window.status=\'\'; return true" /></a>');document.write('<div class="dynCalendar" id="'+this.layerID+'" onmouseover="'+this.objName+'._mouseover(true)" onmouseout="'+this.objName+'._mouseover(false)"></div>')}}function dynCalendar_setOffset(a,b){this.setOffsetX(a);this.setOffsetY(b)}function dynCalendar_setOffsetX(a){this.offsetX=a}function dynCalendar_setOffsetY(a){this.offsetY=a}function dynCalendar_setImagesPath(a){this.imagesPath=a}function dynCalendar_setMonthCombo(a){this.useMonthCombo=a}function dynCalendar_setYearCombo(a){this.useYearCombo=a}function dynCalendar_setCurrentMonth(a){this.currentMonth=a}function dynCalendar_setCurrentYear(a){this.currentYear=a}function dynCalendar_setYearComboRange(a){this.yearComboRange=a}function dynCalendar_getLayer(){var a=this.layerID;if(document.getElementById(a)){return document.getElementById(a)}else{if(document.all(a)){return document.all(a)}}}function dynCalendar_hideLayer(){this._getLayer().style.visibility="hidden"}function dynCalendar_showLayer(){this._getLayer().style.visibility="visible"}function dynCalendar_setLayerPosition(){this._getLayer().style.top=(dynCalendar_mouseY+this.offsetY)+"px";this._getLayer().style.left=(dynCalendar_mouseX+this.offsetX)+"px"}function dynCalendar_setHTML(a){this._getLayer().innerHTML=a}function dynCalendar_getDaysInMonth(b,a){monthdays=[31,28,31,30,31,30,31,31,30,31,30,31];if(b!=1){return monthdays[b]}else{return((a%4==0&&a%100!=0)||a%400==0?29:28)}}function dynCalendar_mouseover(a){dynCalendar_mouseoverStatus=a;return true}if(snifferLoaded==1){dynCalendar_oldOnmousemove=document.onmousemove?document.onmousemove:new Function;document.onmousemove=function(){if(is_ie5up||is_nav6up||is_gecko){if(arguments[0]){dynCalendar_mouseX=arguments[0].pageX;dynCalendar_mouseY=arguments[0].pageY}else{dynCalendar_mouseX=event.clientX+document.body.scrollLeft;dynCalendar_mouseY=event.clientY+document.body.scrollTop;arguments[0]=null}dynCalendar_oldOnmousemove()}};dynCalendar_oldOnclick=document.onclick?document.onclick:new Function;document.onclick=function(){if(is_ie5up||is_nav6up||is_gecko){if(!dynCalendar_mouseoverStatus){for(i=0;i<dynCalendar_layers.length;++i){dynCalendar_layers[i]._hideLayer()}}dynCalendar_oldOnclick(arguments[0]?arguments[0]:null)}}};