function xpathLog(msg){};function xsltLog(msg){};function xsltLogXml(msg){};var ajaxsltIsIE6=navigator.appVersion.match(/MSIE 6.0/);function assert(b){if(!b){throw"Assertion failed";}}
function stringSplit(s,c){var a=s.indexOf(c);if(a==-1){return[s];}
var parts=[];parts.push(s.substr(0,a));while(a!=-1){var a1=s.indexOf(c,a+1);if(a1!=-1){parts.push(s.substr(a+1,a1-a-1));}else{parts.push(s.substr(a+1));}
a=a1;}
return parts;}
function xmlImportNode(doc,node){if(node.nodeType==DOM_TEXT_NODE){return domCreateTextNode(doc,node.nodeValue);}else if(node.nodeType==DOM_CDATA_SECTION_NODE){return domCreateCDATASection(doc,node.nodeValue);}else if(node.nodeType==DOM_ELEMENT_NODE){var newNode=domCreateElement(doc,node.nodeName);for(var i=0;i<node.attributes.length;++i){var an=node.attributes[i];var name=an.nodeName;var value=an.nodeValue;domSetAttribute(newNode,name,value);}
for(var c=node.firstChild;c;c=c.nextSibling){var cn=arguments.callee(doc,c);domAppendChild(newNode,cn);}
return newNode;}else{return domCreateComment(doc,node.nodeName);}}
function Set(){this.keys=[];}
Set.prototype.size=function(){return this.keys.length;}
Set.prototype.add=function(key,opt_value){var value=opt_value||1;if(!this.contains(key)){this[':'+key]=value;this.keys.push(key);}}
Set.prototype.set=function(key,opt_value){var value=opt_value||1;if(!this.contains(key)){this[':'+key]=value;this.keys.push(key);}else{this[':'+key]=value;}}
Set.prototype.inc=function(key){if(!this.contains(key)){this[':'+key]=1;this.keys.push(key);}else{this[':'+key]++;}}
Set.prototype.get=function(key){if(this.contains(key)){return this[':'+key];}else{var undefined;return undefined;}}
Set.prototype.remove=function(key){if(this.contains(key)){delete this[':'+key];removeFromArray(this.keys,key,true);}}
Set.prototype.contains=function(entry){return typeof this[':'+entry]!='undefined';}
Set.prototype.items=function(){var list=[];for(var i=0;i<this.keys.length;++i){var k=this.keys[i];var v=this[':'+k];list.push(v);}
return list;}
Set.prototype.map=function(f){for(var i=0;i<this.keys.length;++i){var k=this.keys[i];f.call(this,k,this[':'+k]);}}
Set.prototype.clear=function(){for(var i=0;i<this.keys.length;++i){delete this[':'+this.keys[i]];}
this.keys.length=0;}
function mapExec(array,func){for(var i=0;i<array.length;++i){func.call(this,array[i],i);}}
function mapExpr(array,func){var ret=[];for(var i=0;i<array.length;++i){ret.push(func(array[i]));}
return ret;};function reverseInplace(array){for(var i=0;i<array.length/2;++i){var h=array[i];var ii=array.length-i-1;array[i]=array[ii];array[ii]=h;}}
function removeFromArray(array,value,opt_notype){var shift=0;for(var i=0;i<array.length;++i){if(array[i]===value||(opt_notype&&array[i]==value)){array.splice(i--,1);shift++;}}
return shift;}
function copyArray(dst,src){if(!src)return;var dstLength=dst.length;for(var i=src.length-1;i>=0;--i){dst[i+dstLength]=src[i];}}
function copyArrayIgnoringAttributesWithoutValue(dst,src)
{if(!src)return;for(var i=src.length-1;i>=0;--i){if(src[i].nodeValue){dst.push(src[i]);}}}
function xmlValue(node){if(!node){return'';}
var ret='';if(node.nodeType==DOM_TEXT_NODE||node.nodeType==DOM_CDATA_SECTION_NODE){ret+=node.nodeValue;}else if(node.nodeType==DOM_ATTRIBUTE_NODE){if(ajaxsltIsIE6){ret+=xmlValueIE6Hack(node);}else{ret+=node.nodeValue;}}else if(node.nodeType==DOM_ELEMENT_NODE||node.nodeType==DOM_DOCUMENT_NODE||node.nodeType==DOM_DOCUMENT_FRAGMENT_NODE){for(var i=0;i<node.childNodes.length;++i){ret+=arguments.callee(node.childNodes[i]);}}
return ret;}
function xmlValueIE6Hack(node){var nodeName=node.nodeName;var nodeValue=node.nodeValue;if(nodeName.length!=4)return nodeValue;if(!/^href$/i.test(nodeName))return nodeValue;if(!/^javascript:/.test(nodeValue))return nodeValue;return unescape(nodeValue);}
function xmlText(node,opt_cdata){var buf=[];xmlTextR(node,buf,opt_cdata);return buf.join('');}
function xmlTextR(node,buf,cdata){if(node.nodeType==DOM_TEXT_NODE){buf.push(xmlEscapeText(node.nodeValue));}else if(node.nodeType==DOM_CDATA_SECTION_NODE){if(cdata){buf.push(node.nodeValue);}else{buf.push('<![CDATA['+node.nodeValue+']]>');}}else if(node.nodeType==DOM_COMMENT_NODE){buf.push('<!--'+node.nodeValue+'-->');}else if(node.nodeType==DOM_ELEMENT_NODE){buf.push('<'+xmlFullNodeName(node));for(var i=0;i<node.attributes.length;++i){var a=node.attributes[i];if(a&&a.nodeName&&a.nodeValue){buf.push(' '+xmlFullNodeName(a)+'="'+
xmlEscapeAttr(a.nodeValue)+'"');}}
if(node.childNodes.length==0){buf.push('/>');}else{buf.push('>');for(var i=0;i<node.childNodes.length;++i){arguments.callee(node.childNodes[i],buf,cdata);}
buf.push('</'+xmlFullNodeName(node)+'>');}}else if(node.nodeType==DOM_DOCUMENT_NODE||node.nodeType==DOM_DOCUMENT_FRAGMENT_NODE){for(var i=0;i<node.childNodes.length;++i){arguments.callee(node.childNodes[i],buf,cdata);}}}
function xmlFullNodeName(n){if(n.prefix&&n.nodeName.indexOf(n.prefix+':')!=0){return n.prefix+':'+n.nodeName;}else{return n.nodeName;}}
function xmlEscapeText(s){return(''+s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');}
function xmlEscapeAttr(s){return xmlEscapeText(s).replace(/\"/g,'&quot;');}
function xmlEscapeTags(s){return s.replace(/</g,'&lt;').replace(/>/g,'&gt;');}
function xmlOwnerDocument(node){if(node.nodeType==DOM_DOCUMENT_NODE){return node;}else{return node.ownerDocument;}}
function domGetAttribute(node,name){return node.getAttribute(name);}
function domSetAttribute(node,name,value){return node.setAttribute(name,value);}
function domRemoveAttribute(node,name){return node.removeAttribute(name);}
function domAppendChild(node,child){return node.appendChild(child);}
function domRemoveChild(node,child){return node.removeChild(child);}
function domReplaceChild(node,newChild,oldChild){return node.replaceChild(newChild,oldChild);}
function domInsertBefore(node,newChild,oldChild){return node.insertBefore(newChild,oldChild);}
function domRemoveNode(node){return domRemoveChild(node.parentNode,node);}
function domCreateTextNode(doc,text){return doc.createTextNode(text);}
function domCreateElement(doc,name){return doc.createElement(name);}
function domCreateAttribute(doc,name){return doc.createAttribute(name);}
function domCreateCDATASection(doc,data){return doc.createCDATASection(data);}
function domCreateComment(doc,text){return doc.createComment(text);}
function domCreateDocumentFragment(doc){return doc.createDocumentFragment();}
function domGetElementById(doc,id){return doc.getElementById(id);}
function windowSetInterval(win,fun,time){return win.setInterval(fun,time);}
function windowClearInterval(win,id){return win.clearInterval(id);}
var REGEXP_UNICODE=function(){var tests=[' ','\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 i=0;i<tests.length;i+=3){if(tests[i].search(new RegExp(tests[i+1]))!=tests[i+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+']*';function xmlResolveEntities(s){var parts=stringSplit(s,'&');var ret=parts[0];for(var i=1;i<parts.length;++i){var rp=parts[i].indexOf(';');if(rp==-1){ret+=parts[i];continue;}
var entityName=parts[i].substring(0,rp);var remainderText=parts[i].substring(rp+1);var ch;switch(entityName){case'lt':ch='<';break;case'gt':ch='>';break;case'amp':ch='&';break;case'quot':ch='"';break;case'apos':ch='\'';break;case'nbsp':ch=String.fromCharCode(160);break;default:var span=domCreateElement(window.document,'span');span.innerHTML='&'+entityName+'; ';ch=span.childNodes[0].nodeValue.charAt(0);}
ret+=ch+remainderText;}
return ret;}
var XML10_TAGNAME_REGEXP=new RegExp('^('+XML10_NAME+')');var XML10_ATTRIBUTE_REGEXP=new RegExp(XML10_ATTRIBUTE,'g');var XML11_TAGNAME_REGEXP=new RegExp('^('+XML11_NAME+')');var XML11_ATTRIBUTE_REGEXP=new RegExp(XML11_ATTRIBUTE,'g');function xmlParse(xml){var regex_empty=/\/$/;var regex_tagname;var regex_attribute;if(xml.match(/^<\?xml/)){if(xml.search(new RegExp(XML10_VERSION_INFO))==5){regex_tagname=XML10_TAGNAME_REGEXP;regex_attribute=XML10_ATTRIBUTE_REGEXP;}else if(xml.search(new RegExp(XML11_VERSION_INFO))==5){regex_tagname=XML11_TAGNAME_REGEXP;regex_attribute=XML11_ATTRIBUTE_REGEXP;}else{alert('VersionInfo is missing, or unknown version number.');}}else{regex_tagname=XML10_TAGNAME_REGEXP;regex_attribute=XML10_ATTRIBUTE_REGEXP;}
var xmldoc=new XDocument();var root=xmldoc;var stack=[];var parent=root;stack.push(parent);var slurp='';var x=stringSplit(xml,'<');for(var i=1;i<x.length;++i){var xx=stringSplit(x[i],'>');var tag=xx[0];var text=xmlResolveEntities(xx[1]||'');if(slurp){var end=x[i].indexOf(slurp);if(end!=-1){var data=x[i].substring(0,end);parent.nodeValue+='<'+data;stack.pop();parent=stack[stack.length-1];text=x[i].substring(end+slurp.length);slurp='';}else{parent.nodeValue+='<'+x[i];text=null;}}else if(tag.indexOf('![CDATA[')==0){var start='![CDATA['.length;var end=x[i].indexOf(']]>');if(end!=-1){var data=x[i].substring(start,end);var node=domCreateCDATASection(xmldoc,data);domAppendChild(parent,node);}else{var data=x[i].substring(start);text=null;var node=domCreateCDATASection(xmldoc,data);domAppendChild(parent,node);parent=node;stack.push(node);slurp=']]>';}}else if(tag.indexOf('!--')==0){var start='!--'.length;var end=x[i].indexOf('-->');if(end!=-1){var data=x[i].substring(start,end);var node=domCreateComment(xmldoc,data);domAppendChild(parent,node);}else{var data=x[i].substring(start);text=null;var node=domCreateComment(xmldoc,data);domAppendChild(parent,node);parent=node;stack.push(node);slurp='-->';}}else if(tag.charAt(0)=='/'){stack.pop();parent=stack[stack.length-1];}else if(tag.charAt(0)=='?'){}else if(tag.charAt(0)=='!'){}else{var empty=tag.match(regex_empty);var tagname=regex_tagname.exec(tag)[1];var node=domCreateElement(xmldoc,tagname);var att;while(att=regex_attribute.exec(tag)){var val=xmlResolveEntities(att[5]||att[7]||'');domSetAttribute(node,att[1],val);}
domAppendChild(parent,node);if(!empty){parent=node;stack.push(node);}}
if(text&&parent!=root){domAppendChild(parent,domCreateTextNode(xmldoc,text));}}
return root;}
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 domTraverseElements(node,opt_pre,opt_post){var ret;if(opt_pre){ret=opt_pre.call(null,node);if(typeof ret=='boolean'&&!ret){return false;}}
for(var c=node.firstChild;c;c=c.nextSibling){if(c.nodeType==DOM_ELEMENT_NODE){ret=arguments.callee.call(this,c,opt_pre,opt_post);if(typeof ret=='boolean'&&!ret){return false;}}}
if(opt_post){ret=opt_post.call(null,node);if(typeof ret=='boolean'&&!ret){return false;}}}
function XNode(type,name,opt_value,opt_owner){this.attributes=[];this.childNodes=[];XNode.init.call(this,type,name,opt_value,opt_owner);}
XNode.init=function(type,name,value,owner){this.nodeType=type-0;this.nodeName=''+name;this.nodeValue=''+value;this.ownerDocument=owner;this.firstChild=null;this.lastChild=null;this.nextSibling=null;this.previousSibling=null;this.parentNode=null;}
XNode.unused_=[];XNode.recycle=function(node){if(!node){return;}
if(node.constructor==XDocument){XNode.recycle(node.documentElement);return;}
if(node.constructor!=this){return;}
XNode.unused_.push(node);for(var a=0;a<node.attributes.length;++a){XNode.recycle(node.attributes[a]);}
for(var c=0;c<node.childNodes.length;++c){XNode.recycle(node.childNodes[c]);}
node.attributes.length=0;node.childNodes.length=0;XNode.init.call(node,0,'','',null);}
XNode.create=function(type,name,value,owner){if(XNode.unused_.length>0){var node=XNode.unused_.pop();XNode.init.call(node,type,name,value,owner);return node;}else{return new XNode(type,name,value,owner);}}
XNode.prototype.appendChild=function(node){if(this.childNodes.length==0){this.firstChild=node;}
node.previousSibling=this.lastChild;node.nextSibling=null;if(this.lastChild){this.lastChild.nextSibling=node;}
node.parentNode=this;this.lastChild=node;this.childNodes.push(node);}
XNode.prototype.replaceChild=function(newNode,oldNode){if(oldNode==newNode){return;}
for(var i=0;i<this.childNodes.length;++i){if(this.childNodes[i]==oldNode){this.childNodes[i]=newNode;var p=oldNode.parentNode;oldNode.parentNode=null;newNode.parentNode=p;p=oldNode.previousSibling;oldNode.previousSibling=null;newNode.previousSibling=p;if(newNode.previousSibling){newNode.previousSibling.nextSibling=newNode;}
p=oldNode.nextSibling;oldNode.nextSibling=null;newNode.nextSibling=p;if(newNode.nextSibling){newNode.nextSibling.previousSibling=newNode;}
if(this.firstChild==oldNode){this.firstChild=newNode;}
if(this.lastChild==oldNode){this.lastChild=newNode;}
break;}}}
XNode.prototype.insertBefore=function(newNode,oldNode){if(oldNode==newNode){return;}
if(oldNode.parentNode!=this){return;}
if(newNode.parentNode){newNode.parentNode.removeChild(newNode);}
var newChildren=[];for(var i=0;i<this.childNodes.length;++i){var c=this.childNodes[i];if(c==oldNode){newChildren.push(newNode);newNode.parentNode=this;newNode.previousSibling=oldNode.previousSibling;oldNode.previousSibling=newNode;if(newNode.previousSibling){newNode.previousSibling.nextSibling=newNode;}
newNode.nextSibling=oldNode;if(this.firstChild==oldNode){this.firstChild=newNode;}}
newChildren.push(c);}
this.childNodes=newChildren;}
XNode.prototype.removeChild=function(node){var newChildren=[];for(var i=0;i<this.childNodes.length;++i){var c=this.childNodes[i];if(c!=node){newChildren.push(c);}else{if(c.previousSibling){c.previousSibling.nextSibling=c.nextSibling;}
if(c.nextSibling){c.nextSibling.previousSibling=c.previousSibling;}
if(this.firstChild==c){this.firstChild=c.nextSibling;}
if(this.lastChild==c){this.lastChild=c.previousSibling;}}}
this.childNodes=newChildren;}
XNode.prototype.hasAttributes=function(){return this.attributes.length>0;}
XNode.prototype.setAttribute=function(name,value){for(var i=0;i<this.attributes.length;++i){if(this.attributes[i].nodeName==name){this.attributes[i].nodeValue=''+value;return;}}
this.attributes.push(XNode.create(DOM_ATTRIBUTE_NODE,name,value,this));}
XNode.prototype.getAttribute=function(name){for(var i=0;i<this.attributes.length;++i){if(this.attributes[i].nodeName==name){return this.attributes[i].nodeValue;}}
return null;}
XNode.prototype.removeAttribute=function(name){var a=[];for(var i=0;i<this.attributes.length;++i){if(this.attributes[i].nodeName!=name){a.push(this.attributes[i]);}}
this.attributes=a;}
XNode.prototype.getElementsByTagName=function(name){var ret=[];var self=this;if("*"==name){domTraverseElements(this,function(node){if(self==node)return;ret.push(node);},null);}else{domTraverseElements(this,function(node){if(self==node)return;if(node.nodeName==name){ret.push(node);}},null);}
return ret;}
XNode.prototype.getElementById=function(id){var ret=null;domTraverseElements(this,function(node){if(node.getAttribute('id')==id){ret=node;return false;}},null);return ret;}
function XDocument(){XNode.call(this,DOM_DOCUMENT_NODE,'#document',null,null);this.documentElement=null;}
XDocument.prototype=new XNode(DOM_DOCUMENT_NODE,'#document');XDocument.prototype.clear=function(){XNode.recycle(this.documentElement);this.documentElement=null;}
XDocument.prototype.appendChild=function(node){XNode.prototype.appendChild.call(this,node);this.documentElement=this.childNodes[0];}
XDocument.prototype.createElement=function(name){return XNode.create(DOM_ELEMENT_NODE,name,null,this);}
XDocument.prototype.createDocumentFragment=function(){return XNode.create(DOM_DOCUMENT_FRAGMENT_NODE,'#document-fragment',null,this);}
XDocument.prototype.createTextNode=function(value){return XNode.create(DOM_TEXT_NODE,'#text',value,this);}
XDocument.prototype.createAttribute=function(name){return XNode.create(DOM_ATTRIBUTE_NODE,name,null,this);}
XDocument.prototype.createComment=function(data){return XNode.create(DOM_COMMENT_NODE,'#comment',data,this);}
XDocument.prototype.createCDATASection=function(data){return XNode.create(DOM_CDATA_SECTION_NODE,'#cdata-section',data,this);}
function xpathParse(expr){xpathLog('parse '+expr);xpathParseInit();var cached=xpathCacheLookup(expr);if(cached){xpathLog(' ... cached');return cached;}
if(expr.match(/^(\$|@)?\w+$/i)){var ret=makeSimpleExpr(expr);xpathParseCache[expr]=ret;xpathLog(' ... simple');return ret;}
if(expr.match(/^\w+(\/\w+)*$/i)){var ret=makeSimpleExpr2(expr);xpathParseCache[expr]=ret;xpathLog(' ... simple 2');return ret;}
var cachekey=expr;var stack=[];var ahead=null;var previous=null;var done=false;var parse_count=0;var lexer_count=0;var reduce_count=0;while(!done){parse_count++;expr=expr.replace(/^\s*/,'');previous=ahead;ahead=null;var rule=null;var match='';for(var i=0;i<xpathTokenRules.length;++i){var result=xpathTokenRules[i].re.exec(expr);lexer_count++;if(result&&result.length>0&&result[0].length>match.length){rule=xpathTokenRules[i];match=result[0];break;}}
if(rule&&(rule==TOK_DIV||rule==TOK_MOD||rule==TOK_AND||rule==TOK_OR)&&(!previous||previous.tag==TOK_AT||previous.tag==TOK_DSLASH||previous.tag==TOK_SLASH||previous.tag==TOK_AXIS||previous.tag==TOK_DOLLAR)){rule=TOK_QNAME;}
if(rule){expr=expr.substr(match.length);xpathLog('token: '+match+' -- '+rule.label);ahead={tag:rule,match:match,prec:rule.prec?rule.prec:0,expr:makeTokenExpr(match)};}else{xpathLog('DONE');done=true;}
while(xpathReduce(stack,ahead)){reduce_count++;xpathLog('stack: '+stackToString(stack));}}
xpathLog('stack: '+stackToString(stack));if(stack.length!=1){throw'XPath parse error '+cachekey+':\n'+stackToString(stack);}
var result=stack[0].expr;xpathParseCache[cachekey]=result;xpathLog('XPath parse: '+parse_count+' / '+
lexer_count+' / '+reduce_count);return result;}
var xpathParseCache={};function xpathCacheLookup(expr){return xpathParseCache[expr];}
function xpathReduce(stack,ahead){var cand=null;if(stack.length>0){var top=stack[stack.length-1];var ruleset=xpathRules[top.tag.key];if(ruleset){for(var i=0;i<ruleset.length;++i){var rule=ruleset[i];var match=xpathMatchStack(stack,rule[1]);if(match.length){cand={tag:rule[0],rule:rule,match:match};cand.prec=xpathGrammarPrecedence(cand);break;}}}}
var ret;if(cand&&(!ahead||cand.prec>ahead.prec||(ahead.tag.left&&cand.prec>=ahead.prec))){for(var i=0;i<cand.match.matchlength;++i){stack.pop();}
xpathLog('reduce '+cand.tag.label+' '+cand.prec+' ahead '+(ahead?ahead.tag.label+' '+ahead.prec+
(ahead.tag.left?' left':''):' none '));var matchexpr=mapExpr(cand.match,function(m){return m.expr;});xpathLog('going to apply '+cand.rule[3].toString());cand.expr=cand.rule[3].apply(null,matchexpr);stack.push(cand);ret=true;}else{if(ahead){xpathLog('shift '+ahead.tag.label+' '+ahead.prec+
(ahead.tag.left?' left':'')+' over '+(cand?cand.tag.label+' '+
cand.prec:' none'));stack.push(ahead);}
ret=false;}
return ret;}
function xpathMatchStack(stack,pattern){var S=stack.length;var P=pattern.length;var p,s;var match=[];match.matchlength=0;var ds=0;for(p=P-1,s=S-1;p>=0&&s>=0;--p,s-=ds){ds=0;var qmatch=[];if(pattern[p]==Q_MM){p-=1;match.push(qmatch);while(s-ds>=0&&stack[s-ds].tag==pattern[p]){qmatch.push(stack[s-ds]);ds+=1;match.matchlength+=1;}}else if(pattern[p]==Q_01){p-=1;match.push(qmatch);while(s-ds>=0&&ds<2&&stack[s-ds].tag==pattern[p]){qmatch.push(stack[s-ds]);ds+=1;match.matchlength+=1;}}else if(pattern[p]==Q_1M){p-=1;match.push(qmatch);if(stack[s].tag==pattern[p]){while(s-ds>=0&&stack[s-ds].tag==pattern[p]){qmatch.push(stack[s-ds]);ds+=1;match.matchlength+=1;}}else{return[];}}else if(stack[s].tag==pattern[p]){match.push(stack[s]);ds+=1;match.matchlength+=1;}else{return[];}
reverseInplace(qmatch);qmatch.expr=mapExpr(qmatch,function(m){return m.expr;});}
reverseInplace(match);if(p==-1){return match;}else{return[];}}
function xpathTokenPrecedence(tag){return tag.prec||2;}
function xpathGrammarPrecedence(frame){var ret=0;if(frame.rule){if(frame.rule.length>=3&&frame.rule[2]>=0){ret=frame.rule[2];}else{for(var i=0;i<frame.rule[1].length;++i){var p=xpathTokenPrecedence(frame.rule[1][i]);ret=Math.max(ret,p);}}}else if(frame.tag){ret=xpathTokenPrecedence(frame.tag);}else if(frame.length){for(var j=0;j<frame.length;++j){var p=xpathGrammarPrecedence(frame[j]);ret=Math.max(ret,p);}}
return ret;}
function stackToString(stack){var ret='';for(var i=0;i<stack.length;++i){if(ret){ret+='\n';}
ret+=stack[i].tag.label;}
return ret;}
function ExprContext(node,opt_position,opt_nodelist,opt_parent,opt_caseInsensitive,opt_ignoreAttributesWithoutValue){this.node=node;this.position=opt_position||0;this.nodelist=opt_nodelist||[node];this.variables={};this.parent=opt_parent||null;this.caseInsensitive=opt_caseInsensitive||false;this.ignoreAttributesWithoutValue=opt_ignoreAttributesWithoutValue||false;if(opt_parent){this.root=opt_parent.root;}else if(this.node.nodeType==DOM_DOCUMENT_NODE){this.root=node;}else{this.root=node.ownerDocument;}}
ExprContext.prototype.clone=function(opt_node,opt_position,opt_nodelist){return new ExprContext(opt_node||this.node,typeof opt_position!='undefined'?opt_position:this.position,opt_nodelist||this.nodelist,this,this.caseInsensitive,this.ignoreAttributesWithoutValue);};ExprContext.prototype.setVariable=function(name,value){if(value instanceof StringValue||value instanceof BooleanValue||value instanceof NumberValue||value instanceof NodeSetValue){this.variables[name]=value;return;}
if('true'===value){this.variables[name]=new BooleanValue(true);}else if('false'===value){this.variables[name]=new BooleanValue(false);}else if(TOK_NUMBER.re.test(value)){this.variables[name]=new NumberValue(value);}else{this.variables[name]=new StringValue(value);}};ExprContext.prototype.getVariable=function(name){if(typeof this.variables[name]!='undefined'){return this.variables[name];}else if(this.parent){return this.parent.getVariable(name);}else{return null;}};ExprContext.prototype.setNode=function(position){this.node=this.nodelist[position];this.position=position;};ExprContext.prototype.contextSize=function(){return this.nodelist.length;};ExprContext.prototype.isCaseInsensitive=function(){return this.caseInsensitive;};ExprContext.prototype.setCaseInsensitive=function(caseInsensitive){return this.caseInsensitive=caseInsensitive;};ExprContext.prototype.isIgnoreAttributesWithoutValue=function(){return this.ignoreAttributesWithoutValue;};ExprContext.prototype.setIgnoreAttributesWithoutValue=function(ignore){return this.ignoreAttributesWithoutValue=ignore;};function StringValue(value){this.value=value;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(value){this.value=value;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(value){this.value=value;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(value){this.value=value;this.type='node-set';}
NodeSetValue.prototype.stringValue=function(){if(this.value.length==0){return'';}else{return xmlValue(this.value[0]);}}
NodeSetValue.prototype.booleanValue=function(){return this.value.length>0;}
NodeSetValue.prototype.numberValue=function(){return this.stringValue()-0;}
NodeSetValue.prototype.nodeSetValue=function(){return this.value;};function TokenExpr(m){this.value=m;}
TokenExpr.prototype.evaluate=function(){return new StringValue(this.value);};function LocationExpr(){this.absolute=false;this.steps=[];}
LocationExpr.prototype.appendStep=function(s){var combinedStep=this._combineSteps(this.steps[this.steps.length-1],s);if(combinedStep){this.steps[this.steps.length-1]=combinedStep;}else{this.steps.push(s);}}
LocationExpr.prototype.prependStep=function(s){var combinedStep=this._combineSteps(s,this.steps[0]);if(combinedStep){this.steps[0]=combinedStep;}else{this.steps.unshift(s);}};LocationExpr.prototype._combineSteps=function(prevStep,nextStep){if(!prevStep)return null;if(!nextStep)return null;var hasPredicates=(prevStep.predicates&&prevStep.predicates.length>0);if(prevStep.nodetest instanceof NodeTestAny&&!hasPredicates){if(prevStep.axis==xpathAxis.DESCENDANT_OR_SELF){if(nextStep.axis==xpathAxis.CHILD){nextStep.axis=xpathAxis.DESCENDANT;return nextStep;}else if(nextStep.axis==xpathAxis.SELF){nextStep.axis=xpathAxis.DESCENDANT_OR_SELF;return nextStep;}}else if(prevStep.axis==xpathAxis.DESCENDANT){if(nextStep.axis==xpathAxis.SELF){nextStep.axis=xpathAxis.DESCENDANT;return nextStep;}}}
return null;}
LocationExpr.prototype.evaluate=function(ctx){var start;if(this.absolute){start=ctx.root;}else{start=ctx.node;}
var nodes=[];xPathStep(nodes,this.steps,0,start,ctx);return new NodeSetValue(nodes);};function xPathStep(nodes,steps,step,input,ctx){var s=steps[step];var ctx2=ctx.clone(input);var nodelist=s.evaluate(ctx2).nodeSetValue();for(var i=0;i<nodelist.length;++i){if(step==steps.length-1){nodes.push(nodelist[i]);}else{xPathStep(nodes,steps,step+1,nodelist[i],ctx);}}}
function StepExpr(axis,nodetest,opt_predicate){this.axis=axis;this.nodetest=nodetest;this.predicate=opt_predicate||[];}
StepExpr.prototype.appendPredicate=function(p){this.predicate.push(p);}
StepExpr.prototype.evaluate=function(ctx){var input=ctx.node;var nodelist=[];var skipNodeTest=false;if(this.nodetest instanceof NodeTestAny){skipNodeTest=true;}
if(this.axis==xpathAxis.ANCESTOR_OR_SELF){nodelist.push(input);for(var n=input.parentNode;n;n=n.parentNode){nodelist.push(n);}}else if(this.axis==xpathAxis.ANCESTOR){for(var n=input.parentNode;n;n=n.parentNode){nodelist.push(n);}}else if(this.axis==xpathAxis.ATTRIBUTE){if(ctx.ignoreAttributesWithoutValue){copyArrayIgnoringAttributesWithoutValue(nodelist,input.attributes);}
else{copyArray(nodelist,input.attributes);}}else if(this.axis==xpathAxis.CHILD){copyArray(nodelist,input.childNodes);}else if(this.axis==xpathAxis.DESCENDANT_OR_SELF){if(this.nodetest.evaluate(ctx).booleanValue()){nodelist.push(input);}
var tagName=xpathExtractTagNameFromNodeTest(this.nodetest);xpathCollectDescendants(nodelist,input,tagName);if(tagName)skipNodeTest=true;}else if(this.axis==xpathAxis.DESCENDANT){var tagName=xpathExtractTagNameFromNodeTest(this.nodetest);xpathCollectDescendants(nodelist,input,tagName);if(tagName)skipNodeTest=true;}else if(this.axis==xpathAxis.FOLLOWING){for(var n=input;n;n=n.parentNode){for(var nn=n.nextSibling;nn;nn=nn.nextSibling){nodelist.push(nn);xpathCollectDescendants(nodelist,nn);}}}else if(this.axis==xpathAxis.FOLLOWING_SIBLING){for(var n=input.nextSibling;n;n=n.nextSibling){nodelist.push(n);}}else if(this.axis==xpathAxis.NAMESPACE){alert('not implemented: axis namespace');}else if(this.axis==xpathAxis.PARENT){if(input.parentNode){nodelist.push(input.parentNode);}}else if(this.axis==xpathAxis.PRECEDING){for(var n=input;n;n=n.parentNode){for(var nn=n.previousSibling;nn;nn=nn.previousSibling){nodelist.push(nn);xpathCollectDescendantsReverse(nodelist,nn);}}}else if(this.axis==xpathAxis.PRECEDING_SIBLING){for(var n=input.previousSibling;n;n=n.previousSibling){nodelist.push(n);}}else if(this.axis==xpathAxis.SELF){nodelist.push(input);}else{throw'ERROR -- NO SUCH AXIS: '+this.axis;}
if(!skipNodeTest){var nodelist0=nodelist;nodelist=[];for(var i=0;i<nodelist0.length;++i){var n=nodelist0[i];if(this.nodetest.evaluate(ctx.clone(n,i,nodelist0)).booleanValue()){nodelist.push(n);}}}
for(var i=0;i<this.predicate.length;++i){var nodelist0=nodelist;nodelist=[];for(var ii=0;ii<nodelist0.length;++ii){var n=nodelist0[ii];if(this.predicate[i].evaluate(ctx.clone(n,ii,nodelist0)).booleanValue()){nodelist.push(n);}}}
return new NodeSetValue(nodelist);};function NodeTestAny(){this.value=new BooleanValue(true);}
NodeTestAny.prototype.evaluate=function(ctx){return this.value;};function NodeTestElementOrAttribute(){}
NodeTestElementOrAttribute.prototype.evaluate=function(ctx){return new BooleanValue(ctx.node.nodeType==DOM_ELEMENT_NODE||ctx.node.nodeType==DOM_ATTRIBUTE_NODE);}
function NodeTestText(){}
NodeTestText.prototype.evaluate=function(ctx){return new BooleanValue(ctx.node.nodeType==DOM_TEXT_NODE);}
function NodeTestComment(){}
NodeTestComment.prototype.evaluate=function(ctx){return new BooleanValue(ctx.node.nodeType==DOM_COMMENT_NODE);}
function NodeTestPI(target){this.target=target;}
NodeTestPI.prototype.evaluate=function(ctx){return new
BooleanValue(ctx.node.nodeType==DOM_PROCESSING_INSTRUCTION_NODE&&(!this.target||ctx.node.nodeName==this.target));}
function NodeTestNC(nsprefix){this.regex=new RegExp("^"+nsprefix+":");this.nsprefix=nsprefix;}
NodeTestNC.prototype.evaluate=function(ctx){var n=ctx.node;return new BooleanValue(this.regex.match(n.nodeName));}
function NodeTestName(name){this.name=name;this.re=new RegExp('^'+name+'$',"i");}
NodeTestName.prototype.evaluate=function(ctx){var n=ctx.node;if(ctx.caseInsensitive){if(n.nodeName.length!=this.name.length)return new BooleanValue(false);return new BooleanValue(this.re.test(n.nodeName));}else{return new BooleanValue(n.nodeName==this.name);}}
function PredicateExpr(expr){this.expr=expr;}
PredicateExpr.prototype.evaluate=function(ctx){var v=this.expr.evaluate(ctx);if(v.type=='number'){return new BooleanValue(ctx.position==v.numberValue()-1);}else{return new BooleanValue(v.booleanValue());}};function FunctionCallExpr(name){this.name=name;this.args=[];}
FunctionCallExpr.prototype.appendArg=function(arg){this.args.push(arg);};FunctionCallExpr.prototype.evaluate=function(ctx){var fn=''+this.name.value;var f=this.xpathfunctions[fn];if(f){return f.call(this,ctx);}else{xpathLog('XPath NO SUCH FUNCTION '+fn);return new BooleanValue(false);}};FunctionCallExpr.prototype.xpathfunctions={'last':function(ctx){assert(this.args.length==0);return new NumberValue(ctx.contextSize());},'position':function(ctx){assert(this.args.length==0);return new NumberValue(ctx.position+1);},'count':function(ctx){assert(this.args.length==1);var v=this.args[0].evaluate(ctx);return new NumberValue(v.nodeSetValue().length);},'id':function(ctx){assert(this.args.length==1);var e=this.args[0].evaluate(ctx);var ret=[];var ids;if(e.type=='node-set'){ids=[];var en=e.nodeSetValue();for(var i=0;i<en.length;++i){var v=xmlValue(en[i]).split(/\s+/);for(var ii=0;ii<v.length;++ii){ids.push(v[ii]);}}}else{ids=e.stringValue().split(/\s+/);}
var d=ctx.root;for(var i=0;i<ids.length;++i){var n=d.getElementById(ids[i]);if(n){ret.push(n);}}
return new NodeSetValue(ret);},'local-name':function(ctx){alert('not implmented yet: XPath function local-name()');},'namespace-uri':function(ctx){alert('not implmented yet: XPath function namespace-uri()');},'name':function(ctx){assert(this.args.length==1||this.args.length==0);var n;if(this.args.length==0){n=[ctx.node];}else{n=this.args[0].evaluate(ctx).nodeSetValue();}
if(n.length==0){return new StringValue('');}else{return new StringValue(n[0].nodeName);}},'string':function(ctx){assert(this.args.length==1||this.args.length==0);if(this.args.length==0){return new StringValue(new NodeSetValue([ctx.node]).stringValue());}else{return new StringValue(this.args[0].evaluate(ctx).stringValue());}},'concat':function(ctx){var ret='';for(var i=0;i<this.args.length;++i){ret+=this.args[i].evaluate(ctx).stringValue();}
return new StringValue(ret);},'starts-with':function(ctx){assert(this.args.length==2);var s0=this.args[0].evaluate(ctx).stringValue();var s1=this.args[1].evaluate(ctx).stringValue();return new BooleanValue(s0.indexOf(s1)==0);},'contains':function(ctx){assert(this.args.length==2);var s0=this.args[0].evaluate(ctx).stringValue();var s1=this.args[1].evaluate(ctx).stringValue();return new BooleanValue(s0.indexOf(s1)!=-1);},'substring-before':function(ctx){assert(this.args.length==2);var s0=this.args[0].evaluate(ctx).stringValue();var s1=this.args[1].evaluate(ctx).stringValue();var i=s0.indexOf(s1);var ret;if(i==-1){ret='';}else{ret=s0.substr(0,i);}
return new StringValue(ret);},'substring-after':function(ctx){assert(this.args.length==2);var s0=this.args[0].evaluate(ctx).stringValue();var s1=this.args[1].evaluate(ctx).stringValue();var i=s0.indexOf(s1);var ret;if(i==-1){ret='';}else{ret=s0.substr(i+s1.length);}
return new StringValue(ret);},'substring':function(ctx){assert(this.args.length==2||this.args.length==3);var s0=this.args[0].evaluate(ctx).stringValue();var s1=this.args[1].evaluate(ctx).numberValue();var ret;if(this.args.length==2){var i1=Math.max(0,Math.round(s1)-1);ret=s0.substr(i1);}else{var s2=this.args[2].evaluate(ctx).numberValue();var i0=Math.round(s1)-1;var i1=Math.max(0,i0);var i2=Math.round(s2)-Math.max(0,-i0);ret=s0.substr(i1,i2);}
return new StringValue(ret);},'string-length':function(ctx){var s;if(this.args.length>0){s=this.args[0].evaluate(ctx).stringValue();}else{s=new NodeSetValue([ctx.node]).stringValue();}
return new NumberValue(s.length);},'normalize-space':function(ctx){var s;if(this.args.length>0){s=this.args[0].evaluate(ctx).stringValue();}else{s=new NodeSetValue([ctx.node]).stringValue();}
s=s.replace(/^\s*/,'').replace(/\s*$/,'').replace(/\s+/g,' ');return new StringValue(s);},'translate':function(ctx){assert(this.args.length==3);var s0=this.args[0].evaluate(ctx).stringValue();var s1=this.args[1].evaluate(ctx).stringValue();var s2=this.args[2].evaluate(ctx).stringValue();for(var i=0;i<s1.length;++i){s0=s0.replace(new RegExp(s1.charAt(i),'g'),s2.charAt(i));}
return new StringValue(s0);},'boolean':function(ctx){assert(this.args.length==1);return new BooleanValue(this.args[0].evaluate(ctx).booleanValue());},'not':function(ctx){assert(this.args.length==1);var ret=!this.args[0].evaluate(ctx).booleanValue();return new BooleanValue(ret);},'true':function(ctx){assert(this.args.length==0);return new BooleanValue(true);},'false':function(ctx){assert(this.args.length==0);return new BooleanValue(false);},'lang':function(ctx){assert(this.args.length==1);var lang=this.args[0].evaluate(ctx).stringValue();var xmllang;var n=ctx.node;while(n&&n!=n.parentNode){xmllang=n.getAttribute('xml:lang');if(xmllang){break;}
n=n.parentNode;}
if(!xmllang){return new BooleanValue(false);}else{var re=new RegExp('^'+lang+'$','i');return new BooleanValue(xmllang.match(re)||xmllang.replace(/_.*$/,'').match(re));}},'number':function(ctx){assert(this.args.length==1||this.args.length==0);if(this.args.length==1){return new NumberValue(this.args[0].evaluate(ctx).numberValue());}else{return new NumberValue(new NodeSetValue([ctx.node]).numberValue());}},'sum':function(ctx){assert(this.args.length==1);var n=this.args[0].evaluate(ctx).nodeSetValue();var sum=0;for(var i=0;i<n.length;++i){sum+=xmlValue(n[i])-0;}
return new NumberValue(sum);},'floor':function(ctx){assert(this.args.length==1);var num=this.args[0].evaluate(ctx).numberValue();return new NumberValue(Math.floor(num));},'ceiling':function(ctx){assert(this.args.length==1);var num=this.args[0].evaluate(ctx).numberValue();return new NumberValue(Math.ceil(num));},'round':function(ctx){assert(this.args.length==1);var num=this.args[0].evaluate(ctx).numberValue();return new NumberValue(Math.round(num));},'ext-join':function(ctx){assert(this.args.length==2);var nodes=this.args[0].evaluate(ctx).nodeSetValue();var delim=this.args[1].evaluate(ctx).stringValue();var ret='';for(var i=0;i<nodes.length;++i){if(ret){ret+=delim;}
ret+=xmlValue(nodes[i]);}
return new StringValue(ret);},'ext-if':function(ctx){assert(this.args.length==3);if(this.args[0].evaluate(ctx).booleanValue()){return this.args[1].evaluate(ctx);}else{return this.args[2].evaluate(ctx);}},'ext-cardinal':function(ctx){assert(this.args.length>=1);var c=this.args[0].evaluate(ctx).numberValue();var ret=[];for(var i=0;i<c;++i){ret.push(ctx.node);}
return new NodeSetValue(ret);}};function UnionExpr(expr1,expr2){this.expr1=expr1;this.expr2=expr2;}
UnionExpr.prototype.evaluate=function(ctx){var nodes1=this.expr1.evaluate(ctx).nodeSetValue();var nodes2=this.expr2.evaluate(ctx).nodeSetValue();var I1=nodes1.length;for(var i2=0;i2<nodes2.length;++i2){var n=nodes2[i2];var inBoth=false;for(var i1=0;i1<I1;++i1){if(nodes1[i1]==n){inBoth=true;i1=I1;}}
if(!inBoth){nodes1.push(n);}}
return new NodeSetValue(nodes1);};function PathExpr(filter,rel){this.filter=filter;this.rel=rel;}
PathExpr.prototype.evaluate=function(ctx){var nodes=this.filter.evaluate(ctx).nodeSetValue();var nodes1=[];for(var i=0;i<nodes.length;++i){var nodes0=this.rel.evaluate(ctx.clone(nodes[i],i,nodes)).nodeSetValue();for(var ii=0;ii<nodes0.length;++ii){nodes1.push(nodes0[ii]);}}
return new NodeSetValue(nodes1);};function FilterExpr(expr,predicate){this.expr=expr;this.predicate=predicate;}
FilterExpr.prototype.evaluate=function(ctx){var nodes=this.expr.evaluate(ctx).nodeSetValue();for(var i=0;i<this.predicate.length;++i){var nodes0=nodes;nodes=[];for(var j=0;j<nodes0.length;++j){var n=nodes0[j];if(this.predicate[i].evaluate(ctx.clone(n,j,nodes0)).booleanValue()){nodes.push(n);}}}
return new NodeSetValue(nodes);}
function UnaryMinusExpr(expr){this.expr=expr;}
UnaryMinusExpr.prototype.evaluate=function(ctx){return new NumberValue(-this.expr.evaluate(ctx).numberValue());};function BinaryExpr(expr1,op,expr2){this.expr1=expr1;this.expr2=expr2;this.op=op;}
BinaryExpr.prototype.evaluate=function(ctx){var ret;switch(this.op.value){case'or':ret=new BooleanValue(this.expr1.evaluate(ctx).booleanValue()||this.expr2.evaluate(ctx).booleanValue());break;case'and':ret=new BooleanValue(this.expr1.evaluate(ctx).booleanValue()&&this.expr2.evaluate(ctx).booleanValue());break;case'+':ret=new NumberValue(this.expr1.evaluate(ctx).numberValue()+
this.expr2.evaluate(ctx).numberValue());break;case'-':ret=new NumberValue(this.expr1.evaluate(ctx).numberValue()-
this.expr2.evaluate(ctx).numberValue());break;case'*':ret=new NumberValue(this.expr1.evaluate(ctx).numberValue()*this.expr2.evaluate(ctx).numberValue());break;case'mod':ret=new NumberValue(this.expr1.evaluate(ctx).numberValue()%this.expr2.evaluate(ctx).numberValue());break;case'div':ret=new NumberValue(this.expr1.evaluate(ctx).numberValue()/this.expr2.evaluate(ctx).numberValue());break;case'=':ret=this.compare(ctx,function(x1,x2){return x1==x2;});break;case'!=':ret=this.compare(ctx,function(x1,x2){return x1!=x2;});break;case'<':ret=this.compare(ctx,function(x1,x2){return x1<x2;});break;case'<=':ret=this.compare(ctx,function(x1,x2){return x1<=x2;});break;case'>':ret=this.compare(ctx,function(x1,x2){return x1>x2;});break;case'>=':ret=this.compare(ctx,function(x1,x2){return x1>=x2;});break;default:alert('BinaryExpr.evaluate: '+this.op.value);}
return ret;};BinaryExpr.prototype.compare=function(ctx,cmp){var v1=this.expr1.evaluate(ctx);var v2=this.expr2.evaluate(ctx);var ret;if(v1.type=='node-set'&&v2.type=='node-set'){var n1=v1.nodeSetValue();var n2=v2.nodeSetValue();ret=false;for(var i1=0;i1<n1.length;++i1){for(var i2=0;i2<n2.length;++i2){if(cmp(xmlValue(n1[i1]),xmlValue(n2[i2]))){ret=true;i2=n2.length;i1=n1.length;}}}}else if(v1.type=='node-set'||v2.type=='node-set'){if(v1.type=='number'){var s=v1.numberValue();var n=v2.nodeSetValue();ret=false;for(var i=0;i<n.length;++i){var nn=xmlValue(n[i])-0;if(cmp(s,nn)){ret=true;break;}}}else if(v2.type=='number'){var n=v1.nodeSetValue();var s=v2.numberValue();ret=false;for(var i=0;i<n.length;++i){var nn=xmlValue(n[i])-0;if(cmp(nn,s)){ret=true;break;}}}else if(v1.type=='string'){var s=v1.stringValue();var n=v2.nodeSetValue();ret=false;for(var i=0;i<n.length;++i){var nn=xmlValue(n[i]);if(cmp(s,nn)){ret=true;break;}}}else if(v2.type=='string'){var n=v1.nodeSetValue();var s=v2.stringValue();ret=false;for(var i=0;i<n.length;++i){var nn=xmlValue(n[i]);if(cmp(nn,s)){ret=true;break;}}}else{ret=cmp(v1.booleanValue(),v2.booleanValue());}}else if(v1.type=='boolean'||v2.type=='boolean'){ret=cmp(v1.booleanValue(),v2.booleanValue());}else if(v1.type=='number'||v2.type=='number'){ret=cmp(v1.numberValue(),v2.numberValue());}else{ret=cmp(v1.stringValue(),v2.stringValue());}
return new BooleanValue(ret);}
function LiteralExpr(value){this.value=value;}
LiteralExpr.prototype.evaluate=function(ctx){return new StringValue(this.value);};function NumberExpr(value){this.value=value;}
NumberExpr.prototype.evaluate=function(ctx){return new NumberValue(this.value);};function VariableExpr(name){this.name=name;}
VariableExpr.prototype.evaluate=function(ctx){return ctx.getVariable(this.name);}
function makeTokenExpr(m){return new TokenExpr(m);}
function passExpr(e){return e;}
function makeLocationExpr1(slash,rel){rel.absolute=true;return rel;}
function makeLocationExpr2(dslash,rel){rel.absolute=true;rel.prependStep(makeAbbrevStep(dslash.value));return rel;}
function makeLocationExpr3(slash){var ret=new LocationExpr();ret.appendStep(makeAbbrevStep('.'));ret.absolute=true;return ret;}
function makeLocationExpr4(dslash){var ret=new LocationExpr();ret.absolute=true;ret.appendStep(makeAbbrevStep(dslash.value));return ret;}
function makeLocationExpr5(step){var ret=new LocationExpr();ret.appendStep(step);return ret;}
function makeLocationExpr6(rel,slash,step){rel.appendStep(step);return rel;}
function makeLocationExpr7(rel,dslash,step){rel.appendStep(makeAbbrevStep(dslash.value));rel.appendStep(step);return rel;}
function makeStepExpr1(dot){return makeAbbrevStep(dot.value);}
function makeStepExpr2(ddot){return makeAbbrevStep(ddot.value);}
function makeStepExpr3(axisname,axis,nodetest){return new StepExpr(axisname.value,nodetest);}
function makeStepExpr4(at,nodetest){return new StepExpr('attribute',nodetest);}
function makeStepExpr5(nodetest){return new StepExpr('child',nodetest);}
function makeStepExpr6(step,predicate){step.appendPredicate(predicate);return step;}
function makeAbbrevStep(abbrev){switch(abbrev){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(asterisk){return new NodeTestElementOrAttribute;}
function makeNodeTestExpr2(ncname,colon,asterisk){return new NodeTestNC(ncname.value);}
function makeNodeTestExpr3(qname){return new NodeTestName(qname.value);}
function makeNodeTestExpr4(typeo,parenc){var type=typeo.value.replace(/\s*\($/,'');switch(type){case'node':return new NodeTestAny;case'text':return new NodeTestText;case'comment':return new NodeTestComment;case'processing-instruction':return new NodeTestPI('');}}
function makeNodeTestExpr5(typeo,target,parenc){var type=typeo.replace(/\s*\($/,'');if(type!='processing-instruction'){throw type;}
return new NodeTestPI(target.value);}
function makePredicateExpr(pareno,expr,parenc){return new PredicateExpr(expr);}
function makePrimaryExpr(pareno,expr,parenc){return expr;}
function makeFunctionCallExpr1(name,pareno,parenc){return new FunctionCallExpr(name);}
function makeFunctionCallExpr2(name,pareno,arg1,args,parenc){var ret=new FunctionCallExpr(name);ret.appendArg(arg1);for(var i=0;i<args.length;++i){ret.appendArg(args[i]);}
return ret;}
function makeArgumentExpr(comma,expr){return expr;}
function makeUnionExpr(expr1,pipe,expr2){return new UnionExpr(expr1,expr2);}
function makePathExpr1(filter,slash,rel){return new PathExpr(filter,rel);}
function makePathExpr2(filter,dslash,rel){rel.prependStep(makeAbbrevStep(dslash.value));return new PathExpr(filter,rel);}
function makeFilterExpr(expr,predicates){if(predicates.length>0){return new FilterExpr(expr,predicates);}else{return expr;}}
function makeUnaryMinusExpr(minus,expr){return new UnaryMinusExpr(expr);}
function makeBinaryExpr(expr1,op,expr2){return new BinaryExpr(expr1,op,expr2);}
function makeLiteralExpr(token){var value=token.value.substring(1,token.value.length-1);return new LiteralExpr(value);}
function makeNumberExpr(token){return new NumberExpr(token.value);}
function makeVariableReference(dollar,name){return new VariableExpr(name.value);}
function makeSimpleExpr(expr){if(expr.charAt(0)=='$'){return new VariableExpr(expr.substr(1));}else if(expr.charAt(0)=='@'){var a=new NodeTestName(expr.substr(1));var b=new StepExpr('attribute',a);var c=new LocationExpr();c.appendStep(b);return c;}else if(expr.match(/^[0-9]+$/)){return new NumberExpr(expr);}else{var a=new NodeTestName(expr);var b=new StepExpr('child',a);var c=new LocationExpr();c.appendStep(b);return c;}}
function makeSimpleExpr2(expr){var steps=stringSplit(expr,'/');var c=new LocationExpr();for(var i=0;i<steps.length;++i){var a=new NodeTestName(steps[i]);var b=new StepExpr('child',a);c.appendStep(b);}
return c;}
var xpathAxis={ANCESTOR_OR_SELF:'ancestor-or-self',ANCESTOR:'ancestor',ATTRIBUTE:'attribute',CHILD:'child',DESCENDANT_OR_SELF:'descendant-or-self',DESCENDANT:'descendant',FOLLOWING_SIBLING:'following-sibling',FOLLOWING:'following',NAMESPACE:'namespace',PARENT:'parent',PRECEDING_SIBLING:'preceding-sibling',PRECEDING:'preceding',SELF:'self'};var xpathAxesRe=[xpathAxis.ANCESTOR_OR_SELF,xpathAxis.ANCESTOR,xpathAxis.ATTRIBUTE,xpathAxis.CHILD,xpathAxis.DESCENDANT_OR_SELF,xpathAxis.DESCENDANT,xpathAxis.FOLLOWING_SIBLING,xpathAxis.FOLLOWING,xpathAxis.NAMESPACE,xpathAxis.PARENT,xpathAxis.PRECEDING_SIBLING,xpathAxis.PRECEDING,xpathAxis.SELF].join('|');var TOK_PIPE={label:"|",prec:17,re:new RegExp("^\\|")};var TOK_DSLASH={label:"//",prec:19,re:new RegExp("^//")};var TOK_SLASH={label:"/",prec:30,re:new RegExp("^/")};var TOK_AXIS={label:"::",prec:20,re:new RegExp("^::")};var TOK_COLON={label:":",prec:1000,re:new RegExp("^:")};var TOK_AXISNAME={label:"[axis]",re:new RegExp('^('+xpathAxesRe+')')};var TOK_PARENO={label:"(",prec:34,re:new RegExp("^\\(")};var TOK_PARENC={label:")",re:new RegExp("^\\)")};var TOK_DDOT={label:"..",prec:34,re:new RegExp("^\\.\\.")};var TOK_DOT={label:".",prec:34,re:new RegExp("^\\.")};var TOK_AT={label:"@",prec:34,re:new RegExp("^@")};var TOK_COMMA={label:",",re:new RegExp("^,")};var TOK_OR={label:"or",prec:10,re:new RegExp("^or\\b")};var TOK_AND={label:"and",prec:11,re:new RegExp("^and\\b")};var TOK_EQ={label:"=",prec:12,re:new RegExp("^=")};var TOK_NEQ={label:"!=",prec:12,re:new RegExp("^!=")};var TOK_GE={label:">=",prec:13,re:new RegExp("^>=")};var TOK_GT={label:">",prec:13,re:new RegExp("^>")};var TOK_LE={label:"<=",prec:13,re:new RegExp("^<=")};var TOK_LT={label:"<",prec:13,re:new RegExp("^<")};var TOK_PLUS={label:"+",prec:14,re:new RegExp("^\\+"),left:true};var TOK_MINUS={label:"-",prec:14,re:new RegExp("^\\-"),left:true};var TOK_DIV={label:"div",prec:15,re:new RegExp("^div\\b"),left:true};var TOK_MOD={label:"mod",prec:15,re:new RegExp("^mod\\b"),left:true};var TOK_BRACKO={label:"[",prec:32,re:new RegExp("^\\[")};var TOK_BRACKC={label:"]",re:new RegExp("^\\]")};var TOK_DOLLAR={label:"$",re:new RegExp("^\\$")};var TOK_NCNAME={label:"[ncname]",re:new RegExp('^'+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],31,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],19,makePathExpr1],[XPathPathExpr,[XPathFilterExpr,TOK_DSLASH,XPathRelativeLocationPath],19,makePathExpr2],[XPathFilterExpr,[XPathPrimaryExpr,XPathPredicate,Q_MM],31,makeFilterExpr],[XPathExpr,[XPathPrimaryExpr],16,passExpr],[XPathExpr,[XPathUnionExpr],16,passExpr],[XPathExpr,[TOK_MINUS,XPathExpr],-1,makeUnaryMinusExpr],[XPathExpr,[XPathExpr,TOK_OR,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_AND,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_EQ,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_NEQ,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_LT,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_LE,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_GT,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_GE,XPathExpr],-1,makeBinaryExpr],[XPathExpr,[XPathExpr,TOK_PLUS,XPathExpr],-1,makeBinaryExpr,ASSOC_LEFT],[XPathExpr,[XPathExpr,TOK_MINUS,XPathExpr],-1,makeBinaryExpr,ASSOC_LEFT],[XPathExpr,[XPathExpr,TOK_ASTERISK,XPathExpr],-1,makeBinaryExpr,ASSOC_LEFT],[XPathExpr,[XPathExpr,TOK_DIV,XPathExpr],-1,makeBinaryExpr,ASSOC_LEFT],[XPathExpr,[XPathExpr,TOK_MOD,XPathExpr],-1,makeBinaryExpr,ASSOC_LEFT],[XPathLiteral,[TOK_LITERALQ],-1,makeLiteralExpr],[XPathLiteral,[TOK_LITERALQQ],-1,makeLiteralExpr],[XPathNumber,[TOK_NUMBER],-1,makeNumberExpr],[XPathVariableReference,[TOK_DOLLAR,TOK_QNAME],200,makeVariableReference]];var xpathRules=[];function xpathParseInit(){if(xpathRules.length){return;}
xpathGrammarRules.sort(function(a,b){var la=a[1].length;var lb=b[1].length;if(la<lb){return 1;}else if(la>lb){return-1;}else{return 0;}});var k=1;for(var i=0;i<xpathNonTerminals.length;++i){xpathNonTerminals[i].key=k++;}
for(i=0;i<xpathTokenRules.length;++i){xpathTokenRules[i].key=k++;}
xpathLog('XPath parse INIT: '+k+' rules');function push_(array,position,element){if(!array[position]){array[position]=[];}
array[position].push(element);}
for(i=0;i<xpathGrammarRules.length;++i){var rule=xpathGrammarRules[i];var pattern=rule[1];for(var j=pattern.length-1;j>=0;--j){if(pattern[j]==Q_1M){push_(xpathRules,pattern[j-1].key,rule);break;}else if(pattern[j]==Q_MM||pattern[j]==Q_01){push_(xpathRules,pattern[j-1].key,rule);--j;}else{push_(xpathRules,pattern[j].key,rule);break;}}}
xpathLog('XPath parse INIT: '+xpathRules.length+' rule bins');var sum=0;mapExec(xpathRules,function(i){if(i){sum+=i.length;}});xpathLog('XPath parse INIT: '+(sum/xpathRules.length)+' average bin size');}
function xpathCollectDescendants(nodelist,node,opt_tagName){if(opt_tagName&&node.getElementsByTagName){copyArray(nodelist,node.getElementsByTagName(opt_tagName));return;}
for(var n=node.firstChild;n;n=n.nextSibling){nodelist.push(n);xpathCollectDescendants(nodelist,n);}}
function xpathExtractTagNameFromNodeTest(nodetest){if(nodetest instanceof NodeTestName){return nodetest.name;}else if(nodetest instanceof NodeTestAny||nodetest instanceof NodeTestElementOrAttribute){return"*";}}
function xpathCollectDescendantsReverse(nodelist,node){for(var n=node.lastChild;n;n=n.previousSibling){nodelist.push(n);xpathCollectDescendantsReverse(nodelist,n);}}
function xpathDomEval(expr,node){var expr1=xpathParse(expr);var ret=expr1.evaluate(new ExprContext(node));return ret;}
function xpathSort(input,sort){if(sort.length==0){return;}
var sortlist=[];for(var i=0;i<input.contextSize();++i){var node=input.nodelist[i];var sortitem={node:node,key:[]};var context=input.clone(node,0,[node]);for(var j=0;j<sort.length;++j){var s=sort[j];var value=s.expr.evaluate(context);var evalue;if(s.type=='text'){evalue=value.stringValue();}else if(s.type=='number'){evalue=value.numberValue();}
sortitem.key.push({value:evalue,order:s.order});}
sortitem.key.push({value:i,order:'ascending'});sortlist.push(sortitem);}
sortlist.sort(xpathSortByKey);var nodes=[];for(var i=0;i<sortlist.length;++i){nodes.push(sortlist[i].node);}
input.nodelist=nodes;input.setNode(0);}
function xpathSortByKey(v1,v2){for(var i=0;i<v1.key.length;++i){var o=v1.key[i].order=='descending'?-1:1;if(v1.key[i].value>v2.key[i].value){return+1*o;}else if(v1.key[i].value<v2.key[i].value){return-1*o;}}
return 0;}
function xpathEval(select,context){var expr=xpathParse(select);var ret=expr.evaluate(context);return ret;}
function xsltProcess(xmlDoc,stylesheet){var output=domCreateDocumentFragment(new XDocument);xsltProcessContext(new ExprContext(xmlDoc),stylesheet,output);var ret=xmlText(output);return ret;}
function xsltProcessContext(input,template,output){var outputDocument=xmlOwnerDocument(output);var nodename=template.nodeName.split(/:/);if(nodename.length==1||nodename[0]!='xsl'){xsltPassThrough(input,template,output,outputDocument);}else{switch(nodename[1]){case'apply-imports':alert('not implemented: '+nodename[1]);break;case'apply-templates':var select=xmlGetAttribute(template,'select');var nodes;if(select){nodes=xpathEval(select,input).nodeSetValue();}else{nodes=input.node.childNodes;}
var sortContext=input.clone(nodes[0],0,nodes);xsltWithParam(sortContext,template);xsltSort(sortContext,template);var mode=xmlGetAttribute(template,'mode');var top=template.ownerDocument.documentElement;var templates=[];for(var i=0;i<top.childNodes.length;++i){var c=top.childNodes[i];if(c.nodeType==DOM_ELEMENT_NODE&&c.nodeName=='xsl:template'&&c.getAttribute('mode')==mode){templates.push(c);}}
for(var j=0;j<sortContext.contextSize();++j){var nj=sortContext.nodelist[j];for(var i=0;i<templates.length;++i){xsltProcessContext(sortContext.clone(nj,j),templates[i],output);}}
break;case'attribute':var nameexpr=xmlGetAttribute(template,'name');var name=xsltAttributeValue(nameexpr,input);var node=domCreateDocumentFragment(outputDocument);xsltChildNodes(input,template,node);var value=xmlValue(node);domSetAttribute(output,name,value);break;case'attribute-set':alert('not implemented: '+nodename[1]);break;case'call-template':var name=xmlGetAttribute(template,'name');var top=template.ownerDocument.documentElement;var paramContext=input.clone();xsltWithParam(paramContext,template);for(var i=0;i<top.childNodes.length;++i){var c=top.childNodes[i];if(c.nodeType==DOM_ELEMENT_NODE&&c.nodeName=='xsl:template'&&domGetAttribute(c,'name')==name){xsltChildNodes(paramContext,c,output);break;}}
break;case'choose':xsltChoose(input,template,output);break;case'comment':var node=domCreateDocumentFragment(outputDocument);xsltChildNodes(input,template,node);var commentData=xmlValue(node);var commentNode=domCreateComment(outputDocument,commentData);output.appendChild(commentNode);break;case'copy':var node=xsltCopy(output,input.node,outputDocument);if(node){xsltChildNodes(input,template,node);}
break;case'copy-of':var select=xmlGetAttribute(template,'select');var value=xpathEval(select,input);if(value.type=='node-set'){var nodes=value.nodeSetValue();for(var i=0;i<nodes.length;++i){xsltCopyOf(output,nodes[i],outputDocument);}}else{var node=domCreateTextNode(outputDocument,value.stringValue());domAppendChild(output,node);}
break;case'decimal-format':alert('not implemented: '+nodename[1]);break;case'element':var nameexpr=xmlGetAttribute(template,'name');var name=xsltAttributeValue(nameexpr,input);var node=domCreateElement(outputDocument,name);domAppendChild(output,node);xsltChildNodes(input,template,node);break;case'fallback':alert('not implemented: '+nodename[1]);break;case'for-each':xsltForEach(input,template,output);break;case'if':var test=xmlGetAttribute(template,'test');if(xpathEval(test,input).booleanValue()){xsltChildNodes(input,template,output);}
break;case'import':alert('not implemented: '+nodename[1]);break;case'include':alert('not implemented: '+nodename[1]);break;case'key':alert('not implemented: '+nodename[1]);break;case'message':alert('not implemented: '+nodename[1]);break;case'namespace-alias':alert('not implemented: '+nodename[1]);break;case'number':alert('not implemented: '+nodename[1]);break;case'otherwise':alert('error if here: '+nodename[1]);break;case'output':break;case'preserve-space':alert('not implemented: '+nodename[1]);break;case'processing-instruction':alert('not implemented: '+nodename[1]);break;case'sort':break;case'strip-space':alert('not implemented: '+nodename[1]);break;case'stylesheet':case'transform':xsltChildNodes(input,template,output);break;case'template':var match=xmlGetAttribute(template,'match');if(match&&xsltMatch(match,input)){xsltChildNodes(input,template,output);}
break;case'text':var text=xmlValue(template);var node=domCreateTextNode(outputDocument,text);output.appendChild(node);break;case'value-of':var select=xmlGetAttribute(template,'select');var value=xpathEval(select,input).stringValue();var node=domCreateTextNode(outputDocument,value);output.appendChild(node);break;case'param':xsltVariable(input,template,false);break;case'variable':xsltVariable(input,template,true);break;case'when':alert('error if here: '+nodename[1]);break;case'with-param':alert('error if here: '+nodename[1]);break;default:alert('error if here: '+nodename[1]);break;}}}
function xsltWithParam(input,template){for(var i=0;i<template.childNodes.length;++i){var c=template.childNodes[i];if(c.nodeType==DOM_ELEMENT_NODE&&c.nodeName=='xsl:with-param'){xsltVariable(input,c,true);}}}
function xsltSort(input,template){var sort=[];for(var i=0;i<template.childNodes.length;++i){var c=template.childNodes[i];if(c.nodeType==DOM_ELEMENT_NODE&&c.nodeName=='xsl:sort'){var select=xmlGetAttribute(c,'select');var expr=xpathParse(select);var type=xmlGetAttribute(c,'data-type')||'text';var order=xmlGetAttribute(c,'order')||'ascending';sort.push({expr:expr,type:type,order:order});}}
xpathSort(input,sort);}
function xsltVariable(input,template,override){var name=xmlGetAttribute(template,'name');var select=xmlGetAttribute(template,'select');var value;if(template.childNodes.length>0){var root=domCreateDocumentFragment(template.ownerDocument);xsltChildNodes(input,template,root);value=new NodeSetValue([root]);}else if(select){value=xpathEval(select,input);}else{value=new StringValue('');}
if(override||!input.getVariable(name)){input.setVariable(name,value);}}
function xsltChoose(input,template,output){for(var i=0;i<template.childNodes.length;++i){var childNode=template.childNodes[i];if(childNode.nodeType!=DOM_ELEMENT_NODE){continue;}else if(childNode.nodeName=='xsl:when'){var test=xmlGetAttribute(childNode,'test');if(xpathEval(test,input).booleanValue()){xsltChildNodes(input,childNode,output);break;}}else if(childNode.nodeName=='xsl:otherwise'){xsltChildNodes(input,childNode,output);break;}}}
function xsltForEach(input,template,output){var select=xmlGetAttribute(template,'select');var nodes=xpathEval(select,input).nodeSetValue();var sortContext=input.clone(nodes[0],0,nodes);xsltSort(sortContext,template);for(var i=0;i<sortContext.contextSize();++i){var ni=sortContext.nodelist[i];xsltChildNodes(sortContext.clone(ni,i),template,output);}}
function xsltChildNodes(input,template,output){var context=input.clone();for(var i=0;i<template.childNodes.length;++i){xsltProcessContext(context,template.childNodes[i],output);}}
function xsltPassThrough(input,template,output,outputDocument){if(template.nodeType==DOM_TEXT_NODE){if(xsltPassText(template)){var node=domCreateTextNode(outputDocument,template.nodeValue);domAppendChild(output,node);}}else if(template.nodeType==DOM_ELEMENT_NODE){var node=domCreateElement(outputDocument,template.nodeName);for(var i=0;i<template.attributes.length;++i){var a=template.attributes[i];if(a){var name=a.nodeName;var value=xsltAttributeValue(a.nodeValue,input);domSetAttribute(node,name,value);}}
domAppendChild(output,node);xsltChildNodes(input,template,node);}else{xsltChildNodes(input,template,output);}}
function xsltPassText(template){if(!template.nodeValue.match(/^\s*$/)){return true;}
var element=template.parentNode;if(element.nodeName=='xsl:text'){return true;}
while(element&&element.nodeType==DOM_ELEMENT_NODE){var xmlspace=domGetAttribute(element,'xml:space');if(xmlspace){if(xmlspace=='default'){return false;}else if(xmlspace=='preserve'){return true;}}
element=element.parentNode;}
return false;}
function xsltAttributeValue(value,context){var parts=stringSplit(value,'{');if(parts.length==1){return value;}
var ret='';for(var i=0;i<parts.length;++i){var rp=stringSplit(parts[i],'}');if(rp.length!=2){ret+=parts[i];continue;}
var val=xpathEval(rp[0],context).stringValue();ret+=val+rp[1];}
return ret;}
function xmlGetAttribute(node,name){var value=domGetAttribute(node,name);if(value){return xmlResolveEntities(value);}else{return value;}};function xsltCopyOf(dst,src,dstDocument){if(src.nodeType==DOM_DOCUMENT_FRAGMENT_NODE||src.nodeType==DOM_DOCUMENT_NODE){for(var i=0;i<src.childNodes.length;++i){arguments.callee(dst,src.childNodes[i],dstDocument);}}else{var node=xsltCopy(dst,src,dstDocument);if(node){for(var i=0;i<src.attributes.length;++i){arguments.callee(node,src.attributes[i],dstDocument);}
for(var i=0;i<src.childNodes.length;++i){arguments.callee(node,src.childNodes[i],dstDocument);}}}}
function xsltCopy(dst,src,dstDocument){if(src.nodeType==DOM_ELEMENT_NODE){var node=domCreateElement(dstDocument,src.nodeName);domAppendChild(dst,node);return node;}
if(src.nodeType==DOM_TEXT_NODE){var node=domCreateTextNode(dstDocument,src.nodeValue);domAppendChild(dst,node);}else if(src.nodeType==DOM_CDATA_SECTION_NODE){var node=domCreateCDATASection(dstDocument,src.nodeValue);domAppendChild(dst,node);}else if(src.nodeType==DOM_COMMENT_NODE){var node=domCreateComment(dstDocument,src.nodeValue);domAppendChild(dst,node);}else if(src.nodeType==DOM_ATTRIBUTE_NODE){domSetAttribute(dst,src.nodeName,src.nodeValue);}
return null;}
function xsltMatch(match,context){var expr=xpathParse(match);var ret;if(expr.steps&&!expr.absolute&&expr.steps.length==1&&expr.steps[0].axis=='child'&&expr.steps[0].predicate.length==0){ret=expr.steps[0].nodetest.evaluate(context).booleanValue();}else{ret=false;var node=context.node;while(!ret&&node){var result=expr.evaluate(context.clone(node,0,[node])).nodeSetValue();for(var i=0;i<result.length;++i){if(result[i]==context.node){ret=true;break;}}
node=node.parentNode;}}
return ret;}
OpenLayers.Format.WMC.v1_1_0g=OpenLayers.Class(OpenLayers.Format.WMC.v1,{VERSION:"1.1.0g",initialize:function(options){OpenLayers.Format.WMC.v1.prototype.initialize.apply(this,[options]);},read_ol_groupDisplayLayerSwitcher:function(layerInfo,node){layerInfo.options.groupDisplayLayerSwitcher=(this.getChildValue(node));},read_ol_wmsServer:function(layerInfo,node){layerInfo.options.wmsServer=(this.getChildValue(node));},write_wmc_LayerExtension:function(layer){var node=this.createElementDefaultNS("Extension");var bounds=layer.maxExtent;var maxExtent=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(maxExtent,{minx:bounds.left.toPrecision(10),miny:bounds.bottom.toPrecision(10),maxx:bounds.right.toPrecision(10),maxy:bounds.top.toPrecision(10)});node.appendChild(maxExtent);var param=layer.params["TRANSPARENT"];if(param){var trans=this.createElementNS(this.namespaces.ol,"ol:transparent");trans.appendChild(this.createTextNode(param));node.appendChild(trans);}
var properties=["wmsServer","numZoomLevels","units","isBaseLayer","opacity","displayInLayerSwitcher","singleTile","groupDisplayLayerSwitcher"];var child;for(var i=0,len=properties.length;i<len;++i){child=this.createOLPropertyNode(layer,properties[i]);if(child){node.appendChild(child);}}
return node;},CLASS_NAME:"OpenLayers.Format.WMC.v1_1_0g"});OpenLayers.Format.WMCC=OpenLayers.Class({defaultVersion:"1.0.0",version:null,parser:null,initialize:function(options){OpenLayers.Util.extend(this,options);this.options=options;},read:function(data,options){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
var root=data.documentElement;var version=this.version;if(!version){version=root.getAttribute("version");if(!version){version=this.defaultVersion;}}
if(!this.parser||this.parser.VERSION!=version){var format=OpenLayers.Format.WMCC["v"+version.replace(/\./g,"_")];if(!format){throw"Can't find a WMCC parser for version "+
version;}
this.parser=new format(this.options);}
var context=this.parser.read(data,options);return context;},CLASS_NAME:"OpenLayers.Format.WMCC"});OpenLayers.Format.WMCC.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ol:"http://openlayers.org/context",wmcc:"http://www.opengis.net/context",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"",getNamespacePrefix:function(uri){var prefix=null;if(uri==null){prefix=this.namespaces[this.defaultPrefix];}else{for(prefix in this.namespaces){if(this.namespaces[prefix]==uri){break;}}}
return prefix;},defaultPrefix:"wmcc",rootPrefix:null,defaultStyleName:"",defaultStyleTitle:"Default",initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
var root=data.documentElement;this.rootPrefix=root.prefix;var context={version:root.getAttribute("version"),references:[]};this.runChildNodes(context,root);return context;},runChildNodes:function(obj,node){var children=node.childNodes;var childNode,processor,prefix,local;for(var i=0,len=children.length;i<len;++i){childNode=children[i];if(childNode.nodeType==1){prefix=this.getNamespacePrefix(childNode.namespaceURI);local=childNode.nodeName.split(":").pop();processor=this["read_"+prefix+"_"+local];if(processor){processor.apply(this,[obj,childNode]);}}}},read_wmcc_ViewContextReference:function(context,node){var reference={};this.runChildNodes(reference,node);context.references.push(reference);},read_wmcc_Title:function(reference,node){reference.title=this.getChildValue(node);},read_wmcc_ContextURL:function(reference,node){var onlineResourceNode=node.getElementsByTagName("OnlineResource");reference.url=this.getAttributeNS(onlineResourceNode[0],this.namespaces.xlink,"href");},CLASS_NAME:"OpenLayers.Format.WMCC.v1"});OpenLayers.Format.WMCC.v1_0_0=OpenLayers.Class(OpenLayers.Format.WMCC.v1,{VERSION:"1.0.0",schemaLocation:"http://schemas.opengeospatial.net/context/1.0.0/collection.xsd",initialize:function(options){OpenLayers.Format.WMCC.v1.prototype.initialize.apply(this,[options]);},CLASS_NAME:"OpenLayers.Format.WMCC.v1_0_0"});OpenLayers.Control.Scale=OpenLayers.Class(OpenLayers.Control,{element:null,initialize:function(element,options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.element=OpenLayers.Util.getElement(element);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.element){this.element=document.createElement("div");this.div.appendChild(this.element);}
this.map.events.register('moveend',this,this.updateScale);this.updateScale();return this.div;},updateScale:function(){var scale=this.map.getScale();if(!scale){return;}
if(scale>=9500&&scale<=950000){scale=Math.round(scale/1000)+"K";}else if(scale>=950000){scale=Math.round(scale/1000000)+"M";}else{scale=Math.round(scale);}
this.element.innerHTML=Locale.getText("txt_escala")+" = 1 : "+scale},CLASS_NAME:"OpenLayers.Control.Scale"});OpenLayers.Format.CSWGetRecords=function(options){options=OpenLayers.Util.applyDefaults(options,OpenLayers.Format.CSWGetRecords.DEFAULTS);var cls=OpenLayers.Format.CSWGetRecords["v"+options.version.replace(/\./g,"_")];if(!cls){throw"Unsupported CSWGetRecords version: "+options.version;}
return new cls(options);};OpenLayers.Format.CSWGetRecords.DEFAULTS={"version":"2.0.2"};OpenLayers.Format.CSWGetRecords.v2_0_2=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",csw:"http://www.opengis.net/cat/csw/2.0.2",dc:"http://purl.org/dc/elements/1.1/",dct:"http://purl.org/dc/terms/",ows:"http://www.opengis.net/ows"},defaultPrefix:"csw",version:"2.0.2",schemaLocation:"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",requestId:null,resultType:null,outputFormat:null,outputSchema:null,startPosition:null,maxRecords:null,DistributedSearch:null,ResponseHandler:null,Query:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
if(data&&data.nodeType==9){data=data.documentElement;}
var obj={};this.readNode(data,obj);return obj;},readers:{"csw":{"GetRecordsResponse":function(node,obj){obj.records=[];this.readChildNodes(node,obj);var version=this.getAttributeNS(node,"",'version');if(version!=""){obj.version=version;}},"RequestId":function(node,obj){obj.RequestId=this.getChildValue(node);},"SearchStatus":function(node,obj){obj.SearchStatus={};var timestamp=this.getAttributeNS(node,"",'timestamp');if(timestamp!=""){obj.SearchStatus.timestamp=timestamp;}},"SearchResults":function(node,obj){this.readChildNodes(node,obj);var attrs=node.attributes;var SearchResults={};for(var i=0,len=attrs.length;i<len;++i){if((attrs[i].name=="numberOfRecordsMatched")||(attrs[i].name=="numberOfRecordsReturned")||(attrs[i].name=="nextRecord")){SearchResults[attrs[i].name]=parseInt(attrs[i].nodeValue);}else{SearchResults[attrs[i].name]=attrs[i].nodeValue;}}
obj.SearchResults=SearchResults;},"SummaryRecord":function(node,obj){var record={type:"SummaryRecord"};this.readChildNodes(node,record);obj.records.push(record);},"BriefRecord":function(node,obj){var record={type:"BriefRecord"};this.readChildNodes(node,record);obj.records.push(record);},"DCMIRecord":function(node,obj){var record={type:"DCMIRecord"};this.readChildNodes(node,record);obj.records.push(record);},"Record":function(node,obj){var record={type:"Record"};this.readChildNodes(node,record);obj.records.push(record);}},"dc":{"*":function(node,obj){if(!(obj[node.localName]instanceof Array)){obj[node.localName]=new Array();}
var dc_element={};var attrs=node.attributes;for(var i=0,len=attrs.length;i<len;++i){dc_element[attrs[i].name]=attrs[i].nodeValue;}
dc_element.value=this.getChildValue(node);obj[node.localName].push(dc_element);}},"dct":{"*":function(node,obj){if(!(obj[node.localName]instanceof Array)){obj[node.localName]=new Array();}
obj[node.localName].push(this.getChildValue(node));}},"ows":{"WGS84BoundingBox":function(node,obj){if(!(obj.BoundingBox instanceof Array)){obj.BoundingBox=new Array();}
var lc=this.getChildValue(this.getElementsByTagNameNS(node,this.namespaces["ows"],"LowerCorner")[0]).split(' ',2);var uc=this.getChildValue(this.getElementsByTagNameNS(node,this.namespaces["ows"],"UpperCorner")[0]).split(' ',2);var boundingBox={value:[parseFloat(lc[0]),parseFloat(lc[1]),parseFloat(uc[0]),parseFloat(uc[1])]};var attrs=node.attributes;for(var i=0,len=attrs.length;i<len;++i){boundingBox[attrs[i].name]=attrs[i].nodeValue;}
obj.BoundingBox.push(boundingBox);},"BoundingBox":function(node,obj){this.readers['ows']['WGS84BoundingBox'].apply(this,[node,obj]);}}},write:function(options){var node=this.writeNode("csw:GetRecords",options);return OpenLayers.Format.XML.prototype.write.apply(this,[node]);},writers:{"csw":{"GetRecords":function(options){if(!options){options={};}
var node=this.createElementNSPlus("csw:GetRecords",{attributes:{service:"CSW",version:this.version,requestId:options.requestId||this.requestId,resultType:options.resultType||this.resultType,outputFormat:options.outputFormat||this.outputFormat,outputSchema:options.outputSchema||this.outputSchema,startPosition:options.startPosition||this.startPosition,maxRecords:options.maxRecords||this.maxRecords}});if(options.DistributedSearch||this.DistributedSearch){this.writeNode("csw:DistributedSearch",options.DistributedSearch||this.DistributedSearch,node);}
var ResponseHandler=options.ResponseHandler||this.ResponseHandler;if(ResponseHandler instanceof Array&&ResponseHandler.length>0){for(var i=0,len=ResponseHandler.length;i<len;i++){this.writeNode("csw:ResponseHandler",ResponseHandler[i],node);}}
this.writeNode("Query",options.Query||this.Query,node);return node;},"DistributedSearch":function(options){var node=this.createElementNSPlus("csw:DistributedSearch",{attributes:{hopCount:options.hopCount}});return node;},"ResponseHandler":function(options){var node=this.createElementNSPlus("csw:ResponseHandler",{value:options.value});return node;},"Query":function(options){if(!options){options={};}
var node=this.createElementNSPlus("csw:Query",{attributes:{typeNames:options.typeNames||"csw:Record"}});var ElementName=options.ElementName;if(ElementName instanceof Array&&ElementName.length>0){for(var i=0,len=ElementName.length;i<len;i++){this.writeNode("csw:ElementName",ElementName[i],node);}}else{this.writeNode("csw:ElementSetName",options.ElementSetName||{value:'summary'},node);}
if(options.Constraint){this.writeNode("csw:Constraint",options.Constraint,node);}
return node;},"ElementName":function(options){var node=this.createElementNSPlus("csw:ElementName",{value:options.value});return node;},"ElementSetName":function(options){var node=this.createElementNSPlus("csw:ElementSetName",{attributes:{typeNames:options.typeNames},value:options.value});return node;},"Constraint":function(options){var node=this.createElementNSPlus("csw:Constraint",{attributes:{version:options.version}});if(options.Filter){var format=new OpenLayers.Format.Filter({version:options.version});node.appendChild(format.write(options.Filter));}else if(options.CqlText){var child=this.createElementNSPlus("CqlText",{value:options.CqlText.value});node.appendChild(child);}
return node;}}},CLASS_NAME:"OpenLayers.Format.CSWGetRecords.v2_0_2"});OpenLayers.Format.Filter.v1_1_0=OpenLayers.Class(OpenLayers.Format.GML.v3,OpenLayers.Format.Filter.v1,{VERSION:"1.1.0",schemaLocation:"http://www.opengis.net/ogc/filter/1.1.0/filter.xsd",initialize:function(options){OpenLayers.Format.GML.v3.prototype.initialize.apply(this,[options]);},readers:{"ogc":OpenLayers.Util.applyDefaults({"PropertyIsEqualTo":function(node,obj){var matchCase=node.getAttribute("matchCase");var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,matchCase:!(matchCase==="false"||matchCase==="0")});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsNotEqualTo":function(node,obj){var matchCase=node.getAttribute("matchCase");var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO,matchCase:!(matchCase==="false"||matchCase==="0")});this.readChildNodes(node,filter);obj.filters.push(filter);}},OpenLayers.Format.Filter.v1.prototype.readers["ogc"]),"gml":OpenLayers.Format.GML.v3.prototype.readers["gml"],"feature":OpenLayers.Format.GML.v3.prototype.readers["feature"]},writers:{"ogc":OpenLayers.Util.applyDefaults({"PropertyIsEqualTo":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsEqualTo",{attributes:{matchCase:filter.matchCase}});this.writeNode("PropertyName",filter,node);this.writeNode("Literal",filter.value,node);return node;},"PropertyIsNotEqualTo":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsNotEqualTo",{attributes:{matchCase:filter.matchCase}});this.writeNode("PropertyName",filter,node);this.writeNode("Literal",filter.value,node);return node;},"PropertyIsLike":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsLike",{attributes:{wildCard:"*",singleChar:".",escape:"!",matchCase:filter.matchCase}});this.writeNode("PropertyName",filter,node);this.writeNode("Literal",filter.regex2value(),node);return node;},"BBOX":function(filter){var node=this.createElementNSPlus("ogc:BBOX");this.writeNode("PropertyName",filter,node);var box=this.writeNode("gml:Envelope",filter.value);if(filter.projection){box.setAttribute("srsName",filter.projection);}
node.appendChild(box);return node;}},OpenLayers.Format.Filter.v1.prototype.writers["ogc"]),"gml":OpenLayers.Format.GML.v3.prototype.writers["gml"],"feature":OpenLayers.Format.GML.v3.prototype.writers["feature"]},writeSpatial:function(filter,name){var node=this.createElementNSPlus("ogc:"+name);this.writeNode("PropertyName",filter,node);var child;if(filter.value instanceof OpenLayers.Geometry){child=this.writeNode("feature:_geometry",filter.value).firstChild;}else{child=this.writeNode("gml:Envelope",filter.value);}
if(filter.projection){child.setAttribute("srsName",filter.projection);}
node.appendChild(child);return node;},CLASS_NAME:"OpenLayers.Format.Filter.v1_1_0"});OpenLayers.Strategy=OpenLayers.Class({layer:null,options:null,active:null,autoActivate:true,autoDestroy:true,initialize:function(options){OpenLayers.Util.extend(this,options);this.options=options;this.active=false;},destroy:function(){this.deactivate();this.layer=null;this.options=null;},setLayer:function(layer){this.layer=layer;},activate:function(){if(!this.active){this.active=true;return true;}
return false;},deactivate:function(){if(this.active){this.active=false;return true;}
return false;},CLASS_NAME:"OpenLayers.Strategy"});OpenLayers.Strategy.Save=OpenLayers.Class(OpenLayers.Strategy,{EVENT_TYPES:["start","success","fail"],events:null,auto:false,timer:null,initialize:function(options){OpenLayers.Strategy.prototype.initialize.apply(this,[options]);this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);},activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){if(this.auto){if(typeof this.auto==="number"){this.timer=window.setInterval(OpenLayers.Function.bind(this.save,this),this.auto*1000)}else{this.layer.events.on({"featureadded":this.triggerSave,"afterfeaturemodified":this.triggerSave,scope:this});}}}
return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){if(this.auto){if(typeof this.auto==="number"){window.clearInterval(this.timer);}else{this.layer.events.un({"featureadded":this.triggerSave,"afterfeaturemodified":this.triggerSave,scope:this})}}}
return deactivated;},triggerSave:function(event){var feature=event.feature;if(feature.state===OpenLayers.State.INSERT||feature.state===OpenLayers.State.UPDATE||feature.state===OpenLayers.State.DELETE){this.save([event.feature]);}},save:function(features){if(!features){features=this.layer.features;}
this.events.triggerEvent("start",{features:features});var remote=this.layer.projection;var local=this.layer.map.getProjectionObject();if(!local.equals(remote)){var len=features.length;var clones=new Array(len);var orig,clone;for(var i=0;i<len;++i){orig=features[i];clone=orig.clone();clone.fid=orig.fid;clone.state=orig.state;if(orig.url){clone.url=orig.url;}
clone._original=orig;clone.geometry.transform(local,remote);clones[i]=clone;}
features=clones;}
this.layer.protocol.commit(features,{callback:this.onCommit,scope:this});},onCommit:function(response){var evt={"response":response};if(response.success()){var features=response.reqFeatures;var state,feature;var destroys=[];var insertIds=response.insertIds||[];var j=0;for(var i=0,len=features.length;i<len;++i){feature=features[i];feature=feature._original||feature;state=feature.state;if(state){if(state==OpenLayers.State.DELETE){destroys.push(feature);}else if(state==OpenLayers.State.INSERT){feature.fid=insertIds[j];++j;}
feature.state=null;}}
if(destroys.length>0){this.layer.destroyFeatures(destroys);}
this.events.triggerEvent("success",evt);}else{this.events.triggerEvent("fail",evt);}},CLASS_NAME:"OpenLayers.Strategy.Save"});OpenLayers.Strategy.BBOX=OpenLayers.Class(OpenLayers.Strategy,{bounds:null,resolution:null,ratio:2,resFactor:null,response:null,initialize:function(options){OpenLayers.Strategy.prototype.initialize.apply(this,[options]);},activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){this.layer.events.on({"moveend":this.update,scope:this});this.layer.events.on({"refresh":this.update,scope:this});}
return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.layer.events.un({"moveend":this.update,scope:this});this.layer.events.un({"refresh":this.update,scope:this});}
return deactivated;},update:function(options){var mapBounds=this.getMapBounds();if((options&&options.force)||this.invalidBounds(mapBounds)){this.calculateBounds(mapBounds);this.resolution=this.layer.map.getResolution();this.triggerRead();}},getMapBounds:function(){var bounds=this.layer.map.getExtent();if(!this.layer.projection.equals(this.layer.map.getProjectionObject())){bounds=bounds.clone().transform(this.layer.map.getProjectionObject(),this.layer.projection);}
return bounds;},invalidBounds:function(mapBounds){if(!mapBounds){mapBounds=this.getMapBounds();}
var invalid=!this.bounds||!this.bounds.containsBounds(mapBounds);if(!invalid&&this.resFactor){var ratio=this.resolution/this.layer.map.getResolution();invalid=(ratio>=this.resFactor||ratio<=(1/this.resFactor));}
return invalid;},calculateBounds:function(mapBounds){if(!mapBounds){mapBounds=this.getMapBounds();}
var center=mapBounds.getCenterLonLat();var dataWidth=mapBounds.getWidth()*this.ratio;var dataHeight=mapBounds.getHeight()*this.ratio;this.bounds=new OpenLayers.Bounds(center.lon-(dataWidth/2),center.lat-(dataHeight/2),center.lon+(dataWidth/2),center.lat+(dataHeight/2));},triggerRead:function(){if(this.response){this.layer.protocol.abort(this.response);this.layer.events.triggerEvent("loadend");}
this.layer.events.triggerEvent("loadstart");this.response=this.layer.protocol.read({filter:this.createFilter(),callback:this.merge,scope:this});},createFilter:function(){var filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,value:this.bounds,projection:this.layer.projection});if(this.layer.filter){filter=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.layer.filter,filter]});}
return filter;},merge:function(resp){this.layer.destroyFeatures();var features=resp.features;if(features&&features.length>0){var remote=this.layer.projection;var local=this.layer.map.getProjectionObject();if(!local.equals(remote)){var geom;for(var i=0,len=features.length;i<len;++i){geom=features[i].geometry;if(geom){geom.transform(remote,local);}}}
this.layer.addFeatures(features);}
this.response=null;this.layer.events.triggerEvent("loadend");},CLASS_NAME:"OpenLayers.Strategy.BBOX"});var IDEOL={singleFile:true};(function(){var singleFile=(typeof IDEOL=="object"&&IDEOL.singleFile);window.IDEOL={_scriptName:(!singleFile)?"ideol/ide/lib/IDEOL.js":"ideol/IDEOL.js",_getScriptLocation:function(){var scriptLocation="";var isOL=new RegExp("(^|(.*?\\/))("+IDEOL._scriptName+")(\\?|$)");var scripts=document.getElementsByTagName('script');for(var i=0,len=scripts.length;i<len;i++){var src=scripts[i].getAttribute('src');if(src){var match=src.match(isOL);if(match){scriptLocation=match[1];break;}}}
return scriptLocation;}};if(!singleFile){var jsfiles=new Array("ajaxslt/util.js","ajaxslt/xmltoken.js","ajaxslt/dom.js","ajaxslt/xpath.js","ajaxslt/xslt.js","ext-openlayers/lib/OpenLayers/Format/WMC/v1_1_0g.js","ext-openlayers/lib/OpenLayers/Format/WMCC.js","ext-openlayers/lib/OpenLayers/Format/WMCC/v1.js","ext-openlayers/lib/OpenLayers/Format/WMCC/v1_0_0.js","ext-openlayers/lib/OpenLayers/Format/CSWGetRecords.js","ext-openlayers/lib/OpenLayers/Format/CSWGetRecords/v2_0_2.js","ext-openlayers/lib/OpenLayers/Format/Filter/v1_1_0.js","ext-openlayers/lib/OpenLayers/Format/WFSCapabilities.js","ext-openlayers/lib/OpenLayers/Format/WFSCapabilities/v1.js","ext-openlayers/lib/OpenLayers/Format/WFSCapabilities/v1_0_0.js","ext-openlayers/lib/OpenLayers/Format/WFSCapabilities/v1_1_0.js","ext-openlayers/lib/OpenLayers/Strategy.js","ext-openlayers/lib/OpenLayers/Strategy/BBOX.js","ext-openlayers/lib/OpenLayers/Strategy/Save.js","ide/lib/IDEOL/Mask.js","ide/lib/IDEOL/App.js","ide/lib/Layout.js","ide/lib/Layout/Panel/BasePanel.js","ide/lib/Layout/Panel/TocPanel.js","ide/lib/Layout/ViewPort.js","ide/lib/Config.js","ide/lib/Login.js","ide/lib/IDEOL/Util/Util.js","ide/lib/IDEOL/Util/UtilUI.js","ide/lib/IDEOL/Layer/WFS.js","ide/lib/IDEOL/Control/ScaleControl.js","ide/lib/IDEOL/Widget/ProjectionCombo.js","ide/lib/IDEOL/Widget/LocaleCombo.js","ide/lib/IDEOL/Widget/ScaleCombo.js","ide/lib/Layout/Menu/MainMenuButton.js","ide/lib/Layout/Menu/FileMenuButton.js","ide/lib/Layout/Bar/MenuBar.js","ide/lib/Layout/Bar/ToolBar.js","ide/lib/Layout/Bar/StatusBar.js","ide/lib/IDEOL/Widget/LayerTree.js","ide/lib/IDEOL/Widget/LayerTreeExtra.js","ide/lib/IDEOL/Widget/Toc.js","ide/lib/IDEOL/Manager/Filter.js","ide/lib/IDEOL/Manager/XSL.js","ide/lib/IDEOL/Manager/Map.js","ide/lib/IDEOL/Manager/Export.js","ide/lib/IDEOL/Manager/Controls.js","ide/lib/IDEOL/Manager/WMC.js","ide/lib/IDEOL/Manager/WMS.js","ide/lib/IDEOL/Manager/WFS.js","ide/lib/IDEOL/Manager/File.js","ide/lib/IDEOL/Manager/Print/Print.js","ide/lib/IDEOL/Manager/Print/PrintRequest.js","ide/lib/IDEOL/Manager/CSW/CSW.js","ide/lib/IDEOL/Manager/CSW/CSWQuery.js","ide/lib/IDEOL/Manager/CSW/CSWSummaryRecord.js","ide/lib/IDEOL/Manager/Draw.js","ide/lib/IDEOL/Tool/ContextCollectionPanel.js","ide/lib/IDEOL/Tool/WFSResultsGrid.js","ide/lib/IDEOL/Tool/HTMLTemplateView.js","ide/lib/IDEOL/Tool/XSLTemplateView.js","ide/lib/IDEOL/Tool/WFSQueryEditWindow.js","ide/lib/IDEOL/Tool/LayerWizard.js","ide/lib/IDEOL/Styles.js","ide/lib/IDEOL/Extension.js");var agent=navigator.userAgent;var docWrite=(agent.match("MSIE")||agent.match("Safari"));if(docWrite){var allScriptTags=new Array(jsfiles.length);}
var host=IDEOL._getScriptLocation()+"ideol/";for(var i=0,len=jsfiles.length;i<len;i++){if(docWrite){allScriptTags[i]="<script src='"+host+jsfiles[i]+"'></script>";}else{var s=document.createElement("script");s.src=host+jsfiles[i];var h=document.getElementsByTagName("head").length?document.getElementsByTagName("head")[0]:document.body;h.appendChild(s);}}
if(docWrite){document.write(allScriptTags.join(""));}}})();IDEOL.VERSION_NUMBER="IDEOL 0.4";IDEOL.Mask=Ext.extend(Ext.LoadMask,{defaultMessage:null,initComponent:function(){IDEOL.Mask.superclass.initComponent.call(this);this.defaultMessage=this.msg;},show:function(text){if(text!=null){this.msg=text;}
IDEOL.Mask.superclass.show.call(this);},hide:function(){this.msg=this.defaultMessage;IDEOL.Mask.superclass.hide.call(this);}});Locale.text=LocaleText;IDEOL.App=function(div,height,width){this.div=div;this.height=height;this.width=width;Ext.onReady(function(){this.initMask();this.mask.show();IDEOL.Util.dispatch([function(done){this.createLayout();done();}],function(){this.initialize();this.load(Config.WMC_URL,Locale.getText("txt_capas"),null);this.initExtensions();this.initialized=true;this.mask.hide();},this);},this);};Ext.extend(IDEOL.App,Ext.util.Observable,{div:null,height:null,width:null,mask:null,layout:null,map:null,controlsManager:null,wmcManager:null,mapManager:null,layersManager:null,styles:null,toc:null,context:null,contextURL:null,extensions:[],initialize:function(){OpenLayers.ProxyHost=Config.ProxyHost;this.styles=new IDEOL.Styles();this.wmcManager=new IDEOL.Manager.WMC();this.mapManager=new IDEOL.Manager.Map({statusBar:this.layout.statusBar});this.toc=new IDEOL.Widget.Toc();},createLayout:function(){this.layout=new Layout({div:this.div,height:this.height,width:this.width});},isViewPort:function(){if(this.div!=null&&this.height!=null&&this.width!=null)
return false;return true;},initMask:function(){if(!this.isViewPort()){var divEl=Ext.get(this.div);divEl.setHeight(this.height);divEl.setWidth(this.width);this.mask=new IDEOL.Mask(divEl);}
else
this.mask=new IDEOL.Mask(Ext.getBody());},validateWMC:function(contextURL){var context=null;if(contextURL==null){IDEOL.UtilUI.showMessageWindow(Locale.getText("txt_error"),Locale.getText("msg_sin_especificar_contexto"),Ext.MessageBox.ERROR);return null;}
else{context=this.wmcManager.isValidWMC(contextURL);if(context==null){IDEOL.UtilUI.showMessageWindow(Locale.getText("txt_error"),Locale.getText("msg_error_obtener_contexto")+" '"+contextURL+"'",Ext.MessageBox.ERROR);}}
return context;},load:function(contextURL,title,projCode){this.layout.statusBar.showBusy(Locale.getText("msg_inicializando_mapa")+" ...");this.context=this.validateWMC(contextURL);if(this.context!=null){this.contextURL=contextURL;this.map=this.mapManager.createWMCMap(this.map,this.context,'mapOL',projCode);this.controlsManager=new IDEOL.Manager.Controls(this.map,this.styles);IDEOL.Manager.Draw.configure(this.map,this.styles.vectorStyleMap);this.toc.prepare('tocOL',this.map,title);this.toc.setStatusBar(this.layout.statusBar);Login.initialize();Login.setLayout(this.layout);Login.setIDEOL(this);this.updateLayout();if(this.initialized)
this.updateExtensions();this.map.updateSize();}
else{IDEOL.UtilUI.showMessageWindow(Locale.getText("txt_informacion"),Locale.getText("msg_error_iniciar_mapa_contexto")+" '"+title+"'",Ext.MessageBox.ERROR);}},updateLayout:function(){this.layout.setIDEOL(this);},updateExtensions:function(){for(i=0;i<this.extensions.length;i++){this.extensions[i].setIDEOL(this);this.extensions[i].onUpdate();}},initExtensions:function(){for(i=0;i<this.extensions.length;i++){this.initExtension(this.extensions[i]);}},initExtension:function(extension){this.extensions[i].setIDEOL(this);extension.onCreate();},addExtension:function(extension){this.extensions.push(extension);if(this.initialized)
this.initExtension(extension);}});Ext.namespace("Layout");Layout=Ext.extend(Ext.Component,{div:null,height:null,width:null,ideol:null,menuBar:null,toolBar:null,statusBar:null,contextCollectionPanel:null,basePanel:null,overViewMapPanel:null,tocPanel:null,tabPanel:null,toolBarPanel:null,mapPanel:null,containerMapPanel:null,containerPanel:null,footerPanel:new Ext.Panel({region:'south',border:false,height:25,frame:true}),eastPanel:new Ext.Panel({id:'eastPanel',region:'east',boder:false,width:225,minWidth:200,maxWidth:300,split:true,collapsible:true,collapseMode:'mini',collapsed:true,frame:true,border:false,plain:true,layout:'accordion',layoutConfig:{animate:true}}),layerWizard:null,initComponent:function(){Layout.superclass.initComponent.call(this);Ext.QuickTips.init();Ext.BLANK_IMAGE_URL='ideol/ide/resources/theme/default/images/blank.gif';this.initComponents();this.initPanels();if(this.isViewPort())
this.useViewPort();else
this.usePanel(this.div,this.height,this.width);},setIDEOL:function(ideol){this.ideol=ideol;this.toolBar.setIDEOL(this.ideol);this.statusBar.setIDEOL(this.ideol);this.contextCollectionPanel.setIDEOL(this.ideol);},initComponents:function(){this.layerWizard=new IDEOL.Tool.LayerWizard();this.menuBar=new Layout.Bar.MenuBar();this.toolBar=new Layout.Bar.ToolBar({layerWizard:this.layerWizard});this.statusBar=new Layout.Bar.StatusBar();this.contextCollectionPanel=new IDEOL.Tool.ContextCollectionPanel();this.toolBar.setStatusBar(this.statusBar);},initPanels:function(){this.eastPanel.on('collapse',function(){if(this.ideol!=null)
this.ideol.map.updateSize();},this);this.eastPanel.on('expand',function(){},this);this.toolBarPanel=new Ext.Panel({region:'north',layout:'fit',border:false,tbar:Config.TOOLBAR?this.toolBar:null});this.mapPanel=new Ext.Panel({bodyCfg:{id:'mapOL',cls:'x-panel-body'},layout:'fit',border:false});this.containerMapPanel=new Ext.Panel({region:'center',layout:'fit',border:false,bbar:this.statusBar,items:[this.mapPanel]});this.tocPanel=new Layout.Panel.TocPanel();this.eastPanel.collapsed=Config.TOC_COLLAPSED;this.eastPanel.add(this.tocPanel);this.eastPanel.add(this.contextCollectionPanel);this.containerPanel=new Ext.Panel({title:Locale.getText("txt_mapa"),layout:'border',border:false,closable:false,tbar:Config.MENUBAR?this.menuBar:null,items:[this.toolBarPanel,this.containerMapPanel,this.eastPanel]});this.tabPanel=new Ext.TabPanel({id:'centerTabPanel',deferredRender:false,region:'center',activeTab:0,border:false,defaults:{xtype:'iframepanel',hideMode:'nosize',focusOnLoad:true,closable:false},items:[this.containerPanel]});},isViewPort:function(){if(this.div!=null&&this.height!=null&&this.width!=null)
return false;return true;},usePanel:function(div,height,width){this.basePanel=new Layout.Panel.BasePanel({items:[this.tabPanel],renderTo:div,height:height,width:width});},useViewPort:function(){var items=[];if(Config.HEADER){var div=document.getElementById('header');if(div){var headerPanel=new Ext.Panel({region:'north',border:false,contentEl:'header'});items.push(headerPanel);}}
items.push(this.tabPanel);this.basePanel=new Layout.ViewPort({items:items});}});Ext.namespace("Layout.Panel");Layout.Panel.BasePanel=Ext.extend(Ext.Panel,{layout:'border',hideBorders:true,frame:true,initComponent:function(){Layout.Panel.BasePanel.superclass.initComponent.call(this);}});Ext.namespace("Layout.Panel");Layout.Panel.TocPanel=Ext.extend(Ext.Panel,{id:'tocOL',layout:'fit',title:Locale.getText("txt_capas"),iconCls:'tocPanelIcon',bodyStyle:'padding:5px 0 5px 0',border:false,initComponent:function(){Layout.Panel.TocPanel.superclass.initComponent.call(this);}});Ext.namespace("Layout");Layout.ViewPort=Ext.extend(Ext.Viewport,{layout:'border',autoHeight:true,autoScroll:true,hideBorders:true,initComponent:function(){Layout.ViewPort.superclass.initComponent.call(this);}});Config={HEADER:true,MENUBAR:false,TOOLBAR:true,TOC_COLLAPSED:false,WMC_URL:'http://atlas.iver.es/IDEAdmin/contexts/atlas/base900913.xml',WMC_COLLECTION_URL:'http://atlas.iver.es/IDEAdmin/contexts/atlas/collection.xml',SCALES:['1000','5000','10000','25000','50000','100000','250000','500000','1000000','1250000','1600000','1750000'],EDITION_SUPPORT:true,ProxyHost:'../cgi-bin/proxy.cgi?url=',LOGIN_URL:'http://atlas.iver.es/wsLogin/login',FILEUPLOAD_URL:'http://services.iver.es/wsFileUpload/fileupload',PRINTWMC_URL:'http://services.iver.es/wsPrintWMC/printwmc'};Login={LOGIN_URL:Config.LOGIN_URL,layout:null,ideol:null,initialized:false,validated:false,userNameField:new Ext.form.TextField({fieldLabel:Locale.getText("txt_usuario"),name:'loginUsername',allowBlank:false,selectOnFocus:true}),passwordField:new Ext.form.TextField({fieldLabel:Locale.getText("txt_contraseña"),name:'loginPassword',inputType:'password',allowBlank:false,enableKeyEvents:true}),form:new Ext.FormPanel({labelWidth:100,frame:true,bodyStyle:'padding:5px 5px 0',autoHeight:true,defaultType:'textfield',defaultButton:0,buttons:[{text:Locale.getText("txt_aceptar"),formBind:true,handler:function(){Login.doValidation();}},{text:Locale.getText("txt_cancelar"),handler:function(){Login.close();}}]}),win:new Ext.Window({layout:'fit',modal:true,title:Locale.getText("txt_login"),id:'formLogin',width:300,autoHeight:true,resizable:false,draggable:false,closeAction:"hide",plain:true,border:false}),doValidation:function(){if(Login.form.getForm().isValid()){Login.form.getForm().submit({url:IDEOL.Util.getProxy(Login.LOGIN_URL)+Login.LOGIN_URL,method:'POST',waitTitle:Locale.getText("msg_conectando"),waitMsg:Locale.getText("msg_enviando_datos"),success:function(){Login.success();},failure:function(form,action){if(action.failureType=='server'){obj=Ext.util.JSON.decode(action.response.responseText);IDEOL.UtilUI.showMessageWindow('',obj.errors.reason,Ext.MessageBox.ERROR);}
else{IDEOL.UtilUI.showMessageWindow(Locale.getText("txt_error"),Locale.getText("msg_sin_conexion_servicio_login"),Ext.MessageBox.ERROR);}
Login.form.getForm().reset();Login.userNameField.focus('',10);}})}},keyEventHandler:function(object,event){if(event.getCharCode()==event.ENTER)
Login.doValidation();},initialize:function(){if(!this.initialized){this.form.add(this.userNameField);this.form.add(this.passwordField);this.passwordField.on('keypress',this.keyEventHandler,this);this.win.add(this.form);this.win.on("close",this.close,this);this.initialized=true;}},checkLogin:function(){this.success();},success:function(){this.validated=true;for(i=0;i<this.ideol.extensions.length;i++){this.ideol.extensions[i].onLogin();}
this.layout.toolBar.loginButton.setIconClass('logout');this.close();},logout:function(){for(i=0;i<this.ideol.extensions.length;i++){this.ideol.extensions[i].onLogout();}
this.layout.toolBar.loginButton.setIconClass('loginService');this.validated=false;},show:function(){if(!this.validated){this.form.getForm().reset();this.win.show();this.userNameField.focus(false,700);}
else{this.logout();}},close:function(){this.win.hide();},setLayout:function(layout){this.layout=layout;},setIDEOL:function(ideol){this.ideol=ideol;}};IDEOL.Util={};IDEOL.Util.prepareURL=function(urlParam){var url=urlParam;if(url.indexOf("?")<0){url+="?";}else if(url.lastIndexOf('&')!=(url.length-1)){if(url.indexOf("?")!=(url.length-1)){url+="&";}}
return url;};IDEOL.Util.getIconUrl=function(wmsUrl,options){if(!options.layer){OpenLayers.Console.warn('Missing required layer option in IDEOL.Util.getIconUrl');return'';}
if(wmsUrl.indexOf("?")<0){wmsUrl+="?";}else if(wmsUrl.lastIndexOf('&')!=(wmsUrl.length-1)){if(wmsUrl.indexOf("?")!=(wmsUrl.length-1)){wmsUrl+="&";}}
var options=OpenLayers.Util.extend({layer:"",service:"WMS",version:"1.1.1",request:"GetLegendGraphic",format:"image/png",transparent:true,width:22,height:22},options);options=OpenLayers.Util.upperCaseObject(options);return wmsUrl+OpenLayers.Util.getParameterString(options);};IDEOL.Util.fixArray=function(subs){if(subs==''||subs==null){return[];}else if(subs instanceof Array){return subs;}else{return subs.split(',');}};IDEOL.Util.encode=function(string){string=string.replace(/rn/g,"\n");var utftext="";for(var n=0;n<string.length;n++){var c=string.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c);}
else if((c>127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128);}
else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128);}}
return utftext;};IDEOL.Util.decode=function(utftext){var string="";var i=0;var c=c1=c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string+=String.fromCharCode(c);i++;}
else if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2;}
else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3;}}
return string;};IDEOL.Util.dispatch=function(functions,complete,scope){var requests=functions.length;var responses=0;var storage={};function respond(){++responses;if(responses===requests){complete.call(scope,storage);}}
function trigger(index){window.setTimeout(function(){functions[index].apply(scope,[respond,storage]);});}
for(var i=0;i<requests;++i){trigger(i);}};IDEOL.Util.getHostName=function(str){if(!str.startsWith("http")||!str.startsWith("https"))
return null;var re=new RegExp('^(?:f|ht)tp(?:s)?\://([^/]+)','im');return str.match(re)[1].toString();};IDEOL.Util.getProxy=function(url){var hostName=window.location.hostname;var dstHostName=IDEOL.Util.getHostName(url);if(dstHostName!=null&&hostName==dstHostName){return'';}
else{return Config.ProxyHost;}};IDEOL.Util.arrayContains=function(a,obj){var i=a.length;while(i--){if(a[i]===obj){return true;}}
return false;};IDEOL.UtilUI={};IDEOL.UtilUI.showMessageWindow=function(title,msg,icon){Ext.MessageBox.show({title:title,msg:msg,buttons:Ext.MessageBox.OK,icon:icon,minWidth:300});};IDEOL.UtilUI.emptyTextCombo='--- '+Locale.getText("txt_seleccionar")+' ---';Ext.namespace("IDEOL.Layer");IDEOL.Layer.WFS=OpenLayers.Class(OpenLayers.Layer.Vector,{protocolVersion:"1.0.0",url:null,featurePrefix:null,featureType:null,featureNS:null,maxFeatures:175,extractAttributes:true,geomType:null,geometryName:'the_geom',editable:false,strategies:null,protocol:null,initialize:function(name,url,options){var newArguments=[];newArguments.push(name,options);OpenLayers.Layer.Vector.prototype.initialize.apply(this,newArguments);this.url=url;this.strategies=[new OpenLayers.Strategy.BBOX({layer:this,resFactor:2})];this.initializeProtocol();},initializeProtocol:function(){this.protocol=new OpenLayers.Protocol.WFS({version:this.protocolVersion,url:this.url,featurePrefix:this.featurePrefix,featureType:this.featureType,featureNS:this.featureNS,geometryName:this.geometryName,extractAttributes:this.extractAttributes,maxFeatures:this.maxFeatures});},setMaxFeatures:function(maxFeatures){this.maxFeatures=maxFeatures;this.protocol.maxFeatures=maxFeatures;},getOptions:function(){var options={};for(var o in this.options){options[o]=this[o];}
return options;},clone:function(obj){if(obj==null){obj=new IDEOL.Layer.WFS(this.name,this.url,this.getOptions());}
obj=OpenLayers.Layer.prototype.clone.apply(this,[obj]);var features=this.features;var len=features.length;var clonedFeatures=new Array(len);for(var i=0;i<len;++i){clonedFeatures[i]=features[i].clone();}
obj.features=clonedFeatures;return obj;},CLASS_NAME:'IDEOL.Layer.WFS'});Ext.namespace("IDEOL.Control");IDEOL.Control.ScaleControl=OpenLayers.Class(OpenLayers.Control.Scale,{initialize:function(options){OpenLayers.Control.Scale.prototype.initialize.apply(this,[options]);},updateScale:function(){var scale=this.map.getScale();if(!scale){return;}
var scaleCombo=Ext.getCmp('scaleCombo');scaleCombo.setValue('1:'+Math.ceil(scale));},CLASS_NAME:"IDEOL.Control.ScaleControl"});Ext.namespace("IDEOL.Widget");IDEOL.Widget.ProjectionCombo=Ext.extend(Ext.form.ComboBox,{id:'projectionCombo',displayField:'projection',mode:'local',triggerAction:'all',typeAhead:true,forceSelection:true,selectOnFocus:true,editable:false,width:90,listeners:{beforeselect:function(combo,record,index){if(combo.getValue()!=record.data.projection){var contextURL=this.ideol.contextURL;this.ideol.load(contextURL,"",record.data.projection);}}},store:new Ext.data.SimpleStore({fields:['projection'],data:[['EPSG:4326'],['EPSG:23030']]}),initComponent:function(){IDEOL.Widget.ProjectionCombo.superclass.initComponent.call(this);this.on('expand',function(comboBox){this.list.setWidth('auto');this.innerList.setWidth('auto');},this,{single:true});},setIDEOL:function(ideol){this.ideol=ideol;this.prepare();},prepare:function(){if(this.ideol.map.getProjection()=='EPSG:900913'){this.setDisabled(true);this.setValue('EPSG:4326');}
else{this.setDisabled(false);this.setValue(this.ideol.map.getProjection());}}});Ext.namespace("IDEOL.Widget");IDEOL.Widget.LocaleCombo=Ext.extend(Ext.form.ComboBox,{displayField:'language',typeAhead:true,mode:'local',triggerAction:'all',emptyText:Locale.getText("msg_seleccionar_idioma"),selectOnFocus:true,editable:false,width:70,iconClsField:'flag',listeners:{beforeselect:function(combo,record,index){if(combo.getValue()!=record.data.language){window.location.search=Ext.urlEncode({"lang":record.data.code});}}},store:new Ext.data.SimpleStore({fields:['code','language','charset','flag'],data:Languages}),setDefaultLocale:function(){var record;if(Locale.lang){record=this.store.data.find(function(item,key){if(item.data.code==Locale.lang){return true;}
return false;});}
if(record){this.setValue(record.data.language);}},initComponent:function(){Ext.apply(this,{tpl:'<tpl for=".">'
+'<div class="x-combo-list-item locale-icon-combo-item '
+'{'+this.iconClsField+'}">'
+'{'+this.displayField+'}'
+'</div></tpl>'});IDEOL.Widget.LocaleCombo.superclass.initComponent.call(this);this.on('expand',function(comboBox){this.list.setWidth('auto');this.innerList.setWidth('auto');},this,{single:true});this.setDefaultLocale();},onRender:function(ct,position){IDEOL.Widget.LocaleCombo.superclass.onRender.call(this,ct,position);this.wrap.applyStyles({position:'relative'});this.el.addClass('locale-icon-combo-input');this.icon=Ext.DomHelper.append(this.el.up('div.x-form-field-wrap'),{tag:'div',style:'position:absolute'});},setIconCls:function(){var rec=this.store.query(this.valueField,this.getValue()).itemAt(0);if(rec){this.icon.className='locale-icon-combo-icon '+rec.get(this.iconClsField);}},setValue:function(value){IDEOL.Widget.LocaleCombo.superclass.setValue.call(this,value);this.setIconCls();}});Ext.namespace("IDEOL.Widget");IDEOL.Widget.ScaleCombo=Ext.extend(Ext.form.ComboBox,{id:'scaleCombo',fieldLabel:Locale.getText("txt_escala"),width:80,displayField:'scale',typeAhead:true,mode:'local',triggerAction:'all',allowBlank:false,selectOnFocus:true,enableKeyEvents:true,editable:false,ideol:null,scales:Config.SCALES,store:new Ext.data.SimpleStore({fields:['scale','value']}),initComponent:function(){IDEOL.Widget.ScaleCombo.superclass.initComponent.call(this);var scales=this.getScalesForStore(this.scales);this.store.loadData(scales);this.on('select',function(combo,record,index){this.setScale(record.data.value);},this);this.on('keypress',function(object,event){this.comboKeyEventHandler(object,event);},this);this.on('expand',function(comboBox){this.list.setWidth('auto');this.innerList.setWidth('auto');},this,{single:true});},setIDEOL:function(ideol){this.ideol=ideol;this.prepare();},prepare:function(){this.setValue(this.getScale());},getScalesForStore:function(scales){var storeScales=[];for(var i=0;i<scales.length;i++){storeScales.push(['1:'+scales[i],scales[i]]);}
return storeScales;},comboKeyEventHandler:function(object,event){if(event.getCharCode()==event.ENTER){var scaleString=object.getValue().split(":");if(scaleString.length==1)
this.setScale(scaleString);else if(scaleString.length==2)
this.setScale(scaleString[1]);else
object.setValue(this.getScale());}},getScale:function(){return"1:"+this.ideol.map.getScale();},setScale:function(value){var scale=Math.ceil(value);this.ideol.map.zoomToScale(scale,true);}});Ext.namespace("Layout.Menu");Layout.Menu.MainMenuButton=Ext.extend(Ext.Toolbar.Button,{text:Locale.getText("txt_archivo"),menu:new Ext.menu.Menu(),initialize:function(){this.dateItem.menu=this.dateMenu;this.colorItem.menu=this.colorMenu;this.menu.add(this.dateItem);this.menu.add(this.colorItem);},dateItem:new Ext.menu.Item({text:'Choose a Date',iconCls:'calendar'}),colorItem:new Ext.menu.Item({text:'Choose a Color',iconCls:'calendar'}),dateMenu:new Ext.menu.DateMenu({scope:this,handler:function(dp,date){alert('Date Selected '+date.format('M j, Y'));}}),colorMenu:new Ext.menu.ColorMenu({scope:this,handler:function(cm,color){alert('Color Selected '+color);}}),initComponent:function(){Layout.Menu.MainMenuButton.superclass.initComponent.call(this);this.initialize();}});Ext.namespace("Layout.Menu");Layout.Menu.FileMenuButton=Ext.extend(Ext.Toolbar.Button,{text:Locale.getText("txt_archivo"),menu:new Ext.menu.Menu(),initialize:function(){this.menu.add(this.importItem);this.menu.add(this.exportItem);this.menu.add(this.printItem);},importItem:new Ext.menu.Item({text:Locale.getText('txt_importar')+'...',iconCls:'uploadWMCFileButton_16x16'}),exportItem:new Ext.menu.Item({text:Locale.getText('txt_exportar')+'...',iconCls:'saveWMCFileButton_16x16'}),printItem:new Ext.menu.Item({text:Locale.getText('txt_imprimir'),iconCls:'printWMCFileButton_16x16'}),exportItemKML:new Ext.menu.Item({text:Locale.getText('txt_kml'),scope:this,handler:function(){alert('lo');}}),initComponent:function(){Layout.Menu.FileMenuButton.superclass.initComponent.call(this);this.initialize();}});Ext.namespace("Layout.Bar");Layout.Bar.MenuBar=Ext.extend(Ext.Toolbar,{height:25,listeners:{render:function(){this.addItem(this.fileMenuButton);}},fileMenuButton:new Layout.Menu.FileMenuButton(),initComponent:function(){Layout.Bar.MenuBar.superclass.initComponent.call(this);}});Ext.namespace("Layout.Bar");Layout.Bar.ToolBar=Ext.extend(Ext.Toolbar,{map:null,id:'toolbar',height:33,ideol:null,drawManager:null,statusBar:null,localeCombo:new IDEOL.Widget.LocaleCombo(),layerWizard:null,listeners:{afterrender:function(){this.addItem(this.localeCombo);this.addItems(this.mapButtons);this.addSeparator();if(Config.EDITION_SUPPORT){this.addItem(this.loginButton);this.addSeparator();}}},mapButtons:{zoomFull:new Ext.Toolbar.Button({iconCls:'zoomfull',tooltip:Locale.getText("txt_zoom_completo")}),zoomIn:new Ext.Toolbar.Button({iconCls:'zoomin',tooltip:Locale.getText("txt_zoom_mas"),toggleGroup:'map'}),zoomOut:new Ext.Toolbar.Button({iconCls:'zoomout',tooltip:Locale.getText("txt_zoom_menos"),toggleGroup:'map'}),pan:new Ext.Toolbar.Button({iconCls:'pan',tooltip:Locale.getText("txt_desplazar_mapa"),toggleGroup:'map',enableToggle:true,pressed:true}),back:new Ext.Toolbar.Button({iconCls:'back',tooltip:Locale.getText("txt_vista_anterior")}),next:new Ext.Toolbar.Button({iconCls:'next',tooltip:Locale.getText("txt_vista_siguiente")}),measureDistance:new Ext.Toolbar.Button({iconCls:'distance',tooltip:Locale.getText("txt_medir_distancias"),toggleGroup:'map'}),measureArea:new Ext.Toolbar.Button({iconCls:'area',tooltip:Locale.getText("txt_medir_areas"),toggleGroup:'map'}),cleanMap:new Ext.Toolbar.Button({iconCls:'cleanMap',tooltip:Locale.getText("txt_limpiar_mapa")}),refreshMap:new Ext.Toolbar.Button({iconCls:'refreshMap',tooltip:Locale.getText("txt_recargar_mapa")}),layerWizard:new Ext.Toolbar.Button({iconCls:'layerWizard',tooltip:Locale.getText("txt_anyadir_capa"),disabled:true})},setMapButtonsEvents:function(){this.mapButtons.zoomFull.on('click',function(object,event){this.ideol.controlsManager.controls.zoomFull.trigger();},this);this.mapButtons.zoomIn.on('click',function(object,event){this.ideol.controlsManager.activateControl(this.ideol.controlsManager.controls.zoomIn);},this);this.mapButtons.zoomOut.on('click',function(object,event){this.ideol.controlsManager.activateControl(this.ideol.controlsManager.controls.zoomOut);},this);this.mapButtons.pan.on('click',function(object,event){this.ideol.controlsManager.activateControl(this.ideol.controlsManager.controls.pan);},this);this.mapButtons.back.on('click',function(object,event){this.ideol.controlsManager.controls.nav.previous.trigger();},this);this.mapButtons.next.on('click',function(object,event){this.ideol.controlsManager.controls.nav.next.trigger();},this);this.mapButtons.measureDistance.on('click',function(object,event){this.ideol.controlsManager.activateControl(this.ideol.controlsManager.controls.measureDistance);},this);this.mapButtons.measureArea.on('click',function(object,event){this.ideol.controlsManager.activateControl(this.ideol.controlsManager.controls.measureArea);},this);this.mapButtons.cleanMap.on('click',function(object,event){this.drawManager.cleanAll();},this);this.mapButtons.refreshMap.on('click',function(object,event){this.ideol.load(this.ideol.contextURL,'');},this);this.mapButtons.layerWizard.on('click',function(object,event){this.layerWizard.show();},this);},loginButton:new Ext.Toolbar.Button({iconCls:'loginService'}),setLoginButtonEvent:function(){this.loginButton.on('click',function(object,event){Login.show();},this);},setIDEOL:function(ideol){this.ideol=ideol;},setStatusBar:function(statusBar){this.statusBar=statusBar;},visibleItems:function(items,bool){for(key in items){items[key].setVisible(bool);}},enableItems:function(items,bool){for(key in items){items[key].setDisabled(bool);}},addSeparator:function(){this.addItem(new Ext.Toolbar.Separator());},addItems:function(items){for(key in items)
this.addItem(items[key]);},initComponent:function(){Layout.Bar.ToolBar.superclass.initComponent.call(this);this.layerWizard.tabPanel.on("add",function(){this.mapButtons.layerWizard.setDisabled(false);},this);this.drawManager=IDEOL.Manager.Draw.getInstance();this.setMapButtonsEvents();this.setLoginButtonEvent();}});Ext.namespace("Layout.Bar");Layout.Bar.StatusBar=Ext.extend(Ext.ux.StatusBar,{defaultText:'',border:false,ideol:null,scaleCombo:null,projectionCombo:new IDEOL.Widget.ProjectionCombo(),scaleCombo:new IDEOL.Widget.ScaleCombo(),layerSelectedPanelText:'<b>'+Locale.getText('txt_capa_seleccionada')+':</b>',layerSelectedPanel:new Ext.Panel({bodyStyle:'border: 0 solid; background: transparent;',border:false,html:'<b>'+Locale.getText('txt_capa_seleccionada')+':</b> '+Locale.getText('txt_sin_seleccion')+" "}),scalePanelText:new Ext.Panel({bodyStyle:'border: 0 solid; background: transparent;',border:false,html:'<b>'+Locale.getText('txt_escala')+':</b> '}),mousePositionPanel:new Ext.Panel({bodyCfg:{id:"mousePositionInfo"},bodyStyle:'border: 0 solid; background: transparent;',border:false}),measureInfoPanel:new Ext.Panel({bodyCfg:{id:"measureInfo"},bodyStyle:'border: 0 solid; background: transparent;',border:false}),listeners:{afterrender:function(){this.addItem(this.mousePositionPanel);this.addItem(new Ext.Toolbar.Separator());this.addItem(this.layerSelectedPanel);this.addItem(new Ext.Toolbar.Separator());this.addItem(this.measureInfoPanel);this.addItem(new Ext.Toolbar.Separator());this.addItem(this.projectionCombo);this.addItem(new Ext.Toolbar.Separator());this.addItem(this.scalePanelText);this.addItem(this.scaleCombo);}},updateSelectedLayerName:function(name){var html=this.layerSelectedPanelText+" "+name+" ";this.layerSelectedPanel.body.update(html);},setIDEOL:function(ideol){this.ideol=ideol;this.projectionCombo.setIDEOL(this.ideol);this.scaleCombo.setIDEOL(this.ideol);this.updateSelectedLayerName(Locale.getText('txt_sin_seleccion'));},initComponent:function(){Layout.Bar.StatusBar.superclass.initComponent.call(this);}});RadioTreeNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{renderElements:function(n,a,targetNode,bulkRender){this.indentMarkup=n.parentNode?n.parentNode.ui.getChildIndent():'';var cb=typeof a.checked=='boolean';var radioGrp=n.attributes.radioGrp||"radioGrp";var href=a.href?a.href:Ext.isGecko?"":"#";var buf=['<li class="x-tree-node"><div ext:tree-node-id="',n.id,'" class="x-tree-node-el x-tree-node-leaf x-unselectable ',a.cls,'" unselectable="on">','<span class="x-tree-node-indent">',this.indentMarkup,"</span>",'<img src="',this.emptyIcon,'" class="x-tree-ec-icon x-tree-elbow" />','<img src="',a.icon||this.emptyIcon,'" class="x-tree-node-icon',(a.icon?" x-tree-node-inline-icon":""),(a.iconCls?" "+a.iconCls:""),'" unselectable="on" />',cb?('<input class="x-tree-node-cb" type="radio" id="'+n.id+'" name="'+radioGrp+'" '+(a.checked?'checked="checked" />':'/>')):'','<a hidefocus="on" class="x-tree-node-anchor" href="',href,'" tabIndex="1" ',a.hrefTarget?' target="'+a.hrefTarget+'"':"",'><span unselectable="on">',n.text,"</span></a></div>",'<ul class="x-tree-node-ct" style="display:none;"></ul>',"</li>"].join('');var nel;if(bulkRender!==true&&n.nextSibling&&(nel=n.nextSibling.ui.getEl())){this.wrap=Ext.DomHelper.insertHtml("beforeBegin",nel,buf);}else{this.wrap=Ext.DomHelper.insertHtml("beforeEnd",targetNode,buf);}
this.elNode=this.wrap.childNodes[0];this.ctNode=this.wrap.childNodes[1];var cs=this.elNode.childNodes;this.indentNode=cs[0];this.ecNode=cs[1];this.iconNode=cs[2];var index=3;if(cb){this.checkbox=cs[3];index++;}
this.anchor=cs[index];this.textNode=cs[index].firstChild;},_unused_renderElements:function(n,a,targetNode,bulkRender){RadioTreeNodeUI.superclass.renderElements.apply(this,arguments);var cbNode=Ext.DomQuery.selectNode(".x-tree-node-cb",this.elNode);var radioGrp=n.attributes.radioGrp||"radioGrp";cbNode.setAttribute("type","radio");cbNode.setAttribute("id",n.id);cbNode.setAttribute("name",radioGrp);},onRadioChange:function(e){var checked=this.checkbox.checked;this.node.attributes.checked=checked;this.fireEvent('radiochange',this.node,checked);}});LayerTreeEventModel=Ext.extend(Ext.tree.TreeEventModel,{delegateClick:function(e,t){if(!this.beforeEvent(e)){return;}
if(e.getTarget('input[type=checkbox]',1)){this.onCheckboxClick(e,this.getNode(e));}
else if(e.getTarget('input[type=radio]',1)){this.onRadioClick(e,this.getNode(e));}
else if(e.getTarget('.x-tree-ec-icon',1)){this.onIconClick(e,this.getNode(e));}
else if(this.getNodeTarget(e)){this.onNodeClick(e,this.getNode(e));}},onRadioClick:function(e,node){if(!node.ui.onRadioChange){OpenLayers.Console.error("Invalid TreeNodeUI Class, no "+"onRadioChange is available");return;}
node.ui.onRadioChange(e);}});LayerTree=function(config){Ext.apply(this,config);LayerTree.superclass.constructor.call(this);};Ext.extend(LayerTree,Ext.tree.TreePanel,{separator:":",model:null,showWmsLegend:false,rootVisible:false,animate:true,autoScroll:true,loader:new Ext.tree.TreeLoader({}),enableDD:false,containerScroll:true,ascending:true,_automaticModel:true,layerNameToLayer:{},baseLayerNames:[],layersWithSublayers:{},layerToNodeIds:{},nodeIdToNode:{},nodeIdToLayers:{},hasCheckbox:function(node){return typeof(node.attributes.checked)=="boolean";},setNodeChecked:function(nodeOrId,checked,fireEvent){var node=(nodeOrId instanceof Ext.data.Node)?nodeOrId:this.getNodeById(nodeOrId);if(!node||!this.hasCheckbox(node)){return;}
if(checked===undefined){checked=!node.attributes.checked;}
node.attributes.checked=checked;if(node.ui&&node.ui.checkbox){node.ui.checkbox.checked=checked;}
if(fireEvent||(fireEvent===undefined)){node.fireEvent('checkchange',node,checked);}},_updateCachedObjects:function(){if(!this.map){OpenLayers.Console.error("map Object needs to be available when "+"calling _updateCachedObjects");return;}
this.layerNameToLayer={};this.baseLayerNames=[];this.layersWithSublayers={};this.layerToNodeIds={};this.nodeIdToNode={};this.nodeIdToLayers={};Ext.each(this.map.layers,function(layer){var name=layer.name;this.layerNameToLayer[name]=layer;if(layer.isBaseLayer)
this.baseLayerNames.push(name);},this);this.getRootNode().cascade(function(node){if(!node.attributes.layerNames)
return true;var layerNames=node.attributes.layerNames;for(var i=0;i<layerNames.length;i++){var name=layerNames[i];if(name.indexOf(this.separator)!=-1){var name=name.split(this.separator)[0];this.layersWithSublayers[name]=true;}
if(!this.nodeIdToLayers[node.id])
this.nodeIdToLayers[node.id]=[];this.nodeIdToLayers[node.id].push(this.layerNameToLayer[name]);}},this);this.getRootNode().cascade(function(node){var checked=node.attributes.checked;var layerNames=node.attributes.layerNames;if(!layerNames)
return;for(var i=0;i<layerNames.length;i++){var layerName=layerNames[i];if(!layerName)
continue;if(!this.layerToNodeIds[layerName])
this.layerToNodeIds[layerName]=[];this.layerToNodeIds[layerName].push(node.id);this.nodeIdToNode[node.id]=node;}},this);},_updateCheckboxAncestors:function(){var unvisitedNodeIds={};var tree=this;function updateNodeCheckbox(node){if(!tree.hasCheckbox(node)){throw new Error(arguments.callee.name+" should only be called on checkbox nodes");}
var checkboxChildren=[];node.eachChild(function(child){if(tree.hasCheckbox(child))
checkboxChildren.push(child);},this);if(checkboxChildren.length==0){return node.attributes.checked;}
var allChecked=true;Ext.each(checkboxChildren,function(child){if(!updateNodeCheckbox(child)){allChecked=false;return false;}},this);tree.setNodeChecked(node,allChecked,false);delete unvisitedNodeIds[node.id];return allChecked;}
var checkboxNodes=[];this.getRootNode().cascade(function(node){if(this.hasCheckbox(node)){checkboxNodes.push(node);unvisitedNodeIds[node.id]=true;}},this);var node;while(node=checkboxNodes.shift()){if(unvisitedNodeIds[node.id])
updateNodeCheckbox(node);}},_handleModelChange:function LT__handleModelChange(clickedNode,checked){if(clickedNode){clickedNode.cascade(function(node){this.setNodeChecked(node,checked,false);},this);}
this._updateCheckboxAncestors();if(!this.map){return;}
this._updateCachedObjects();function getVisibilityFromMap(){var layerVisibility={};Ext.each(this.map.layers,function(layer){var name=layer.name;layerVisibility[name]=layer.visibility;if(!(layer instanceof OpenLayers.Layer.WMS)&&!(layer instanceof OpenLayers.Layer.WMS.Untiled)&&!(layer instanceof OpenLayers.Layer.MapServer)&&!(layer instanceof OpenLayers.Layer.Google)&&!(layer instanceof OpenLayers.Layer.Vector))
{return;}
if(!this.layersWithSublayers[layer.name])
return;if(layer.isBaseLayer){OpenLayers.Console.error("Using sublayers on a base layer "+"is not supported (base layer is "+
name+")");}
if(!layer._origLayers){layer._origLayers=layer.params.LAYERS||layer.params.layers;}
var sublayers=layer._origLayers;if(sublayers instanceof Array){for(var j=0;j<sublayers.length;j++){var sublayer=sublayers[j];layerVisibility[name+this.separator+sublayer]=layer.visibility;}}},this);return layerVisibility;}
function updateVisibilityFromTree(layerVisibility){var forcedVisibility={};this.getRootNode().cascade(function(node){var checked=node.attributes.checked;var layerNames=node.attributes.layerNames;var radioGrp=null;if(!layerNames)
return;for(var i=0;i<layerNames.length;i++){var layerName=layerNames[i];if(!layerName)
continue;if(layerVisibility[layerName]==undefined)
OpenLayers.Console.error("Invalid layer: ",layerName);if(node.attributes.radio){radioGrp=node.attributes.radioGrp||"radioGrp";if(!radioButton[radioGrp])
radioButton[radioGrp]={};radioButton[radioGrp][layerName]=checked;}
if(forcedVisibility[layerName])
continue;if(node==clickedNode){if(this.baseLayerNames.indexOf(layerName)!=-1){clickedBaseLayer=layerName;}
if(radioGrp){clickedRadioButton[0]=radioGrp;clickedRadioButton[1]=layerName;}
forcedVisibility[layerName]=true;}
layerVisibility[layerName]=checked;}},this);return layerVisibility;}
function applyBaseLayerRestriction(layerVisibility,clickedBaseLayer,currentBaseLayerName){var numBaseLayer=0;for(var i=0;i<this.baseLayerNames.length;i++){if(layerVisibility[this.baseLayerNames[i]])
numBaseLayer++;}
if(numBaseLayer==1)
return layerVisibility;for(var i=0;i<this.baseLayerNames.length;i++){layerVisibility[this.baseLayerNames[i]]=false;}
if(clickedBaseLayer){layerVisibility[clickedBaseLayer]=true;return layerVisibility;}
if(!currentBaseLayerName)
return layerVisibility;layerVisibility[currentBaseLayerName]=true;return layerVisibility;}
function applyRadioButtonRestriction(layerVisibility,clickedRadioButton,radioButton){for(var radioGrp in radioButton){for(var layerName in radioButton[radioGrp]){if(clickedRadioButton[0]==radioGrp){layerVisibility[layerName]=layerName==clickedRadioButton[1];}else{layerVisibility[layerName]=radioButton[radioGrp][layerName];}}}
return layerVisibility;}
function updateTreeFromVisibility(layerVisibility){for(var layerName in layerVisibility){var nodeIds=this.layerToNodeIds[layerName];if(!nodeIds)
continue;for(var i=0;i<nodeIds.length;i++){var node=this.nodeIdToNode[nodeIds[i]];if(!node)
continue;var layerNames=node.attributes.layerNames;if(!layerNames){OpenLayers.Console.error("unexpected state");continue;}
var allChecked=true;for(var j=0;j<layerNames.length;j++){var layerName=layerNames[j];if(!layerName)
continue;if(!layerVisibility[layerName]){allChecked=false;break;}}
this.setNodeChecked(node,allChecked,false);}}}
function updateMapFromVisibility(layerVisibility){var wmsLayers={};for(var layerName in layerVisibility){var visible=layerVisibility[layerName];var splitName=layerName.split(this.separator);if(splitName.length!=2)
continue;delete layerVisibility[layerName];layerName=splitName[0];var sublayerName=splitName[1];if(!wmsLayers[layerName]){wmsLayers[layerName]=[];}
if(visible){wmsLayers[layerName].push(sublayerName);}}
for(layerName in wmsLayers){if(layerVisibility[layerName]!==undefined)
delete layerVisibility[layerName];}
for(var layerName in layerVisibility){var layer=this.layerNameToLayer[layerName];if(!layer){OpenLayers.Console.error("Non existing layer name",layerName);continue;}
if(this.baseLayerNames.indexOf(layerName)!=-1){if(layerVisibility[layerName]){this.map.setBaseLayer(layer);}}else{layer.setVisibility(layerVisibility[layerName]);}}
for(var layerName in wmsLayers){var layer=this.layerNameToLayer[layerName];var sublayers=wmsLayers[layerName];if(layer.isBaseLayer){OpenLayers.Console.error("base layer for sublayer "+"are not supported");return;}
if(sublayers.length==0){layer.setVisibility(false,true);}else{if(!this.enableDD){if(!layer._origLayers){OpenLayers.Console.error("Assertion failure");}
var origLayers=layer._origLayers;var orderedLayers=[];for(var i=0;i<origLayers.length;i++){var l=origLayers[i];if(sublayers.indexOf(l)!=-1)
orderedLayers.push(l);}
sublayers=orderedLayers;}
var layerParamName=layer.params.LAYERS?"LAYERS":"layers";if(!mapfish.IDEOL.Util.arrayEqual(layer.params[layerParamName],sublayers)){layer.params[layerParamName]=sublayers;layer.redraw();}
layer.setVisibility(true,true);}}}
var currentBaseLayerName;if(this.map.baseLayer)
currentBaseLayerName=this.map.baseLayer.name;var clickedBaseLayer;var radioButton={};var clickedRadioButton=[];var layerVisibility=getVisibilityFromMap.call(this);layerVisibility=updateVisibilityFromTree.call(this,layerVisibility);applyBaseLayerRestriction.call(this,layerVisibility,clickedBaseLayer,currentBaseLayerName);applyRadioButtonRestriction.call(this,layerVisibility,clickedRadioButton,radioButton);updateTreeFromVisibility.call(this,layerVisibility);updateMapFromVisibility.call(this,layerVisibility);},_extractOLModel:function LT__extractOLModel(){var layers=[];var layersArray=this.map.layers.slice();if(!this.ascending){layersArray.reverse();}
for(var i=0;i<layersArray.length;i++){var l=layersArray[i];var wmsChildren=[];if(l instanceof OpenLayers.Layer.WMS||l instanceof OpenLayers.Layer.WMS.Untiled||l instanceof OpenLayers.Layer.MapServer){var sublayers=l.params.LAYERS||l.params.layers;if(sublayers instanceof Array){for(var j=0;j<sublayers.length;j++){var w=sublayers[j];var iconUrl;if(this.showWmsLegend){iconUrl=mapfish.IDEOL.Util.getIconUrl(l.url,{layer:w});}
var wmsChild={text:w,checked:l.getVisibility(),icon:iconUrl,layerName:l.name+this.separator+w,children:[],cls:"cf-wms-node"};if(this.ascending){wmsChildren.push(wmsChild);}else{wmsChildren.unshift(wmsChild);}}}}
var info={text:l.name,checked:l.getVisibility(),layerName:(wmsChildren.length>0?null:l.name),children:wmsChildren};if(!l.displayInLayerSwitcher){info.uiProvider=function(){};info.uiProvider.prototype={render:function(){},renderIndent:function(){}};}
layers.push(info);}
return layers;},_updateOrder:function(){this._updateCachedObjects();function layerIndex(layers,name){for(var i=0;i<layers.length;i++){var l=layers[i];if(l.name==name)
return i;}
return-1;}
var orderedLayers=this.map.layers.slice();var seenLayers={};var nodes=[];this.getRootNode().cascade(function(node){if(this.ascending)
nodes.push(node);else
nodes.unshift(node);},this);Ext.each(nodes,function(node){var layers=this.nodeIdToLayers[node.id];if(!layers)
return;Ext.each(layers,function(layer){var layerName=layer.name;if(seenLayers[layerName])
return;seenLayers[layerName]=true;var index=layerIndex(orderedLayers,layerName);if(index==-1||!this.layerNameToLayer[layerName]){throw new Error("Layer "+layerName+" not available");}
orderedLayers.splice(index,1);orderedLayers.push(this.layerNameToLayer[layerName]);},this);},this);this._updateCheckboxAncestors();this.map.layers=orderedLayers;for(var i=0;i<this.map.layers.length;i++){this.map.setLayerZIndex(this.map.layers[i],i);}},_fixupModel:function(){this.getRootNode().cascade(function(node){var attrs=node.attributes;if(!attrs.layerNames&&attrs.layerName){attrs.layerNames=[attrs.layerName];delete attrs.layerName;}},this);if(this.map)
this._updateCachedObjects();this.getRootNode().cascade(function(node){var layers;if(!node.attributes.radio&&(!this.map||!(layers=this.nodeIdToLayers[node.id])))
return;var isBaseLayer=false;if(layers){isBaseLayer=true;Ext.each(layers,function(layer){if(!layer.isBaseLayer){isBaseLayer=false;return false;}},this);}
if(isBaseLayer||node.attributes.radio){if(node.attributes.uiProvider!=RadioTreeNodeUI){node.attributes.uiProvider=RadioTreeNodeUI;if(node.ui)
node.ui=new RadioTreeNodeUI(node);}}},this);},initComponent:function(){this.eventModel=new LayerTreeEventModel(this);LayerTree.superclass.initComponent.call(this);this.addListener("checkchange",function checkChange(node,checked){this._handleModelChange(node,checked);},this);this.addListener("radiochange",function radioChange(node,checked){this._handleModelChange(node,checked);},this);this._automaticModel=!this.model;if(!this.model){this.model=this._extractOLModel();}
var root={text:'Capas',draggable:false,id:'source',children:this.model,leaf:false};function buildTree(attributes){var node=new Ext.tree.TreeNode(attributes);var cs=attributes.children;node.leaf=!cs;if(!cs)
return node;for(var i=0;i<cs.length;i++){if(!cs[i]){continue;}
node.appendChild(buildTree(cs[i]));}
return node;}
var rootNode=buildTree(root);this.setRootNode(rootNode);this._fixupModel();this.addListener("dragdrop",function(){this._updateOrder(arguments);},this);if(!this._automaticModel){this._handleModelChange(null,null);if(this.enableDD)
this._updateOrder();}},onRender:function(container,position){if(!this.el){this.el=document.createElement('div');}
LayerTree.superclass.onRender.apply(this,arguments);}});Ext.reg('layertree',LayerTree);LayerTree.getNodeLayers=function(layerTree,node){var olLayers=[];node.cascade(function(subNode){var curLayers=layerTree.nodeIdToLayers[subNode.id];if(curLayers){olLayers=olLayers.concat(curLayers);}});return olLayers;};LayerTree.removeNode=function(layerTree,node){node.cascade(function(subNode){if(subNode.attributes&&subNode.attributes.layerNames){var layerNames=subNode.attributes.layerNames;for(var i=0;i<layerNames.length;++i){var layerName=layerNames[i].split(layerTree.separator);var olLayer=layerTree.layerNameToLayer[layerName[0]];var wmsLayer=layerName[1];var layerList;if(olLayer.params){if(olLayer.params.LAYERS){layerList=olLayer.params.LAYERS=IDEOL.Util.fixArray(olLayer.params.LAYERS);}else{layerList=olLayer.params.layers=IDEOL.Util.fixArray(olLayer.params.layers);}}
if(wmsLayer&&layerList){layerList.remove(wmsLayer);}
if(!wmsLayer||!layerList||layerList.length==0){olLayer.destroy();}else{olLayer.redraw();}}}});node.remove();layerTree._updateCachedObjects();};LayerTree.MenuFeatures={opacitySlide:function(layerTree,node,olLayers){if(olLayers.length==0)return null;return{iconCls:'opacityLayer',text:Locale.getText("txt_opacidad"),menu:{plain:true,items:[LayerTree.MenuFeatures.opacitySlideDirect(layerTree,node,olLayers)]}};},opacitySlideDirect:function(layerTree,node,olLayers){if(olLayers.length==0)return null;var value=0;for(var i=0;i<olLayers.length;++i){value+=olLayers[i].opacity==null?1.0:olLayers[i].opacity;}
value=value/olLayers.length;return new Ext.Slider({width:100,value:value*100,listeners:{change:function(slider,value){for(var j=0;j<olLayers.length;++j){olLayers[j].setOpacity(value/100.0);}}}});},remove:function(layerTree,node,olLayers){if(node.attributes.iconCls=='legendNode')return null;for(var i=0;i<olLayers.length;++i){var layer=olLayers[i];if(layer.isBaseLayer&&layer.getVisibility()){return null;}}
return{iconCls:'removeLayer',text:Locale.getText("txt_eliminar"),handler:function(){LayerTree.removeNode(layerTree,node);}};},zoomToExtent:function(layerTree,node,olLayers){if(olLayers.length==0)return null;var bbox=null;for(var i=0;i<olLayers.length;++i){var layer=olLayers[i];if(bbox){bbox.extend(layer.maxExtent);}else{bbox=layer.maxExtent.clone();}}
return{iconCls:'zoomToExtent',text:Locale.getText('txt_zoom'),handler:function(){bbox.transform(olLayers[0].projection,new OpenLayers.Projection(layerTree.map.getProjection()));layerTree.map.zoomToExtent(bbox);}};},startEdition:function(layerTree,node,olLayers){if(node.attributes.iconCls=='layerNodeVector'){var text=Locale.getText("txt_comenzar_edicion");if(node.attributes.edition)
text=Locale.getText("txt_terminar_edicion");return{text:text,scope:this,handler:function(){if(text==Locale.getText("txt_comenzar_edicion"))
layerTree.fireEvent("startEdition",node);else
layerTree.fireEvent("stopEdition",node);}};}}};LayerTree.createContextualMenuPlugin=function(options){return{init:function(layerTree){function openMenu(node,e){var olLayers=LayerTree.getNodeLayers(layerTree,node);var items=[];for(var j=0;j<options.length;++j){var constructor=LayerTree.MenuFeatures[options[j]];var menuItem=constructor(layerTree,node,olLayers);if(menuItem){items.push(menuItem);}}
if(items.length>0){var menu=new Ext.menu.Menu({id:'tocMenu',ignoreParentClick:true,defaults:{scope:layerTree},items:items});menu.showAt(e.getXY());menu.on('hide',function(){menu.destroy();});}}
if(Ext.isOpera){layerTree.on('click',function(node,e){if(e.hasModifier()){e.stopEvent();openMenu(node,e);}});}else{layerTree.on('contextMenu',function(node,e){e.stopEvent();openMenu(node,e);});}}};};Ext.namespace("IDEOL.Widget");IDEOL.Widget.Toc=OpenLayers.Class({div:null,map:null,tree:null,treeEditor:null,selectedNode:null,mask:null,statusBar:null,EVENT_TYPES:["layerSelected","noLayersSelected","startEdition","stopEdition"],events:null,createGroupItemFunction:function(layerTree,node,olLayers){return{iconCls:'groupNode',text:Locale.getText("txt_grupo"),qtip:Locale.getText("txt_nuevo_grupo"),scope:this,handler:function(){window.ideol.toc.createGroup(Locale.getText("txt_grupo"),false);window.ideol.toc.updateTree();}};},editNodeItemFunction:function(layerTree,node,olLayers){if(node.attributes.iconCls=='legendNode')return null;return{text:Locale.getText("txt_renombrar"),qtip:Locale.getText("txt_renombrar"),scope:this,handler:function(){window.ideol.toc.treeEditor.editNode=node;window.ideol.toc.treeEditor.startEdit(node.getUI().getTextEl());}};},sldStyleItemFunction:function(layerTree,node,olLayers){return{iconCls:'sldStyle',text:OpenLayers.Lang.translate('SLD'),scope:this,handler:function(){}};},initialize:function(){this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);LayerTree.MenuFeatures.createGroup=this.createGroupItemFunction;LayerTree.MenuFeatures.editNode=this.editNodeItemFunction;LayerTree.MenuFeatures.sldStyle=this.sldStyleItemFunction;},prepare:function(divID,mapOL,rootTitle){this.div=divID;this.map=mapOL;if(this.tree!=null){this.selectedNode=null;this.destroyTree();}
this.tree=new LayerTree({border:false,autoScroll:true,map:this.map,el:this.div,bodyStyle:'padding:5px 0 5px 0',enableDD:true,rootVisible:false,ascending:false,plugins:[LayerTree.createContextualMenuPlugin(['opacitySlide','zoomToExtent','remove','createGroup','startEdition'])]});this.tree.on("startEdition",function(node){this.events.triggerEvent("startEdition",node);},this);this.tree.on("stopEdition",function(node){this.events.triggerEvent("stopEdition",node);},this);this.tree.on('click',function(node,event){if(this.selectedNode!=node){if(node.attributes.iconCls=='layerNode'||node.attributes.iconCls=='layerNodeInfo'||node.attributes.iconCls=='layerNodeVector'){this.selectedNode=node;this.statusBar.updateSelectedLayerName(this.selectedNode.text);this.events.triggerEvent("layerSelected",this.selectedNode.text);}
else{this.selectedNode=null;this.statusBar.updateSelectedLayerName(Locale.getText("txt_sin_seleccion"));this.events.triggerEvent("noLayersSelected");}}},this);this.tree.on('expand',function(tree){this.lastSize=tree.lastSize;tree.body.setHeight(tree.adjustBodyHeight(this.lastSize.height-tree.getFrameHeight()));},this);this.tree.on('resize',function(tree){if(this.lastSize!=null)
tree.body.setHeight(tree.adjustBodyHeight(this.lastSize.height-tree.getFrameHeight()));},this);this.treeEditor=new Ext.tree.TreeEditor(this.tree,{cancelOnEsc:true,completeOnEnter:true,ignoreNoChange:true});this.treeEditor.on('beforestartedit',function(editor,boundEl,value){return false;if(editor.editNode.attributes.iconCls=='legendNode')
return false;return true;},this);this.treeEditor.on('beforecomplete',function(editor,newValue,originalValue){if(newValue!=originalValue){if(editor.editNode.attributes.iconCls!='groupNode'&&editor.editNode.attributes.iconCls!='legendNode'){var layer=this.getLayerMap(newValue);if(!layer){var layer=this.getLayerMap(originalValue);layer.name=newValue;editor.editNode.attributes.layerNames=[newValue];this.tree._updateCachedObjects();return true;}
else{editor.cancelEdit();IDEOL.UtilUI.showMessageWindow("Información","La capa "+layer.name+" ya existe en el mapa.",Ext.MessageBox.ERROR);return false;}}}
return true;},this);this.reloadTree(rootTitle);this.map.events.register('addlayer',this,this.onAddLayerOnMap);this.registerLayersEvents(this.map.layers);},setStatusBar:function(statusBar){this.statusBar=statusBar;},setEditableNode:function(node,bool){var textEl=Ext.get(node.getUI().textNode);node.attributes.edition=bool;if(bool){textEl.replaceClass('textblack','textred');}
else{textEl.replaceClass('textred','textblack');}},setEditableNodeByLayerName:function(layerName,bool){var node=this.getNodeByLayerName(layerName);this.setEditableNode(node,bool);},destroyTree:function(){if(this.tree.rendered){this.tree.body.removeAllListeners();Ext.dd.ScrollManager.unregister(this.tree.body);if(this.tree.dropZone){this.tree.dropZone.unreg();}
if(this.tree.dragZone){this.tree.dragZone.unreg();}}
this.tree.root.destroy();this.tree.nodeHash=null;},reloadTree:function(rootTitle){this.deleteAllNodes();this.tree.getRootNode().setText(rootTitle);this.createBaseLayer();this.createLayers();this.updateTree();},updateTree:function(){this.tree._extractOLModel();this.tree._fixupModel();this.tree._handleModelChange(null,null);this.tree._updateOrder();this.tree.render();},onAddLayerOnMap:function(event){var layer=event.layer;this.addLayer(layer);},onLayerVisibilityChanged:function(event){var layer=event.object;this.setLayerChecked(layer.name,layer.visibility);},registerLayersEvents:function(layers){for(var i=0;i<layers.length;i++){var layer=layers[i];layer.events.register('visibilitychanged',this,this.onLayerVisibilityChanged);}},addLayer:function(layer){if(this.getNodeByLayerName(layer.name)==null){if(!layer.isBaseLayer&&layer.displayInLayerSwitcher){this.registerLayersEvents([layer]);var layerNode=this.createLayerNode(layer);var rootNode=this.tree.getRootNode();var index=this.tree.baseLayerNames.length;rootNode.insertBefore(layerNode,rootNode.item(index));this.updateTree();}}
else{IDEOL.UtilUI.showMessageWindow("Información","La capa "+layer.name+" ya existe en el mapa.",Ext.MessageBox.ERROR);}},setLayerChecked:function(layerName,bool){var node=this.getNodeByLayerName(layerName);this.tree.setNodeChecked(node,bool,false);},getNodeByLayerName:function(layerName){var node=null;if(!layerName)
return null;var nodeIds=this.tree.layerToNodeIds[layerName];if(!nodeIds)
return null;for(var i=0;i<nodeIds.length;i++){var node=this.tree.nodeIdToNode[nodeIds[i]];if(!node)
continue;return node;}},isLayerMap:function(layer){var layers=this.map.getLayersByName(layer.name);if(layers.length>0)
return true;return false;},getLayerMap:function(layerName){var arrayLayers=this.map.getLayersByName(layerName);if(arrayLayers.length==1)
return arrayLayers[0];return null;},deleteAllNodes:function(){var node=this.tree.getRootNode();while(node.firstChild){node.removeChild(node.firstChild);}},getTree:function(){return this.tree;},createBaseLayer:function(){var layers=this.map.layers;var rootnode=this.tree.getRootNode();for(var i=0;i<layers.length;i++){if(layers[i].isBaseLayer){this.tree.baseLayerNames.push(layers[i].name);var layerNode=new Ext.tree.TreeNode({text:layers[i].name,radio:true,layerNames:[layers[i].name],expanded:false,draggable:false,isTarget:false,checked:layers[i].getVisibility(),iconCls:'baseNode',qtip:layers[i].name});rootnode.appendChild(layerNode);}}},createGroup:function(group,append){var rootnode=this.tree.getRootNode();var node={text:group,expanded:true,checked:false,iconCls:'groupNode',draggable:true,allowDrop:true,qtip:group};var nodeGroup=new Ext.tree.TreeNode(node);nodeGroup.on('beforeappend',function(tree,node,childNode,refNode){var iconCls=childNode.attributes.iconCls;if(iconCls=='groupNode')
return false;},this);nodeGroup.on('beforeinsert',function(tree,node,childNode,refNode){var iconCls=childNode.attributes.iconCls;if(iconCls=='groupNode')
return false;},this);nodeGroup.on('textchange',function(node,text,oldText){var childNodes=node.childNodes;for(var i=0;i<childNodes.length;i++){var layerName=childNodes[i].attributes.text;var layer=this.getLayerMap(layerName);layer.groupDisplayLayerSwitcher=node.attributes.text;}},this);if(append)
rootnode.appendChild(nodeGroup);else{var index=this.tree.baseLayerNames.length;rootnode.insertBefore(nodeGroup,rootnode.item(index));}},createLayers:function(){var layers=this.map.layers;var rootnode=this.tree.getRootNode();for(var i=layers.length-1;i>=0;i--){var layer=layers[i];if(!layer.isBaseLayer&&layer.displayInLayerSwitcher){var layerNode=this.createLayerNode(layer);layerNode.on('move',function(tree,node,oldParent,newParent,index){var layerName=node.attributes.text;var layer=this.getLayerMap(layerName);if(newParent.attributes.iconCls=='groupNode'){layer.groupDisplayLayerSwitcher=newParent.attributes.text;}
else{layer.groupDisplayLayerSwitcher='';}},this);if(layer.groupDisplayLayerSwitcher){var group=rootnode.findChild('text',layer.groupDisplayLayerSwitcher);if(group){group.appendChild(layerNode);}
else{this.createGroup(layer.groupDisplayLayerSwitcher,true);group=rootnode.findChild('text',layer.groupDisplayLayerSwitcher);group.appendChild(layerNode);}}
else{rootnode.appendChild(layerNode);}}}},createLayerNode:function(layer){var layerNode;if(layer.name){if(!layer.isVector){var styleUrl=this.getFirstLayerStyleUrl(layer);if(styleUrl){legendNode=new Ext.tree.TreeNode({draggable:false,allowChildren:false,iconCls:'legendNode',leaf:true,icon:styleUrl});}
else{legendNode=new Ext.tree.TreeNode({draggable:false,allowChildren:false,iconCls:'legendNode',leaf:true,icon:IDEOL.Util.getIconUrl(layer.url,{layer:layer.params.LAYERS})});}}
var inconClsLayer='layerNode';var qtipText=layer.name;if(layer.isVector){inconClsLayer='layerNodeVector';}
else if(layer.queryable){inconClsLayer='layerNodeInfo';qtipText=layer.name+" ("+Locale.getText("txt_consultable")+")";}
layerNode=new Ext.tree.TreeNode({text:layer.name,layerNames:[layer.name],expanded:false,checked:layer.getVisibility(),allowDrop:false,iconCls:inconClsLayer,qtip:qtipText});layerNode.on('move',function(tree,node,oldParent,newParent,index){var layerName=node.attributes.text;var layer=this.getLayerMap(layerName);if(newParent.attributes.iconCls=='groupNode'){layer.groupDisplayLayerSwitcher=newParent.attributes.text;}
else{layer.groupDisplayLayerSwitcher='';}},this);if(!layer.isVector){layerNode.appendChild(legendNode);}}
return layerNode;},getFirstLayerStyleUrl:function(layer){var url=null;if(layer.styles){if(layer.styles.length>0){if(layer.styles[0].legend){if(layer.styles[0].legend.href){url=layer.styles[0].legend.href;}}}}
return url;}});Ext.namespace("IDEOL.Manager");IDEOL.Manager.Filter=OpenLayers.Class({initialize:function(){},getComparisonFilter:function(type,property,value,matchCase){var filter=new OpenLayers.Filter.Comparison({type:type,property:property,matchCase:matchCase,value:value});return filter;},getLogicalFilter:function(type,filters){if(filters==null)
filters=[];var filter=new OpenLayers.Filter.Logical({type:type,filters:filters});return filter;},getFeatureIdFilter:function(fids){var filter=new OpenLayers.Filter.FeatureId({fids:fids});return filter;},getSpatialFilter:function(type,value){var filter=new OpenLayers.Filter.Spatial({type:type,value:value});return filter;}});Ext.namespace("IDEOL.Manager");IDEOL.Manager.XSL=OpenLayers.Class({initialize:function(){},transformXML:function(xmlDocument,xslString){var xmlString=new XMLSerializer().serializeToString(xmlDocument);var xml=xmlParse(xmlString);var xslt=xmlParse(xslString);var html=xsltProcess(xml,xslt);return html;},transformString:function(xmlString,xslString){var xml=xmlParse(xmlString);var xslt=xmlParse(xslString);var html=xsltProcess(xml,xslt);return html;},CLASS_NAME:"IDEOL.Manager.XSL"});Ext.namespace("IDEOL.Manager");IDEOL.Manager.Map=OpenLayers.Class({scales:Config.SCALES,loadLayerCount:0,sphericalMercatorOptions:{projection:new OpenLayers.Projection("EPSG:900913"),displayProjection:new OpenLayers.Projection("EPSG:900913"),units:"m",numZoomLevels:18,maxResolution:156543.0339,controls:[new OpenLayers.Control.KeyboardDefaults(),new OpenLayers.Control.MouseDefaults({'performedDrag':false}),new OpenLayers.Control.ScaleLine()]},initialize:function(options){OpenLayers.Util.extend(this,options);},getMapOptions:function(projection){var units=this.getUnits(projection);var resolutions=this.getResolutions(projection);var mapOptions={units:units,resolutions:resolutions,controls:[new OpenLayers.Control.MouseDefaults({'performedDrag':false}),new OpenLayers.Control.ScaleLine()]};return mapOptions;},getResolutions:function(projection){var scales=this.scales;var resolutions=[];var units=this.getUnits(projection);for(var i=0;i<scales.length;i++){var resolution=OpenLayers.Util.getResolutionFromScale(scales[i],units);resolutions.push(resolution);}
return resolutions;},getUnits:function(projection){var units='m';if(projection=='EPSG:4326'){units='dd';}
return units;},isValidReprojection:function(context,projCode){return true;},contextToMap:function(oldMap,context,divID){var map;if(context!=null&&divID!=null){if(oldMap!=null){oldMap.destroy();}
var maxExtent=context.maxExtent;var projection=context.projection;var mapOptions=this.getMapOptions(projection);map=new OpenLayers.Map(divID,mapOptions);map.maxExtent=maxExtent;map.projection=new OpenLayers.Projection(projection);map.displayProjection=new OpenLayers.Projection(projection);map.addControl(new OpenLayers.Control.PanZoomBar({zoomWorldIcon:true}));if(map.projection=='EPSG:900913'){this.loadSphericalMercatorLayers(map);map.displayProjection=new OpenLayers.Projection("EPSG:4326");map.numZoomLevels=20;map.maxResolution=156543.0339;}
var bounds=context.bounds;var layers=context.layers;this.registerMapEvents(map);map.addLayers(layers);map.setCenter(bounds.getCenterLonLat(),map.getZoomForExtent(bounds,true));}
return map;},reprojectedContextToMap:function(oldMap,context,divID,projCode){var map;if(context!=null&&divID!=null){if(this.isValidReprojection(context,projCode)){var oldBoundsMap=null;var oldProjectionMap=null;if(oldMap!=null){if(oldMap.getExtent()!=null){oldBoundsMap=oldMap.getExtent().clone();}
oldProjectionMap=new String(oldMap.getProjection());oldMap.destroy();}
var mapOptions=this.getMapOptions(projCode);map=new OpenLayers.Map(divID,mapOptions);var maxExtent=context.maxExtent;var projection=context.projection;map.maxExtent=maxExtent;map.maxExtent.transform(new OpenLayers.Projection(projection),new OpenLayers.Projection(projCode));map.projection=new OpenLayers.Projection(projCode);map.displayProjection=new OpenLayers.Projection(projCode);map.addControl(new OpenLayers.Control.PanZoomBar({zoomWorldIcon:true}));if(map.projection=='EPSG:900913'){this.loadSphericalMercatorLayers(map);map.displayProjection=new OpenLayers.Projection("EPSG:4326");map.numZoomLevels=20;map.maxResolution=156543.0339;}
var layers=context.layers;var projection=context.projection;var bounds=context.bounds;for(var i=0;i<layers.length;i++){var layer=layers[i];layer.maxExtent.transform(new OpenLayers.Projection(projection),new OpenLayers.Projection(projCode));}
this.registerMapEvents(map);map.addLayers(layers);if(oldBoundsMap!=null){oldBoundsMap.transform(new OpenLayers.Projection(oldProjectionMap),new OpenLayers.Projection(projCode));map.setCenter(oldBoundsMap.getCenterLonLat(),map.getZoomForExtent(oldBoundsMap,true));}
else{bounds.transform(new OpenLayers.Projection(projection),new OpenLayers.Projection(projCode));map.setCenter(bounds.getCenterLonLat(),map.getZoomForExtent(bounds,true));}}}
return map;},createWMCMap:function(oldMap,context,divID,projCode){var map;if(projCode==null){map=this.contextToMap(oldMap,context,divID);}
else{map=this.reprojectedContextToMap(oldMap,context,divID,projCode);}
return map;},onMapMoveStart:function(event){},onLayerLoadStart:function(event){var layer=event.object;layer.loadStartTime=new Date().getTime();this.loadLayerCount++;if(this.loadLayerCount==1){this.statusBar.showBusy(Locale.getText("msg_obteniendo_capa")+" "+layer.name);}
else{this.statusBar.showBusy(Locale.getText("msg_obteniendo_capas")+" ("+this.loadLayerCount+")");}},onLayerLoadEnd:function(event){var layer=event.object;if(layer.loadStartTime){var loadEndTime=new Date().getTime();this.loadLayerCount--;var elapsedTime=loadEndTime-layer.loadStartTime;var vectorText="";if(layer.isVector)
vectorText=Locale.getText("txt_vector")+" ";if(this.loadLayerCount==0){this.statusBar.setStatus({text:Locale.getText("txt_finalizado")+".  &nbsp;"+layer.name+"  ("+vectorText+elapsedTime+" ms)",iconCls:'x-status-valid'});var task=new Ext.util.DelayedTask(function(){this.statusBar.clearStatus();},this);task.delay(5000);}
else{this.statusBar.showBusy(Locale.getText("msg_obteniendo_capas")+" ("+this.loadLayerCount+") &nbsp;"+layer.name+"  ("+vectorText+elapsedTime+" ms)");}}},onLayerLoadCancel:function(event){this.onLayerLoadEnd(event);},onAddLayerOnMap:function(event){var layer=event.layer;this.registerLayerEvents([layer]);},registerLayerEvents:function(layers){for(var i=0;i<layers.length;i++){var layer=layers[i];layer.events.register('loadstart',this,this.onLayerLoadStart);layer.events.register('loadend',this,this.onLayerLoadEnd);layer.events.register('loadcancel',this,this.onLayerLoadCancel);}},registerMapEvents:function(map){map.events.register('addlayer',this,this.onAddLayerOnMap);map.events.register('movestart',this,this.onMapMoveStart);},loadSphericalMercatorLayers:function(map){layers={yahoo:new OpenLayers.Layer.Yahoo("Yahoo Street",{'sphericalMercator':true}),yahoosat:new OpenLayers.Layer.Yahoo("Yahoo Satellite",{'type':YAHOO_MAP_SAT,'sphericalMercator':true}),yahoohyb:new OpenLayers.Layer.Yahoo("Yahoo Hybrid",{'type':YAHOO_MAP_HYB,'sphericalMercator':true}),ghyb:new OpenLayers.Layer.Google("Google Hybrid",{type:G_HYBRID_MAP,'sphericalMercator':true,numZoomLevels:21}),gmap:new OpenLayers.Layer.Google("Google Streets",{'sphericalMercator':true,numZoomLevels:20}),gsat:new OpenLayers.Layer.Google("Google Satellite",{type:G_SATELLITE_MAP,'sphericalMercator':true,numZoomLevels:22})};this.registerLayerEvents(layers);for(key in layers){map.addLayer(layers[key]);}},CLASS_NAME:"IDEOL.Manager.Map"});Ext.namespace("IDEOL.Manager");IDEOL.Manager.Export=OpenLayers.Class({formatWMC:new OpenLayers.Format.WMC(),initialize:function(){},getWMCString:function(map){var WMCString=this.formatWMC.write(map);return WMCString;}});Ext.namespace("IDEOL.Manager");IDEOL.Manager.Controls=OpenLayers.Class({map:null,styles:null,controls:{zoomIn:null,zoomOut:null,pan:null,zoomFull:null,nav:null,measureDistance:null,measureArea:null,mousePositionControl:null,scaleControl:null},initialize:function(mapOL,stylesOL){this.map=mapOL;this.styles=stylesOL;this.controls.zoomIn=new OpenLayers.Control.ZoomBox();this.controls.zoomOut=new OpenLayers.Control.ZoomBox({out:true,cursorClass:'olControlZoomOutBoxCursor',handlerOptions:{cursorClasses:{'startBox':'crossHair','endBox':'olControlZoomOutBoxCursor'}}});this.controls.pan=new OpenLayers.Control.DragPan({isDefault:true});this.controls.zoomFull=new OpenLayers.Control.ZoomToMaxExtent();this.controls.nav=new OpenLayers.Control.NavigationHistory();this.controls.measureDistance=new OpenLayers.Control.Measure(OpenLayers.Handler.Path,{handlerOptions:{style:"default",layerOptions:{styleMap:this.styles.measureStyleMap}}});this.controls.measureArea=new OpenLayers.Control.Measure(OpenLayers.Handler.Polygon,{handlerOptions:{style:"default",layerOptions:{styleMap:this.styles.measureStyleMap}}});this.controls.measureDistance.events.on({"measure":this.handleMeasurements,"measurepartial":this.handleMeasurements});this.controls.measureArea.events.on({"measure":this.handleMeasurements,"measurepartial":this.handleMeasurements});this.controls.mousePositionControl=new OpenLayers.Control.MousePosition({element:$('mousePositionInfo')});this.controls.scaleControl=new IDEOL.Control.ScaleControl();for(key in this.controls){if(this.controls[key]!=null)
this.map.addControl(this.controls[key]);}},handleMeasurements:function(event){var geometry=event.geometry;var units=event.units;var order=event.order;var measure=event.measure;var element=document.getElementById('measureInfo');var out="";if(order==1){out+="<b>"+Locale.getText("txt_longitud")+"</b>: "+measure.toFixed(3)+" "+units;}else{out+="<b>"+Locale.getText("txt_area")+"</b>: "+measure.toFixed(3)+" "+units+"2";}
element.visibility='visible';element.innerHTML=out;},cleanMeasurements:function(){var element=document.getElementById('measureInfo');element.innerHTML='';},activateControl:function(control){this.cleanMeasurements();this.deactivateControls();control.activate();},deactivateControls:function(){var controls=this.map.controls;for(var i=0;i<controls.length;i++){if(controls[i]instanceof OpenLayers.Control.NavigationHistory==false){controls[i].deactivate();}}},CLASS_NAME:"IDEOL.Manager.Controls"});Ext.namespace("IDEOL.Manager");IDEOL.Manager.WMC=OpenLayers.Class({format:new OpenLayers.Format.WMC({version:"1_1_0g"}),initialize:function(){},isValidWMC:function(contextURL){var context=null;if(contextURL!=null){var wmcText=this.getWMCString(contextURL);if(wmcText!=null){var context=this.format.read(wmcText,{});if(context.version!=null&&context.projection!=null&&context.maxExtent!=null){return context;}}}
return context;},getWMCString:function(contextURL){var wmcText;var request=OpenLayers.Request.GET({proxy:IDEOL.Util.getProxy(contextURL),url:contextURL,success:function(transport){wmcText=transport.responseText;},failure:function(transport){wmcText=null;},async:false});return wmcText;},getWMCObjectByText:function(wmcText){return this.format.read(wmcText,{});},getWMCStringMap:function(map){var WMCString=this.format.write(map);return WMCString;},getBaseLayers:function(context){var layers=context.layers;var baseLayers=[];for(var int=0;int<layers.length;int++){if(layers[int].isBaseLayer)
baseLayers.push(layers[int]);}
return baseLayers;},CLASS_NAME:"IDEOL.Manager.WMC"});Ext.namespace("IDEOL.Manager");IDEOL.Manager.WMS=OpenLayers.Class({featureInfoFormat:new OpenLayers.Format.WMSGetFeatureInfo(),capabFormat:new OpenLayers.Format.WMSCapabilities(),describeLayerFormat:new OpenLayers.Format.WMSDescribeLayer(),initialize:function(){},getFeatures:function(layer,xy,onSuccess,onFailure,scope){var url=layer.getFullRequestString({REQUEST:"GetFeatureInfo",EXCEPTIONS:"application/vnd.ogc.se_xml",BBOX:layer.map.getExtent().toBBOX(),X:xy.x,Y:xy.y,BUFFER:15,INFO_FORMAT:'application/vnd.ogc.gml',QUERY_LAYERS:layer.params.LAYERS,FEATURE_COUNT:50,SRS:layer.map.projection,WIDTH:layer.map.size.w,HEIGHT:layer.map.size.h});OpenLayers.Request.GET({proxy:IDEOL.Util.getProxy(url),url:url,success:function(response){var features=[];features=this.featureInfoFormat.read(response.responseText);var isXHTML;if(features.length>0||features.indexOf("wfs:FeatureCollection")){isXHTML=false;onSuccess.apply(scope,[features,isXHTML]);}
else{isXHTML=true;onSuccess.apply(scope,[response.responseText,isXHTML]);}},failure:function(response){onFailure.apply(scope,[response]);},scope:this});},getCapabilities:function(wmsServer,onSuccess,onFailure,scope){OpenLayers.Request.GET({proxy:IDEOL.Util.getProxy(wmsServer),url:wmsServer,params:{service:"WMS",request:"GetCapabilities"},success:function(response){var capabObject=this.capabFormat.read(response.responseXML);onSuccess.apply(scope,[capabObject]);},failure:function(response){onFailure.apply(scope,[response]);},scope:this});},getLayers:function(wmsServer,onSuccess,onFailure,scope){OpenLayers.Request.GET({proxy:IDEOL.Util.getProxy(wmsServer),url:wmsServer,params:{service:"WMS",request:"GetCapabilities"},success:function(response){var capabObject=this.capabFormat.read(request.responseXML);var layers=capabObject.capability.layers;onSuccess.apply(scope,[layers]);},failure:function(response){onFailure.apply(scope,[response]);},scope:this});},getDescribeLayer:function(layer,onSuccess,onFailure,scope){var url=layer.getFullRequestString({REQUEST:"DescribeLayer",EXCEPTIONS:"application/vnd.ogc.se_xml",INFO_FORMAT:'application/vnd.ogc.gml',QUERY_LAYERS:layer.params.LAYERS});OpenLayers.Request.GET({proxy:IDEOL.Util.getProxy(url),url:url,success:function(response){var describeLayerObject=this.describeLayerFormat.read(request.responseXML);onSuccess.apply(scope,[describeLayerObject]);},failure:function(response){onFailure.apply(scope,[response]);},scope:this});}});Ext.namespace("IDEOL.Manager");IDEOL.Manager.WFS=OpenLayers.Class({WFS_VERSION:"1.1.0",initialize:function(){},xmlFormat:new OpenLayers.Format.XML(),wfsDescribeFeatureFormat:new OpenLayers.Format.WFSDescribeFeatureType(),filterFormat:new OpenLayers.Format.Filter({version:"1_1_0"}),capabilitiesFormat:new OpenLayers.Format.WFSCapabilities(),getCapabilities:function(wfsServer,onSuccess,onFailure,scope){OpenLayers.Request.GET({proxy:IDEOL.Util.getProxy(wfsServer),url:wfsServer,params:{service:"WFS",version:this.WFS_VERSION,request:"GetCapabilities"},success:function(response){var capabObject=this.capabilitiesFormat.read(response.responseXML);onSuccess.apply(scope,[capabObject]);},failure:function(response){onFailure.apply(scope,[response]);},scope:this});},getFeaturesByFilter:function(layer,propertiesToRequest,filter,onSuccess,onFailure,scope){var data=this.getQueryData(layer,propertiesToRequest,filter);OpenLayers.Request.POST({proxy:IDEOL.Util.getProxy(layer.url),url:layer.url,data:data,success:function(response){var gmlFormat=new OpenLayers.Format.GML();var features=[];features=gmlFormat.read(response.responseXML);onSuccess.apply(scope,[features]);},failure:function(response){onFailure.apply(scope,[response]);}});},getQueryData:function(layer,propertiesToRequest,filter){var properties_to_request="";if(propertiesToRequest!=""||propertiesToRequest.length>0){for(var i=0;i<propertiesToRequest.length;i++){properties_to_request=properties_to_request+'<wfs:PropertyName>'+propertiesToRequest[i]+'</wfs:PropertyName>';}}
var prefix="";if(layer.featurePrefix&&layer.featurePrefix.trim()!="")
prefix=layer.featurePrefix+":";var data='<wfs:GetFeature service="WFS" version="'+this.WFS_VERSION+'" outputFormat="GML2"'
+' xmlns:wfs="http://www.opengis.net/wfs"'
+' xmlns:ogc="http://www.opengis.net/ogc"'
+' xmlns:gml="http://www.opengis.net/gml"'
+' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'
+' xmlns:app="http://www.deegree.org/app"'
+' xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"'
+' resultType="results">'
+'<wfs:Query typeName="'+prefix+layer.featureType+'">'
+properties_to_request
+this.xmlFormat.write(this.filterFormat.write(filter))
+'</wfs:Query>'
+'</wfs:GetFeature>';return data;},getDescribeFeatureURL:function(server,featurePrefix,featureType,featureNS){var url=server+"?SERVICE=WFS&VERSION="+this.WFS_VERSION+"&REQUEST=DescribeFeatureType";if(featurePrefix&&featureType){url+="&typename="+featurePrefix+":"+featureType;}
else if(featureType)
url+="&typename="+featureType;if(featurePrefix&&featureNS)
url+="&namespace=xmlns("+featurePrefix+"="+featureNS+")";return url;},getDescribeFeatureSyncServer:function(server,featurePrefix,featureType){var url=this.getDescribeFeatureURL(server,featurePrefix,featureType);var describeFeature=null;OpenLayers.Request.GET({proxy:IDEOL.Util.getProxy(url),url:url,success:function(response){describeFeature=this.wfsDescribeFeatureFormat.read(response.responseXML);},failure:function(response){describeFeature=response;},async:false,scope:this});return describeFeature;},getDescribeFeatureSync:function(layer){var url=this.getDescribeFeatureURL(layer.url,layer.featurePrefix,layer.featureType);var describeFeature=null;OpenLayers.Request.POST({proxy:IDEOL.Util.getProxy(url),url:url,success:function(response){describeFeature=this.wfsDescribeFeatureFormat.read(response.responseXML);},failure:function(response){describeFeature=response;},async:false,scope:this});return describeFeature;},getLayerAttributes:function(layer,onSuccess,onFailure,scope){var url=this.getDescribeFeatureURL(layer.url,layer.featurePrefix,layer.featureType);OpenLayers.Request.POST({proxy:IDEOL.Util.getProxy(url),url:url,success:function(response){var describeFeature=this.wfsDescribeFeatureFormat.read(response.responseXML);var attNames=this.getDescribeFeatureAttNames(describeFeature);onSuccess.apply(scope,[attNames]);},failure:function(response){onFailure.apply(scope,[response]);},scope:this});},getLayerAttributesSync:function(layer){var url=this.getDescribeFeatureURL(layer.url,layer.featurePrefix,layer.featureType);var attributes=null;OpenLayers.Request.POST({proxy:IDEOL.Util.getProxy(url),url:url,success:function(response){var describeFeature=this.wfsDescribeFeatureFormat.read(response.responseXML);attributes=this.getDescribeFeatureAttNames(describeFeature);},failure:function(response){attributes=response;},async:false,scope:this});return attributes;},getDescribeFeatureAttNames:function(describeFeature){var names=[];if(describeFeature.featureTypes.length>0){var describeFeatureProperties=describeFeature.featureTypes[0].properties;for(var i=0;i<describeFeatureProperties.length;i++){names.push(describeFeatureProperties[i].name);}}
return names;},getFeatureURLBBOX:function(server,featurePrefix,featureType,bounds){var url=server+"?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature";var prefix="";if(featurePrefix&&featurePrefix.trim()!="")
prefix=featurePrefix+":";if(featureType)
url+="&typename="+prefix+featureType;if(bounds)
url+="&BBOX="+bounds.toBBOX();return url;},getFeaturesByBBOX:function(layer,bounds,onSuccess,onFailure,scope){if(bounds!=null){var url=this.getFeatureURLBBOX(layer.url,layer.featurePrefix,layer.featureType,bounds);OpenLayers.Request.GET({proxy:IDEOL.Util.getProxy(url),url:url,success:function(response){var wfsFormat=new OpenLayers.Format.GML();features=wfsFormat.read(response.responseXML);onSuccess.apply(scope,[features]);},failure:function(response){onFailure.apply(scope,[response]);},scope:this});}},updateFeatures:function(layer,features,onSuccess,onFailure,scope){var wfsFormat=new OpenLayers.Format.WFS({},layer);var updateTransaction='<wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" version="1.0.0" service="WFS">';for(var i=0;i<features.length;i++){updateTransaction+=this.xmlFormat.write(wfsFormat.update(features[i]));}
updateTransaction+='</wfs:Transaction>';OpenLayers.Request.POST({proxy:IDEOL.Util.getProxy(layer.url),url:layer.url,data:updateTransaction,success:function(response){onSuccess.apply(scope,[response]);},failure:function(response){onFailure.apply(scope,[response]);}});},insertFeatures:function(layer,features,onSuccess,onFailure,scope){var wfsFormat=new OpenLayers.Format.WFS({},layer);var insertTransaction='<wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" version="1.0.0" service="WFS">';for(var i=0;i<features.length;i++){insertTransaction+=this.xmlFormat.write(wfsFormat.insert(features[i]));}
insertTransaction+='</wfs:Transaction>';OpenLayers.Request.POST({proxy:IDEOL.Util.getProxy(layer.url),url:layer.url,data:insertTransaction,success:function(response){onSuccess.apply(scope,[response]);},failure:function(response){onFailure.apply(scope,[response]);}});},deleteFeatures:function(layer,features,onSuccess,onFailure,scope){var wfsFormat=new OpenLayers.Format.WFS({},layer);var deleteTransaction='<wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" version="1.0.0" service="WFS">';for(var i=0;i<features.length;i++){deleteTransaction+=this.xmlFormat.write(wfsFormat.remove(features[i]));}
deleteTransaction+='</wfs:Transaction>';OpenLayers.Request.POST({proxy:IDEOL.Util.getProxy(layer.url),url:layer.url,data:deleteTransaction,success:function(response){onSuccess.apply(scope,[response]);},failure:function(response){onFailure.apply(scope,[response]);}});},CLASS_NAME:"IDEOL.Manager.WFS"});Ext.namespace("IDEOL.Manager");IDEOL.Manager.File=OpenLayers.Class({url:Config.FILEUPLOAD_URL,initialize:function(){},saveFile:function(text,fileName){var url=null;var requestMPD=this.getMultipartRequest(text,fileName);var request=OpenLayers.Request.POST({proxy:IDEOL.Util.getProxy(this.url),url:this.url,data:requestMPD.data,headers:requestMPD.headers,async:false,success:function(request){url=request.responseText;}});return url;},getMultipartRequest:function(text,fileName){var request={};request.headers={"Content-Type":"multipart/form-data; boundary=AaB03x","Content-Length":text.length};request.data="Content-Type: multipart/form-data; boundary=AaB03x\r\n"+"Content-Length:"+text.length+"\r\n"+"\r\n--AaB03x\r\n"+"Content-Disposition: form-data; name=\"path\"; filename=\""+fileName+"\"\r\n"+"\r\n"+text+"\r\n"+"--AaB03x--\r\n";return request;},CLASS_NAME:"IDEOL.Manager.File"});Ext.namespace("IDEOL.Manager.Print");IDEOL.Manager.Print.Print=OpenLayers.Class({url:Config.PRINTWMC_URL,wmcManager:new IDEOL.Manager.WMC(),initialize:function(){},printReport:function(printRequest,onSuccess,onFailure,scope){var data=printRequest.getStringRequest();var request=OpenLayers.Request.POST({proxy:IDEOL.Util.getProxy(this.url),url:this.url,data:data,async:false,headers:{"Content-Type":"application/x-www-form-urlencoded"},success:function(request){onSuccess.apply(scope,[request.responseText]);},failure:function(response){onFailure.apply(scope,[response]);}});},CLASS_NAME:"IDEOL.Manager.Print.Print"});Ext.namespace("IDEOL.Manager.Print");IDEOL.Manager.Print.PrintRequest=OpenLayers.Class({project:null,title:null,description:null,mapWMC:null,overViewMapWMC:null,scale:null,size:null,image:null,entity:null,wmsLayer:null,initialize:function(){},getStringRequest:function(){var request=OpenLayers.Util.getParameterString({project:this.project,title:this.title,description:this.description,mapWMC:this.mapWMC,overViewMapWMC:this.overViewMapWMC,scale:this.scale,size:this.size,image:this.image,entity:this.entity,wmsLayer:this.wmsLayer});return request;}});Ext.namespace("IDEOL.Manager");IDEOL.Manager.Draw={DEFAULT_MARKER_ICON:"ideol/ide/resources/theme/default/images/yellowMarker.png",DEFAULT_LAYER_MARKER_NAME:"Markers",DEFAULT_LAYER_VECTOR_NAME:"Drawable",defaultMarkerLayer:null,defaultVectorLayer:null,map:null,styleMap:null,configure:function(map,styleMap){if(map!=null&&styleMap!=null){this.map=map;this.styleMap=styleMap;this.initializeLayers();}},getInstance:function(){return this;},initializeLayers:function(){this.defaultVectorLayer=new OpenLayers.Layer.Vector(this.DEFAULT_LAYER_VECTOR_NAME,{displayInLayerSwitcher:false});this.defaultMarkerLayer=new OpenLayers.Layer.Markers(this.DEFAULT_LAYER_MARKER_NAME,{displayInLayerSwitcher:false});this.map.addLayer(this.defaultMarkerLayer);this.defaultVectorLayer.styleMap=this.styleMap;this.map.addLayer(this.defaultVectorLayer);},drawMarker:function(lonlat,srs,clean,zoom){var size=new OpenLayers.Size(20,34);var offset=new OpenLayers.Pixel(-(size.w/2),-size.h);var icon=new OpenLayers.Icon(this.DEFAULT_MARKER_ICON,size,offset);lonlat.transform(new OpenLayers.Projection(srs),this.map.projection);var mapMaxExtent=this.map.maxExtent;if(mapMaxExtent.containsLonLat(lonlat)){var marker=new OpenLayers.Marker(lonlat,icon);if(clean){this.defaultMarkerLayer.clearMarkers();}
if(zoom){var maxZoom=this.map.getNumZoomLevels();var zoom=(75*maxZoom)/100;this.map.setCenter(lonlat,zoom);}
if(marker){this.moveLayerToTop(this.defaultMarkerLayer,'Popup');this.defaultMarkerLayer.addMarker(marker);}}
else{IDEOL.UtilUI.showMessageWindow(Locale.getText("txt_error"),Locale.getText("msg_lonlat_elemento_fuera_maxextent"),Ext.MessageBox.ERROR);}},drawObjects:function(objects,srs,clean,zoom){if(clean){this.defaultVectorLayer.destroyFeatures();}
this.moveLayerToTop(this.defaultVectorLayer,'Feature');var src=new OpenLayers.Projection(srs);var dest=new OpenLayers.Projection(this.map.getProjection());var features=[];for(var i=0;i<objects.length;i++){if(objects[i]instanceof OpenLayers.Geometry.Point||objects[i]instanceof OpenLayers.Geometry.Polygon||objects[i]instanceof OpenLayers.Geometry.LineString||objects[i]instanceof OpenLayers.Geometry.MultiPoint||objects[i]instanceof OpenLayers.Geometry.MultiPolygon||objects[i]instanceof OpenLayers.Geometry.MultiLineString){objects[i].transform(src,dest);var feature=new OpenLayers.Feature.Vector(objects[i]);features.push(feature);}
else if(objects[i]instanceof OpenLayers.Feature.Vector){objects[i].geometry.transform(src,dest);features.push(objects[i]);}
this.defaultVectorLayer.drawFeature(objects[i]);}
this.defaultVectorLayer.addFeatures(features);if(zoom){var bounds=this.defaultVectorLayer.getDataExtent();this.moveToBounds(bounds);}},moveToBounds:function(bounds){var maxZoom=this.map.getNumZoomLevels();var minPercentage=60;var minZoom=this.getZoomForPercentage(minPercentage);var proposedZoom=this.map.getZoomForExtent(bounds);var proposedPercentage=this.getPercentageForZoom(proposedZoom);var lonlat=bounds.getCenterLonLat();if(proposedPercentage>75){this.map.moveTo(lonlat,minZoom);}
else{this.map.moveTo(lonlat,proposedZoom);}},getZoomForPercentage:function(percentage){var maxZoom=this.map.getNumZoomLevels();var zoom=(percentage*maxZoom)/100;return zoom;},getPercentageForZoom:function(zoom){var maxZoom=this.map.getNumZoomLevels();var percentage=(100*zoom)/maxZoom;return percentage;},cleanAll:function(){this.defaultVectorLayer.destroyFeatures();this.defaultMarkerLayer.clearMarkers();var layers=this.map.layers;for(key in layers){if(layers[key]instanceof OpenLayers.Layer.WFS){continue;}
else if(layers[key]instanceof OpenLayers.Layer.Vector){layers[key].destroyFeatures();}
else if(layers[key]instanceof OpenLayers.Layer.Markers){layers[key].clearMarkers();}}},moveLayerToTop:function(layer,indexgroup){var index=Math.max(this.map.Z_INDEX_BASE[indexgroup]-1,layer.getZIndex())+1;layer.setZIndex(index);}};Ext.namespace("IDEOL.Manager.CSW");IDEOL.Manager.CSW.CSW=OpenLayers.Class({cswGetRecordsFormat:new OpenLayers.Format.CSWGetRecords.v2_0_2(),initialize:function(){},getSummaryRecords:function(cswQuery,onSuccess,onFailure,scope){var url=cswQuery.url;var queryData=this.getCSWSummaryQueryData(cswQuery);OpenLayers.Request.POST({proxy:IDEOL.Util.getProxy(url),url:url,data:queryData,success:function(response){var records=this.parseSummaryRecords(response.responseXML);onSuccess.apply(scope,[records]);},failure:function(response){onFailure.apply(scope,[response]);},scope:this});},getCSWSummaryQueryData:function(cswQuery){var options={};options.resultType='results';options.startPosition=1;options.maxRecords=100;options.Query={};options.Query.Constraint={version:'1.0.0'};options.Query.Constraint.Filter=cswQuery.getFilter();return this.cswGetRecordsFormat.write(options);},parseSummaryRecords:function(summaryXML){var records=this.cswGetRecordsFormat.read(summaryXML).records;var cswSummaryRecords=[];for(i=0;i<records.length;i++){var cswSummaryRecord=new IDEOL.Manager.CSW.CSWSummaryRecord();if(records[i].identifier.length>0)
cswSummaryRecord.identifier=records[i].identifier[0].value;if(records[i].title.length>0)
cswSummaryRecord.title=records[i].title[0].value;if(records[i].abstract.length>0)
cswSummaryRecord.description=records[i].abstract[0];cswSummaryRecords.push(cswSummaryRecord);}
return cswSummaryRecords;},getRecordById:function(url,uuid,onSuccess,onFailure,scope){var data=''
+'<?xml version="1.0" encoding="UTF-8"?>'
+'<csw:GetRecordById xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" outputSchema="csw:IsoRecord" service="CSW" version="2.0.2">'
+'<csw:Id>'+uuid+'</csw:Id>'
+'</csw:GetRecordById>';OpenLayers.Request.POST({proxy:IDEOL.Util.getProxy(url),url:url,data:data,success:function(response){var record=response.responseXML;onSuccess.apply(scope,[record]);},failure:function(response){onFailure.apply(scope,[response]);},scope:this});},getRecordResources:function(url,uuid,onSuccess,onFailure,scope){var data=''
+'<?xml version="1.0" encoding="UTF-8"?>'
+'<csw:GetRecordById xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" outputSchema="csw:IsoRecord" service="CSW" version="2.0.2">'
+'<csw:Id>'+uuid+'</csw:Id>'
+'</csw:GetRecordById>';OpenLayers.Request.POST({proxy:IDEOL.Util.getProxy(url),url:url,data:data,success:function(response){var resources=this.getResources(response.responseXML);onSuccess.apply(scope,[resources]);},failure:function(response){onFailure.apply(scope,[response]);},scope:this});},getResources:function(cswRecordXML){var resourcesNodes=cswRecordXML.getElementsByTagName('CI_OnlineResource');var resources=[];for(var i=0;i<resourcesNodes.length;i++){var resourceNode=resourcesNodes[i];var resource={};resource.url=this.getNodeValue(resourceNode,'URL');var protocols=resourceNode.getElementsByTagName('protocol');if(protocols.length>0)
resource.protocol=this.getNodeValue(protocols[0],'gco:CharacterString');var names=resourceNode.getElementsByTagName('name');if(names.length>0)
resource.name=this.getNodeValue(names[0],'gco:CharacterString');resources.push(resource);}
return resources;},getNodeValue:function(node,value){var aux=node.getElementsByTagName(value);if(aux.length&&aux.length>0)
return(aux[0].textContent);return'';},CLASS_NAME:"IDEOL.Manager.CSW.CSW"});Ext.namespace("IDEOL.Manager.CSW");IDEOL.Manager.CSW.CSWQuery=OpenLayers.Class({url:null,searchKey:null,category:null,provider:null,bounds:null,filterManager:null,initialize:function(){this.filterManager=new IDEOL.Manager.Filter();},getFilter:function(){var comparisonFilters=[];if(this.searchKey!=null&&this.searchKey.trim()!=""){var filter=this.filterManager.getComparisonFilter(OpenLayers.Filter.Comparison.LIKE,'any','*'+this.searchKey+'*',false);comparisonFilters.push(filter);}
if(this.category!=null&&this.category.trim()!=""){var filter=this.filterManager.getComparisonFilter(OpenLayers.Filter.Comparison.LIKE,'topicCat','*'+this.category+'*',false);comparisonFilters.push(filter);}
if(this.provider!=null&&this.provider.trim()!=""){var filter=this.filterManager.getComparisonFilter(OpenLayers.Filter.Comparison.LIKE,'orgName','*'+this.provider+'*',false);comparisonFilters.push(filter);}
if(this.bounds!=null){var filter=this.filterManager.getSpatialFilter(OpenLayers.Filter.Spatial.BBOX,this.bounds);comparisonFilters.push(filter);}
var filter=this.filterManager.getLogicalFilter(OpenLayers.Filter.Logical.AND,comparisonFilters);return filter;}});Ext.namespace("IDEOL.Manager.CSW");IDEOL.Manager.CSW.CSWSummaryRecord=OpenLayers.Class({title:null,identifier:null,description:null,initialize:function(){}});Ext.namespace("IDEOL.Tool");IDEOL.Tool.ContextCollectionPanel=Ext.extend(Ext.Panel,{title:Locale.getText("txt_mapas"),border:false,collapsed:true,iconCls:'contextCollectionPanel',autoScroll:true,ideol:null,urlCollection:Config.WMC_COLLECTION_URL,wmccText:null,vcreferences:null,selectedNode:null,tree:new Ext.tree.TreePanel({id:'treeContextCollectionPanel',autoHeight:true,frame:true,border:false,collapsible:true,collapsed:false,rootVisible:false,autoScroll:true,bodyStyle:'padding:5px 0 5px 0',root:{text:'Mapas',draggable:false,leaf:false},buttonAlign:'center'}),setIDEOL:function(ideol){this.ideol=ideol;},loadTree:function(references){var root=new Ext.tree.TreeNode({text:Locale.getText("txt_mapas"),allowDrag:false,expanded:true,expandChildNodes:true,allowDrop:false,allowChildren:true,leaf:false,qtip:Locale.getText("txt_mapas")});this.tree.getRootNode().destroy();this.tree.setRootNode(root);for(var i=0;i<references.length;i++){var reference=new Ext.tree.TreeNode({text:references[i].title,url:references[i].url,allowDrag:false,expanded:false,expandChildNodes:false,allowDrop:false,allowChildren:false,leaf:true,iconCls:'mapNode',qtip:references[i].title});root.appendChild(reference);}},loadMap:function(){var selmodel=this.tree.getSelectionModel();var selectedNode=selmodel.getSelectedNode();if(selectedNode){this.ideol.load(selectedNode.attributes.url,selectedNode.text);}
else
IDEOL.UtilUI.showMessageWindow(Locale.getText("txt_error"),Locale.getText("msg_seleccionar_mapa_cargar"),Ext.MessageBox.ERROR);},initComponent:function(){IDEOL.Tool.ContextCollectionPanel.superclass.initComponent.call(this);var wmccText=this.getWMCCString(this.urlCollection);var format=new OpenLayers.Format.WMCC();this.vcreferences=format.read(wmccText);this.on('render',function(panel){this.loadTree(this.vcreferences.references);this.add(this.tree);},this);this.tree.on('click',function(node,event){if(this.selectedNode!=node){this.selectedNode=node;this.ideol.load(node.attributes.url,node.text);}},this);},getWMCCString:function(contextURL){var request=OpenLayers.Request.GET({proxy:IDEOL.Util.getProxy(contextURL),url:contextURL,success:function(transport){wmccText=transport.responseText;},failure:function(transport){wmccText=null;},async:false});return wmccText;}});Ext.namespace("IDEOL.Tool");IDEOL.Tool.WFSResultsGrid=OpenLayers.Class({layer:null,columns:null,storeFields:null,filter:null,layerChanged:false,wfsManager:null,drawManager:null,wktFormat:null,grid:null,win:null,locateButton:null,closeButton:null,initialize:function(options){OpenLayers.Util.extend(this,options);this.createComponents();this.prepareComponents();},createComponents:function(){this.wfsManager=new IDEOL.Manager.WFS();this.wktFormat=new OpenLayers.Format.WKT();this.drawManager=IDEOL.Manager.Draw.getInstance();this.win=new Ext.Window({layout:'fit',bodyStyle:'padding: 2px 2px 2px',modal:false,title:Locale.getText("msg_resultados_busqueda"),constrainHeader:true,expandOnShow:true,maximizable:true,resizable:true,draggable:true,collapsible:true,closeAction:"hide",plain:true,border:false});this.grid=new Ext.grid.GridPanel({layout:'fit',height:200,width:625,stripeRows:true,autoScroll:true,frame:true,iconCls:'icon-grid',store:new Ext.ux.data.PagingStore({reader:new Ext.data.JsonReader({},[])}),columns:[],view:new Ext.grid.GridView({forceFit:true}),sm:new Ext.grid.RowSelectionModel({singleSelect:false}),bbar:new Ext.PagingToolbar({store:new Ext.ux.data.PagingStore({reader:new Ext.data.JsonReader({},[])}),displayInfo:true,pageSize:20,prependButtons:true})});},prepareComponents:function(){this.win.add(this.grid);this.locateButton=this.win.addButton({text:Locale.getText('txt_localizar')},function(){this.locateFeatures();},this);this.closeButton=this.win.addButton({text:Locale.getText('txt_cerrar')},function(){this.win.hide();},this);this.win.on('show',function(){this.mask=new Ext.LoadMask(this.grid.body);this.doQuery(this.layer,this.columns,this.filter);},this);},loadGrid:function(wfsFeatures){this.grid.store.removeAll();var features=this.getPreparedFeatures(wfsFeatures);var limit=this.grid.getBottomToolbar().pageSize;this.grid.store.lastOptions={params:{start:0,limit:limit}};this.grid.store.loadData(features);},onWFSQuerySuccess:function(wfsFeatures){this.loadGrid(wfsFeatures);this.mask.hide();},onWFSQueryFailure:function(response){this.mask.hide();IDEOL.UtilUI.showMessageWindow(Locale.getText("txt_informacion"),Locale.getText("msg_error_realizar_consulta"),Ext.MessageBox.ERROR);},doQuery:function(layer,columns,filter){this.showMask(Locale.getText('txt_consultando')+' ...');if(this.layerChanged){this.storeFields=this.getLayerAttributes(layer);this.prepareGrid(columns,this.storeFields);}
this.wfsManager.getFeaturesByFilter(layer,this.storeFields,filter,this.onWFSQuerySuccess,this.onWFSQueryFailure,this);},prepareGrid:function(columns,attributes){var store=this.getStore(attributes);if(columns==null){columns=this.getColumns(attributes);}
this.grid.store.removeAll();this.grid.reconfigure(store,new Ext.grid.ColumnModel({columns:columns}));this.grid.getBottomToolbar().bindStore(store);},getLayerAttributes:function(layer){var attributes=this.wfsManager.getLayerAttributesSync(layer);attributes.pop("the_geom");return attributes;},getStore:function(attributes){var requiredAtt=['fid'];requiredAtt=requiredAtt.concat(attributes);var store=new Ext.ux.data.PagingStore({reader:new Ext.data.JsonReader({},requiredAtt)});return store;},getColumns:function(attributes){var columns=[];for(var i=0;i<attributes.length;i++){columns.push({header:attributes[i],dataIndex:attributes[i],sortable:true});}
return columns;},getPreparedFeatures:function(wfsFeatures){var features=[];for(i=0;i<wfsFeatures.length;i++){var feature=wfsFeatures[i].data;if(wfsFeatures[i].fid!=null)
feature.fid=wfsFeatures[i].fid;if(wfsFeatures[i].geometry!=null)
feature.the_geom=wfsFeatures[i].geometry;features.push(feature);}
return features;},getSelectedFID:function(){var selectionModel=this.grid.getSelectionModel();var records=selectionModel.getSelections();var fids=[];for(i=0;i<records.length;i++){var fid=records[i].data.fid;fids.push(fid);}
return fids;},locateFeatures:function(){var fids=[];var countRecords=this.grid.store.getCount();var selectedFID=this.getSelectedFID();if(selectedFID.length>0){fids=selectedFID;}
else if(countRecords==1){var record=this.grid.store.getAt(0);fids.push(record.data.fid);}
else{IDEOL.UtilUI.showMessageWindow(Locale.getText("txt_informacion"),Locale.getText("msg_seleccionar_registro_localizar"),Ext.MessageBox.WARNING);return;}
this.requestGeometriesByFID(fids);},onWFSRequestGeometriesSuccess:function(wfsFeatures){var geoms=this.getGeometriesForFeatures(wfsFeatures);this.drawGeometries(geoms);this.mask.hide();},requestGeometriesByFID:function(fids){this.showMask(Locale.getText('txt_localizando')+' ...');var attributes=["the_geom"];var filter=new OpenLayers.Filter.FeatureId({fids:fids});this.wfsManager.getFeaturesByFilter(this.layer,attributes,filter,this.onWFSRequestGeometriesSuccess,this.onWFSQueryFailure,this);},getGeometriesForFeatures:function(wfsFeatures){var geoms=[];for(i=0;i<wfsFeatures.length;i++){var feature=wfsFeatures[i];if(feature.geometry!=null){var geometry=this.wktFormat.read(feature.geometry);geoms.push(geometry);}}
return geoms;},drawGeometries:function(geoms){this.drawManager.cleanAll();for(i=0;i<geoms.length;i++){var geom=geoms[i];if(geom.geometry instanceof OpenLayers.Geometry.Point){var bounds=geom.geometry.getBounds();var lonlat=bounds.getCenterLonLat();this.drawManager.drawMarker(lonlat,this.layer.projection.getCode(),false,false);}}
if(geoms.length>0)
this.drawManager.drawObjects(geoms,this.layer.projection.getCode(),false,true);},getSelectedRecords:function(){var selectionModel=this.grid.getSelectionModel();var records=selectionModel.getSelections();return records;},showMask:function(text){this.mask.msg=text;this.mask.show();},show:function(layer,columns,filter){if(layer!=null&&filter!=null){if(this.layer!=null){if(this.layer.name!=layer.name){this.layerChanged=true;}
else{this.layerChanged=false;}}
else{this.layerChanged=true;}
this.layer=layer;this.columns=columns;this.filter=filter;this.win.setTitle(Locale.getText("msg_resultados_busqueda")+" - "+this.layer.name);if(this.win.isVisible()){this.win.expand();this.win.toFront();this.doQuery(this.layer,this.columns,this.filter);}
else{this.showWindow();}}},showWindow:function(){this.win.show();this.win.expand();},CLASS_NAME:"IDEOL.Tool.WFSResultsGrid"});Ext.namespace("IDEOL.Tool");IDEOL.Tool.WFSQueryEditWindow=OpenLayers.Class({wfsManager:new IDEOL.Manager.WFS(),filterManager:new IDEOL.Manager.Filter(),drawManager:IDEOL.Manager.Draw.getInstance(),wktFormat:new OpenLayers.Format.WKT(),editable:false,win:null,selectedFeatureIndex:null,layers:[],comboLayers:new Ext.form.ComboBox({store:new Ext.data.SimpleStore({fields:['layerName'],data:[],sortInfo:{field:'layerName',direction:'ASC'}}),displayField:'layerName',fieldLabel:Locale.getText("txt_capa"),name:'layersCombo',typeAhead:false,mode:'local',triggerAction:'all',allowBlank:false,emptyText:IDEOL.UtilUI.emptyTextCombo,selectOnFocus:true,editable:false,anchor:'95%'}),comboAttributes:new Ext.form.ComboBox({store:new Ext.data.SimpleStore({fields:['name'],data:[]}),displayField:'name',fieldLabel:Locale.getText("txt_atributo"),name:'attribute',typeAhead:false,mode:'local',triggerAction:'all',allowBlank:false,selectOnFocus:true,editable:false,anchor:'95%'}),comboOperators:new Ext.form.ComboBox({store:new Ext.data.SimpleStore({fields:['operator'],data:[[OpenLayers.Filter.Comparison.EQUAL_TO],[OpenLayers.Filter.Comparison.NOT_EQUAL_TO],[OpenLayers.Filter.Comparison.LESS_THAN],[OpenLayers.Filter.Comparison.GREATER_THAN],[OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO],[OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO],[OpenLayers.Filter.Comparison.BETWEEN],[OpenLayers.Filter.Comparison.LIKE]]}),displayField:'operator',fieldLabel:Locale.getText("txt_operador"),name:'operator',typeAhead:false,mode:'local',triggerAction:'all',allowBlank:false,selectOnFocus:true,editable:false,anchor:'95%'}),valueTextField:new Ext.form.TextField({xtype:'textfield',fieldLabel:Locale.getText("txt_valor"),id:'value',name:'value',allowBlank:false,enableKeyEvents:true,anchor:'95%'}),storeGridQuery:new Ext.data.Store({reader:new Ext.data.JsonReader({},['attribute','operator','value'])}),gridQuery:new Ext.grid.EditorGridPanel({columnWidth:.5,loadMask:true,autoScroll:true,height:150,frame:true,iconCls:'icon-grid',clicksToEdit:2,columns:[{header:Locale.getText("txt_atributo"),width:110,dataIndex:'attribute',sortable:false},{header:Locale.getText("txt_operador"),width:60,dataIndex:'operator',sortable:false},{header:Locale.getText("txt_valor"),dataIndex:'value',sortable:true,editor:new Ext.form.TextField()}],viewConfig:{forceFit:true},sm:new Ext.grid.RowSelectionModel({singleSelect:true})}),gridResult:new Ext.grid.EditorGridPanel({layout:'fit',height:175,autoScroll:true,frame:true,iconCls:'icon-grid',store:new Ext.ux.data.PagingStore({reader:new Ext.data.JsonReader({},[])}),columns:[],clicksToEdit:2,view:new Ext.grid.GridView({forceFit:true}),sm:new Ext.grid.RowSelectionModel({singleSelect:false}),bbar:new Ext.PagingToolbar({store:new Ext.ux.data.PagingStore({reader:new Ext.data.JsonReader({},[])}),displayInfo:true,pageSize:20,prependButtons:true})}),gridResultLoadMask:null,mainLoadMask:null,form:new Ext.FormPanel({layout:'fit',columnWidth:.5,frame:true,bodyStyle:'padding:5px 5px 0',height:150,labelAlign:'top',defaultButton:0}),win:new Ext.Window({layout:'fit',bodyStyle:'padding: 2px 2px 2px',modal:false,title:Locale.getText("txt_constructor_consultas"),constrainHeader:true,width:675,minWidth:675,autoHeight:true,maximizable:false,resizable:false,draggable:true,collapsible:true,closeAction:"hide",plain:true,border:false}),containerPanel:new Ext.Panel({layout:'fit',autoHeight:true}),initialize:function(options){OpenLayers.Util.extend(this,options);this.prepareComponents();this.prepareLayout();},prepareComponents:function(){this.comboLayers.on('beforeselect',function(combo,record,index){if(combo.getValue()!=record.data.layerName){var layerName=record.data.layerName;this.prepareForLayerName(this.layers,layerName);}},this);this.comboOperators.on('select',function(combo,record,index){var operator=record.data.operator;},this);this.valueTextField.on('keypress',function(object,event){if(event.getCharCode()==event.ENTER)
this.addAttr();},this);this.gridQuery.store=this.storeGridQuery;this.gridResult.on('afterrender',function(){this.gridResultLoadMask=new Ext.LoadMask(this.gridResult.body);this.mainLoadMask=new Ext.LoadMask(this.win.body);},this);this.gridResult.on('afteredit',function(){},this);this.containerPanel.on('afterrender',function(window){this.loadComboLayers(this.layers);},this);this.win.on('maximize',function(window){this.resultPanel.setWidth(this.queryPanel.getSize().width);},this);this.win.on('restore',function(window){this.resultPanel.setWidth(this.queryPanel.getSize().width);},this);},prepareLayout:function(){this.leftFormPanel=new Ext.Panel({layout:'form',columnWidth:.5,autoHeight:true,border:false,items:[this.comboLayers,this.comboOperators]});this.rightFormPanel=new Ext.Panel({layout:'form',columnWidth:.5,autoHeight:true,border:false,items:[this.comboAttributes,this.valueTextField]});this.containerFormPanel=new Ext.Panel({layout:'column',autoHeight:true,border:false,items:[this.leftFormPanel,this.rightFormPanel]});this.form.add(this.containerFormPanel);this.form.addButton({text:Locale.getText('<<')},function(){this.delAttr();},this);this.form.addButton({text:Locale.getText('>>')},function(){this.addAttr();},this);this.queryPanel=new Ext.Panel({layout:'column',autoHeight:true,border:false,items:[this.form,this.gridQuery]});this.resultPanel=new Ext.Panel({layout:'fit',tittle:Locale.getText("txt_resultados"),border:false,items:[this.gridResult]});this.containerPanel.add(this.queryPanel);this.containerPanel.add(this.resultPanel);this.win.add(this.containerPanel);this.win.addButton({text:Locale.getText('txt_localizar')},function(){this.locateFeatures();},this);this.win.addButton({text:Locale.getText('txt_buscar')},function(){this.doQuery();},this);if(this.editable){this.win.addButton({text:Locale.getText('txt_guardar')},function(){this.saveChanges();},this);this.win.addButton({text:Locale.getText('txt_eliminar')},function(){this.deleteFeatures();},this);}
this.win.addButton({text:Locale.getText('txt_cerrar')},function(){this.win.hide();},this);},prepareForLayerName:function(layers,layerName){this.mainLoadMask.show();this.layer=this.getLayerByName(layers,layerName);this.loadComboAttributes(this.layer);this.gridQuery.store.removeAll();this.prepareGridResult(this.layer);this.mainLoadMask.hide();},getLayerAttributes:function(layer){var attributes=this.wfsManager.getLayerAttributesSync(layer);attributes.pop("the_geom");return attributes;},getArrayLayerAttributes:function(layer){var array=[];var attributes=this.getLayerAttributes(layer);for(var i=0;i<attributes.length;i++){array.push([attributes[i]]);}
return array;},getLayersName:function(layers){var layerNames=[];for(var i=0;i<layers.length;i++){if(layers[i]instanceof IDEOL.Layer.WFS)
layerNames.push([layers[i].name]);}
return layerNames;},getLayerByName:function(layers,layerName){for(var i=0;i<layers.length;i++){if(layers[i].name==layerName)
return layers[i];}
return null;},loadComboLayers:function(layers){if(this.comboLayers.store!=null){this.comboLayers.store.removeAll();var layerNames=this.getLayersName(layers);var blank=[[IDEOL.UtilUI.emptyTextCombo]];if(layerNames.length>0)
this.comboLayers.store.loadData(blank.concat(layerNames));}},loadComboAttributes:function(layer){if(this.comboAttributes.store!=null){this.comboAttributes.store.removeAll();this.comboAttributes.reset();var attr=this.getArrayLayerAttributes(layer);if(attr.length>0){this.comboAttributes.store.loadData(attr);}
else{IDEOL.UtilUI.showMessageWindow(Locale.getText("txt_informacion"),Locale.getText("msg_sin_atributos_capa"),Ext.MessageBox.ERROR);}}},loadGridResult:function(wfsFeatures){this.gridResult.store.removeAll();var limit=this.gridResult.getBottomToolbar().pageSize;this.gridResult.store.lastOptions={params:{start:0,limit:limit}};this.gridResult.store.loadData(wfsFeatures);},addAttr:function(){if(this.form.getForm().isValid()){values=this.form.getForm().getValues();var data=new Object();data.attribute=values.attribute;data.operator=values.operator;data.value=values.value;this.gridQuery.store.loadData([data],true);}},delAttr:function(){var selectionModel=this.gridQuery.getSelectionModel();var record=selectionModel.getSelected();if(record)
this.gridQuery.store.remove(record);},prepareGridResult:function(layer){var describeFeatureData=this.getDescribeFeatureData(layer);var store=this.getStoreResult(describeFeatureData);var columnModel=this.getColumnModelResult(describeFeatureData);this.gridResult.store.removeAll();this.gridResult.reconfigure(store,columnModel);this.gridResult.getBottomToolbar().bindStore(store);},getDescribeFeatureData:function(layer){var data=[];data.push('fid');var atts=this.getLayerAttributes(layer);for(var i=0;i<atts.length;i++){data.push('data.'+atts[i]);}
return data;},getStoreResult:function(describeFeatureData){var store=new Ext.ux.data.PagingStore({reader:new Ext.data.JsonReader({},describeFeatureData)});return store;},getColumnModelResult:function(describeFeatureData){var columns=[];for(var i=0;i<describeFeatureData.length;i++){var dataHeaderTitle=describeFeatureData[i].split(".")[1];if(describeFeatureData[i]=='fid')
columns.push({header:'Fid',dataIndex:describeFeatureData[i],sortable:true,hidden:true});else if(describeFeatureData[i]=='geometry')
columns.push({header:'Geometry',dataIndex:describeFeatureData[i],sortable:true,hidden:true});else
columns.push({header:dataHeaderTitle,dataIndex:describeFeatureData[i],sortable:true,editor:new Ext.form.TextField()});}
var columnModel=new Ext.grid.ColumnModel({columns:columns});return columnModel;},getFilter:function(){var store=this.gridQuery.store;var records=store.getRange(0,store.getTotalCount());var filters=[];for(var i=0;i<records.length;i++){var attribute=records[i].data.attribute;var operator=records[i].data.operator;var value=records[i].data.value;if(operator==OpenLayers.Filter.Comparison.LIKE)
value="*"+value+"*";var filter=this.filterManager.getComparisonFilter(operator,attribute,value,false);filters.push(filter);}
var filter=this.filterManager.getLogicalFilter(OpenLayers.Filter.Logical.AND,filters);return filter;},onWFSQuerySuccess:function(wfsFeatures){this.loadGridResult(wfsFeatures);this.gridResultLoadMask.hide();},onWFSQueryFailure:function(response){this.gridResultLoadMask.hide();IDEOL.UtilUI.showMessageWindow(Locale.getText("txt_informacion"),Locale.getText("msg_error_realizar_consulta"),Ext.MessageBox.ERROR);},doQuery:function(){this.showGridResultMask(Locale.getText("txt_consultando")+" ...");var filter=this.getFilter();var storeAtt=this.gridResult.store.fields.keys;var attributes=[];for(var i=0;i<storeAtt.length;i++){var att=storeAtt[i].split(".")[1];if(att)
attributes.push(att);}
this.wfsManager.getFeaturesByFilter(this.layer,attributes,filter,this.onWFSQuerySuccess,this.onWFSQueryFailure,this);},getSelectedFID:function(){var selectionModel=this.gridResult.getSelectionModel();var records=selectionModel.getSelections();var fids=[];for(i=0;i<records.length;i++){var fid=records[i].data.fid;fids.push(fid);}
return fids;},locateFeatures:function(){var fids=[];var countRecords=this.gridResult.store.getCount();var selectedFID=this.getSelectedFID();if(selectedFID.length>0){fids=selectedFID;}
else if(countRecords==1){var record=this.gridResult.store.getAt(0);fids.push(record.data.fid);}
else{IDEOL.UtilUI.showMessageWindow(Locale.getText("txt_informacion"),Locale.getText("msg_seleccionar_registro_localizar"),Ext.MessageBox.WARNING);return;}
this.requestGeometriesByFID(fids);},onWFSRequestGeometriesSuccess:function(wfsFeatures){var geoms=this.getGeometriesForFeatures(wfsFeatures);this.drawGeometries(geoms);this.gridResultLoadMask.hide();},requestGeometriesByFID:function(fids){this.showGridResultMask(Locale.getText('txt_localizando')+' ...');var attributes=["the_geom"];var filter=new OpenLayers.Filter.FeatureId({fids:fids});this.wfsManager.getFeaturesByFilter(this.layer,attributes,filter,this.onWFSRequestGeometriesSuccess,this.onWFSQueryFailure,this);},getGeometriesForFeatures:function(wfsFeatures){var geoms=[];for(i=0;i<wfsFeatures.length;i++){var feature=wfsFeatures[i];if(feature.geometry!=null){var geometry=this.wktFormat.read(feature.geometry);geoms.push(geometry);}}
return geoms;},drawGeometries:function(geoms){this.drawManager.cleanAll();for(i=0;i<geoms.length;i++){var geom=geoms[i];if(geom.geometry instanceof OpenLayers.Geometry.Point){var bounds=geom.geometry.getBounds();var lonlat=bounds.getCenterLonLat();this.drawManager.drawMarker(lonlat,this.layer.projection.getCode(),false,false);}}
if(geoms.length>0)
this.drawManager.drawObjects(geoms,this.layer.projection.getCode(),false,true);},showGridResultMask:function(text){this.gridResultLoadMask.msg=text;this.gridResultLoadMask.show();},show:function(){this.win.show();}});Ext.namespace("IDEOL.Tool");IDEOL.Tool.HTMLTemplateView=OpenLayers.Class({tplResources:{OWTChartService:"http://services.iver.es/cgi-bin/owtchart",getValue:function(attr){if(attr==null)
return"";return attr;},isValid:function(text){if(text==""||text==null)
return false;return true;}},panel:null,closeButton:null,title:null,win:null,createComponents:function(){this.panel=new Ext.Panel({height:400,autoWidth:true,autoScroll:true,layout:'fit',bodyStyle:'padding: 4px'});this.win=new Ext.Window({layout:'fit',bodyStyle:'padding: 2px 2px 2px',modal:false,title:this.title,titleCollapse:true,constrainHeader:true,minWidth:300,maximizable:true,expandOnShow:true,resizable:true,draggable:true,collapsible:false,closeAction:"hide",plain:true,border:false});},prepareComponents:function(){this.win.add(this.panel);this.closeButton=this.win.addButton({text:Locale.getText('txt_cerrar')},function(){this.win.hide();},this);},initialize:function(title){if(title!=null)
this.title=title;else
this.title=Locale.getText("txt_ficha");this.createComponents();this.prepareComponents();},getContent:function(contentURL){var content;var request=OpenLayers.Request.GET({url:contentURL,success:function(response){content=response.responseText;},failure:function(response){content=null;},async:false});return content;},loadPanel:function(record,templatePath){var html='';var templateContent=this.getContent(templatePath);var template=new Ext.XTemplate(templateContent,this.tplResources);html=template.apply(record.data);this.panel.body.update(html);this.win.syncSize();},showWindow:function(){this.win.show();this.win.expand();},showHTML:function(title,htmlPath){this.win.setTitle(title);var content=this.getContent(htmlPath);var visible=this.win.isVisible();if(!visible)
this.showWindow();this.panel.body.update(content);this.win.syncSize();if(!visible)
this.win.center();},show:function(title,record,templatePath){if(record){this.win.setTitle(this.title+" - "+title);var visible=this.win.isVisible();if(!visible)
this.showWindow();this.loadPanel(record,templatePath);if(!visible)
this.win.center();}}});Ext.namespace("IDEOL.Tool");IDEOL.Tool.XSLTemplateView=OpenLayers.Class({xslManager:null,xmlDocument:null,xslString:null,mask:null,metadatosPanel:new Ext.Panel({layout:'fit',height:'100%',padding:'2px 2px 2px 2px',closable:true,autoScroll:true}),win:new Ext.Window({layout:'fit',bodyStyle:'padding: 2px',modal:false,title:Locale.getText("txt_detalle_metadato"),constrainHeader:true,width:575,minWidth:575,height:500,maximizable:true,resizable:true,draggable:true,collapsible:true,closeAction:"hide",plain:true,border:false}),initialize:function(){this.xslManager=new IDEOL.Manager.XSL();this.prepareComponents();},prepareComponents:function(){this.win.on("afterrender",function(){if(this.mask==null)
this.mask=new Ext.LoadMask(this.win.body,{msg:Locale.getText("txt_cargando")+" ..."});},this);this.win.add(this.metadatosPanel);this.closeButton=this.win.addButton({text:Locale.getText('txt_cerrar')},function(){this.win.hide();},this);},cleanPanel:function(){this.metadatosPanel.body.update('');},updatePanel:function(xmlDocument,xslString){this.cleanPanel();this.mask.show();var html=this.xslManager.transformXML(xmlDocument,xslString);this.metadatosPanel.body.update(html);this.mask.hide();},showWindow:function(){var visible=this.win.isVisible();if(!visible){this.win.show();this.win.expand();this.win.center();}},show:function(xmlDocument,xslString){this.xmlDocument=xmlDocument;this.xslString=xslString;this.showWindow();this.updatePanel(xmlDocument,xslString);}});Ext.namespace("IDEOL.Tool");IDEOL.Tool.LayerWizard=OpenLayers.Class({tabPanel:null,win:null,initialize:function(){this.issueItem=new Ext.Panel({title:'Tab 1',html:'A simple tab'}),this.tabPanel=new Ext.TabPanel({activeTab:0,border:false,autoHeight:true,enableTabScroll:true});this.tabPanel.on('tabchange',function(tabPanel,panel){this.win.syncShadow();},this);this.win=new Ext.Window({layout:'fit',bodyStyle:'padding: 2px 2px 2px',modal:false,title:Locale.getText("txt_anyadir_capa"),width:350,constrainHeader:true,expandOnShow:true,maximizable:false,resizable:false,draggable:true,collapsible:true,closeAction:"hide",plain:true,border:false});this.win.add(this.tabPanel);},show:function(){this.win.show();this.win.expand();},addPanel:function(panel){this.tabPanel.add(panel);}});Ext.namespace("IDEOL");IDEOL.Styles=OpenLayers.Class({defaultStyleMap:new OpenLayers.StyleMap({"default":new OpenLayers.Style({pointRadius:5,fillColor:"#006fec",fillOpacity:0.3,strokeColor:"#006fec",strokeWidth:2}),"select":new OpenLayers.Style({fillColor:"#66ccff",strokeColor:"red"})}),drawSymbolizers:{"Point":{pointRadius:4,graphicName:"square",fillColor:"white",fillOpacity:0.8,strokeWidth:2,strokeColor:"#006fec",fillOpacity:0.6},"Line":{strokeWidth:3,strokeOpacity:1,strokeColor:"#006fec"},"Polygon":{strokeWidth:2,strokeOpacity:1,strokeColor:"#006fec",fillColor:"#006fec",fillOpacity:0.2}},drawStyle:null,drawStyleMap:null,measureSymbolizers:{"Point":{pointRadius:4,graphicName:"square",fillColor:"white",fillOpacity:0.8,strokeWidth:2,strokeColor:"#fbfe25"},"Line":{strokeWidth:2,strokeOpacity:1,strokeColor:"#fbfe25"},"Polygon":{strokeWidth:2,strokeOpacity:1,strokeColor:"#fbfe25",fillColor:"#fbfe25",fillOpacity:0.4}},measureStyle:null,measureStyleMap:null,vectorDefaultSymbolizers:{"Point":{pointRadius:6,fillColor:"white",fillOpacity:0.6,strokeWidth:2,strokeColor:"#006fec"},"Line":{strokeWidth:3,strokeOpacity:1,strokeColor:"#006fec"},"Polygon":{strokeWidth:2,strokeOpacity:1,strokeColor:"#006fec",fillColor:"#006fec",fillOpacity:0.2}},vectorSelectSymbolizers:{"Point":{pointRadius:6,fillColor:"white",fillOpacity:0.8,strokeWidth:2,strokeColor:"yellow"},"Line":{strokeWidth:3,strokeOpacity:1,strokeColor:"yellow"},"Polygon":{strokeWidth:2,strokeOpacity:1,strokeColor:"yellow",fillColor:"yellow",fillOpacity:0.6}},vectorDeleteSymbolizers:{"Point":{pointRadius:6,fillColor:"white",fillOpacity:0.8,strokeWidth:2,strokeColor:"red",fillOpacity:0.6},"Line":{strokeWidth:3,strokeOpacity:1,strokeColor:"red"},"Polygon":{strokeWidth:2,strokeOpacity:1,strokeColor:"red",fillColor:"red",fillOpacity:0.6}},vectorInsertSymbolizers:{"Point":{pointRadius:6,fillColor:"white",fillOpacity:0.8,strokeWidth:2,strokeColor:"#32ec06",fillOpacity:0.6},"Line":{strokeWidth:3,strokeOpacity:1,strokeColor:"#32ec06"},"Polygon":{strokeWidth:2,strokeOpacity:1,strokeColor:"#32ec06",fillColor:"green",fillOpacity:0.6}},vectorUpdateSymbolizers:{"Point":{pointRadius:6,fillColor:"white",fillOpacity:0.8,strokeWidth:2,strokeColor:"yellow",fillOpacity:0.6},"Line":{strokeWidth:3,strokeOpacity:1,strokeColor:"yellow"},"Polygon":{strokeWidth:2,strokeOpacity:1,strokeColor:"yellow",fillColor:"yellow",fillOpacity:0.6}},vectorStyleMap:null,initialize:function(){this.initializeDrawStyle();this.initializeMeasureStyle();this.initializeVectorStyle();},initializeDrawStyle:function(){this.drawStyle=new OpenLayers.Style();this.drawStyle.addRules([new OpenLayers.Rule({symbolizer:this.drawSymbolizers})]);this.drawStyleMap=new OpenLayers.StyleMap({"default":this.drawStyle});},initializeMeasureStyle:function(){this.measureStyle=new OpenLayers.Style();this.measureStyle.addRules([new OpenLayers.Rule({symbolizer:this.measureSymbolizers})]);this.measureStyleMap=new OpenLayers.StyleMap({"default":this.measureStyle});},initializeVectorStyle:function(){var vectorDefaultStyle=new OpenLayers.Style();vectorDefaultStyle.addRules([new OpenLayers.Rule({symbolizer:this.vectorDefaultSymbolizers})]);var vectorSelectStyle=new OpenLayers.Style();vectorSelectStyle.addRules([new OpenLayers.Rule({symbolizer:this.vectorSelectSymbolizers})]);var vectorDeleteStyle=new OpenLayers.Style();vectorDeleteStyle.addRules([new OpenLayers.Rule({symbolizer:this.vectorDeleteSymbolizers})]);var vectorInsertStyle=new OpenLayers.Style();vectorInsertStyle.addRules([new OpenLayers.Rule({symbolizer:this.vectorInsertSymbolizers})]);var vectorUpdateStyle=new OpenLayers.Style();vectorUpdateStyle.addRules([new OpenLayers.Rule({symbolizer:this.vectorUpdateSymbolizers})]);this.vectorStyleMap=new OpenLayers.StyleMap({"default":vectorDefaultStyle,"select":vectorSelectStyle,"delete":vectorDeleteStyle,"insert":vectorInsertStyle,"update":vectorUpdateStyle});},CLASS_NAME:"IDEOL.Styles"});Ext.namespace("IDEOL");IDEOL.Extension=Ext.extend(Object,{setIDEOL:function(ideol){this.ideol=ideol;},onUpdate:function(){},onCreate:function(){},onLogin:function(){},onLogout:function(){},CLASS_NAME:"IDEOL.Extension"});
