
/* Merged Plone Javascript file
 * This file is dynamically assembled from separate parts.
 * Some of these parts have 3rd party licenses or copyright information attached
 * Such information is valid for that section,
 * not for the entire composite file
 * originating files are separated by - filename.js -
 */

/* - kupunoi18n.js - */
// http://right2info.org/portal_javascripts/kupunoi18n.js?original=1
window._=function(msgid,interpolations){if(interpolations){for(var id in interpolations){var value=interpolations[id];var reg=new RegExp('\\\$\\\{'+id+'\\\}','g');msgid=msgid.replace(reg,""+value)}};return msgid};

/* - sarissa_ieemu_xpath.js - */
// http://right2info.org/portal_javascripts/sarissa_ieemu_xpath.js?original=1
if(_SARISSA_HAS_DOM_FEATURE&&document.implementation.hasFeature("XPath","3.0")){
function SarissaNodeList(i){this.length=i};SarissaNodeList.prototype.item=function(i){return(i<0||i>=this.length)?null:this[i]};SarissaNodeList.prototype.expr="";if(window.XMLDocument&&(!XMLDocument.prototype.setProperty)){XMLDocument.prototype.setProperty=function(x,y){}};Sarissa.setXpathNamespaces=function(oDoc,sNsSet){oDoc._sarissa_useCustomResolver=true;var namespaces=sNsSet.indexOf(" ")>-1?sNsSet.split(" "):[sNsSet];oDoc._sarissa_xpathNamespaces=[namespaces.length];for(var i=0;i<namespaces.length;i++){var ns=namespaces[i];var colonPos=ns.indexOf(":");var assignPos=ns.indexOf("=");if(colonPos>0&&assignPos>colonPos+1){var prefix=ns.substring(colonPos+1,assignPos);var uri=ns.substring(assignPos+2,ns.length-1);oDoc._sarissa_xpathNamespaces[prefix]=uri}else{throw "Bad format on namespace declaration(s) given"}}};XMLDocument.prototype._sarissa_useCustomResolver=false;XMLDocument.prototype._sarissa_xpathNamespaces=[];XMLDocument.prototype.selectNodes=function(sExpr,contextNode,returnSingle){var nsDoc=this;var nsresolver=this._sarissa_useCustomResolver?
function(prefix){var s=nsDoc._sarissa_xpathNamespaces[prefix];if(s)return s;else throw "No namespace URI found for prefix: '"+prefix+"'"}:this.createNSResolver(this.documentElement);var result=null;if(!returnSingle){var oResult=this.evaluate(sExpr,(contextNode?contextNode:this),nsresolver,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);var nodeList=new SarissaNodeList(oResult.snapshotLength);nodeList.expr=sExpr;for(var i=0;i<nodeList.length;i++){nodeList[i]=oResult.snapshotItem(i)}
result=nodeList}
else{result=oResult=this.evaluate(sExpr,(contextNode?contextNode:this),nsresolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue};return result};Element.prototype.selectNodes=function(sExpr){var doc=this.ownerDocument;if(doc.selectNodes){return doc.selectNodes(sExpr,this)}
else{throw "Method selectNodes is only supported by XML Elements"}};XMLDocument.prototype.selectSingleNode=function(sExpr,contextNode){var ctx=contextNode?contextNode:null;return this.selectNodes(sExpr,ctx,true)};Element.prototype.selectSingleNode=function(sExpr){var doc=this.ownerDocument;if(doc.selectSingleNode){return doc.selectSingleNode(sExpr,this)} else{throw "Method selectNodes is only supported by XML Elements"}};Sarissa.IS_ENABLED_SELECT_NODES=true}

/* - kupuhelpers.js - */
// http://right2info.org/portal_javascripts/kupuhelpers.js?original=1
function newDocumentElement(doc,tagName,args){if(_SARISSA_IS_IE){var attrs=[tagName];for(var a=1;a<args.length;a++){var arg=args[a];if(arg.length===undefined){for(var attr in arg){var val=arg[attr];if(val===true) val=attr;if(val===false) continue;if(attr=='className') attr='class';attrs.push(attr+'="'+val.replace(/"/,'&quot;')+'"')}}};tagName="<"+attrs.join(' ')+"></"+tagName+">"}
var node=doc.createElement(tagName);for(var a=1;a<args.length;a++){var arg=args[a];if(arg.length===undefined){if(!_SARISSA_IS_IE){for(var attr in arg){if (/^on/.test(attr)){node.setAttribute(attr,arg[attr])} else{node[attr]=arg[attr]}}}} else{for(var i=0;i<arg.length;i++){if(typeof(arg[i])=='string'){node.appendChild(doc.createTextNode(arg[i]))} else{node.appendChild(arg[i])}}}}
return node}
function newElement(tagName){return newDocumentElement(document,tagName,arguments)}
function addEventHandler(element,event,method,context){var wrappedmethod=new ContextFixer(method,context);var args=[null,null];for(var i=4;i<arguments.length;i++){args.push(arguments[i])};wrappedmethod.args=args;try{if(element.addEventListener){element.addEventListener(event,wrappedmethod.execute,false)} else if(element.attachEvent){element.attachEvent("on"+event,wrappedmethod.execute)} else{throw _("Unsupported browser!")};return wrappedmethod.execute} catch(e){var msg=_('exception ${message} while registering an event handler '+'for element ${element}, event ${event}, method ${method}, ',{'message':e.message,'element':element,'event':event,'method':method});if(e.stack){msg+=_('\r\ntraceback:\r\n${traceback}',{'traceback':e.stack})};alert(msg)}};
function removeEventHandler(element,event,method){if(element.removeEventListener){element.removeEventListener(event,method,false)} else if(element.detachEvent){element.detachEvent("on"+event,method)} else{throw _("Unsupported browser!")}};
function getFromSelector(selector){var match=/#(\S+)\s*([^ .]+)\.(\S+)/.exec(selector);if(!match){return window.document.getElementById(selector)}
var id=match[1],tag=match[2],className=match[3];var base=window.document.getElementById(id);return getBaseTagClass(base,tag,className)}
function getBaseTagClass(base,tag,className){var classPat=new RegExp('\\b'+className+'\\b');var nodes=base.getElementsByTagName(tag);for(var i=0;i<nodes.length;i++){if(classPat.test(nodes[i].className)){return nodes[i]}}
return null}
function openPopup(url,width,height,properties){var allprops='width='+width+',height='+height;if(properties){allprops+=','+properties};var win=window.open(url,'someWindow',allprops);return win};
function selectSelectItem(select,item){for(var i=0;i<select.options.length;i++){var option=select.options[i];if(option.value==item){select.selectedIndex=i;return}}
select.selectedIndex=0};
function parentWithStyleChecker(tagnames,style,stylevalue,command){return function(selNode,button,editor,event){if(command){var result=editor.getInnerDocument().queryCommandState(command);if(result||editor.getSelection().getContentLength()==0){return result}};var currnode=selNode;while(currnode&&currnode.style){for(var i=0;i<tagnames.length;i++){if(currnode.nodeName.toLowerCase()==tagnames[i].toLowerCase()){return true}};if(style&&currnode.style[style]==stylevalue){return true};currnode=currnode.parentNode};return false}};
function _load_dict_helper(element){var dict={};for(var i=0;i<element.childNodes.length;i++){var child=element.childNodes[i];if(child.nodeType==1){var value='';for(var j=0;j<child.childNodes.length;j++){if(child.childNodes[j].nodeType==1){value=_load_dict_helper(child);break} else if(typeof(value)==typeof('')){value+=child.childNodes[j].nodeValue}};if(typeof(value)==typeof('')&&!isNaN(parseInt(value))&&parseInt(value).toString().length==value.length){value=parseInt(value)} else if(typeof(value)!=typeof('')){if(value.length==1){value=value[0]}};var name=child.nodeName.toLowerCase();var attr=child.attributes[0];if(attr&&!(/^([^_]|_moz)/.test(attr.name))){name+=attr.name.toLowerCase()}
if(dict[name]!=undefined){if(!dict[name].push){dict[name]=[dict[name],value]} else{dict[name].push(value)}} else{dict[name]=value}}};return dict};
function loadDictFromXML(document,islandid){var dict={};var confnode=getFromSelector(islandid);var root=null;for(var i=0;i<confnode.childNodes.length;i++){if(confnode.childNodes[i].nodeType==1){root=confnode.childNodes[i];break}};if(!root){throw(_('No element found in the config island!'))};dict=_load_dict_helper(root);return dict};
function NodeIterator(node,continueatnextsibling){this.node=node;this.current=node;this.terminator=continueatnextsibling?null:node;this.next=function(){if(this.current===false){this.current=this.node};var current=this.current;if(current.firstChild){this.current=current.firstChild} else{while(current!==this.terminator&&!current.nextSibling){current=current.parentNode};if(current===this.terminator){this.current=false} else{this.current=current.nextSibling}};return this.current};this.reset=function(){this.current=this.node};this.setCurrent=function(node){this.current=node}};
function BaseSelection(){this.splitNodeAtSelection=function(node){if(!this.selectionInsideNode(node)){throw(_('Selection not inside the node!'))};var doc=this.document.getDocument();var br=doc.createElement('br');br.setAttribute('node_splitter','indeed');this.replaceWithNode(br);var clone=node.cloneNode(true);var iterator=new NodeIterator(node);var currnode=iterator.next();var remove=false;while(currnode){if(currnode.nodeName.toLowerCase()=='br'&&currnode.getAttribute('node_splitter')=='indeed'){remove=true};var lastnode=currnode;currnode=iterator.next();if(remove&&(lastnode.nodeType==3||!lastnode.hasChildNodes())){lastnode.parentNode.removeChild(lastnode)}};var iterator=new NodeIterator(clone);var currnode=iterator.next();var remove=true;while(currnode){var lastnode=currnode;currnode=iterator.next();if(lastnode.nodeName.toLowerCase()=='br'&&lastnode.getAttribute('node_splitter')=='indeed'){lastnode.parentNode.removeChild(lastnode);remove=false};if(remove&&(lastnode.nodeType==3||!lastnode.hasChildNodes())){lastnode.parentNode.removeChild(lastnode)}};if(node.nextSibling){node.parentNode.insertBefore(clone,node.nextSibling)} else{node.parentNode.appendChild(clone)};this.reset();return clone};this.selectionInsideNode=function(node){var currnode=this.parentElement();while(currnode){if(currnode==node){return true};currnode=currnode.parentNode};return false}};
function MozillaSelection(document){var win=document.getWindow();this.document=document;this.selection=win.getSelection();this._createRange=function(){return this.document.getDocument().createRange()};this.selectNodeContents=function(node){if(node&&node.parentNode){var sel=this.selection;sel.removeAllRanges();if(sel.selectAllChildren&&node.nodeType==1){sel.selectAllChildren(node)} else{var range=this._createRange();try{range.selectNode(node)} catch(e){range.selectNodeContents(node)};sel.addRange(range)}}};this.collapse=function(collapseToEnd){try{if(!this.selection) this.reset();if(!collapseToEnd){this.selection.collapseToStart()} else{this.selection.collapseToEnd()}} catch(e){}};this.replaceWithNode=function(node,selectAfterPlace){var range=this.selection.getRangeAt(0);this.selection.removeAllRanges();range.deleteContents();var container=range.startContainer;var pos=range.startOffset;var range=this._createRange();if(container.nodeType==3&&node.nodeType==3){container.insertData(pos,node.nodeValue);range.setEnd(container,pos+node.length);range.setStart(container,pos+node.length)} else{var afterNode;if(container.nodeType==3){var textNode=container;var container=textNode.parentNode;var text=textNode.nodeValue;var textBefore=text.substr(0,pos);var textAfter=text.substr(pos);var beforeNode=this.document.getDocument().createTextNode(textBefore);afterNode=this.document.getDocument().createTextNode(textAfter);container.insertBefore(afterNode,textNode);container.insertBefore(node,afterNode);container.insertBefore(beforeNode,node);container.removeChild(textNode)} else{afterNode=container.childNodes[pos];if(afterNode){container.insertBefore(node,afterNode)} else{container.appendChild(node);afterNode=container.nextSibling}}
range.setEndAfter(node);range.collapse(false)}
if(selectAfterPlace){this.selection=win.getSelection();this.selection.addRange(range);if(selectAfterPlace.nodeType==1){this.selection.selectAllChildren(selectAfterPlace)} else{if(node.hasChildNodes()){this.selection.selectAllChildren(node)} else{var range=this.selection.getRangeAt(0).cloneRange();this.selection.removeAllRanges();range.selectNode(node);this.selection.addRange(range)}};win.focus()};return node};this.startOffset=function(){var startnode=this.startNode();var startnodeoffset=0;if(startnode==this.selection.anchorNode){startnodeoffset=this.selection.anchorOffset} else{startnodeoffset=this.selection.focusOffset};var parentnode=this.parentElement();if(startnode==parentnode){return startnodeoffset};var currnode=parentnode.firstChild;var offset=0;if(!currnode){if(startnodeoffset!=0){throw(_('Start node offset detected in a node without children!'))};return 0};while(currnode!=startnode){if(currnode.nodeType==3){offset+=currnode.nodeValue.length};while(!currnode.nextSibling){currnode=currnode.parentNode};currnode=currnode.nextSibling};return offset+startnodeoffset};this.startNode=function(){var anode=this.selection.anchorNode;var aoffset=this.selection.anchorOffset;var onode=this.selection.focusNode;var ooffset=this.selection.focusOffset;var arange=this._createRange();arange.setStart(anode,aoffset);var orange=this._createRange();orange.setStart(onode,ooffset);return arange.compareBoundaryPoints('START_TO_START',orange)<=0?anode:onode};this.endOffset=function(){var endnode=this.endNode();var endnodeoffset=0;if(endnode==this.selection.focusNode){endnodeoffset=this.selection.focusOffset} else{endnodeoffset=this.selection.anchorOffset};var parentnode=this.parentElement();var currnode=parentnode.firstChild;var offset=0;if(parentnode==endnode){for(var i=0;i<parentnode.childNodes.length;i++){var child=parentnode.childNodes[i];if(i==endnodeoffset){return offset};if(child.nodeType==3){offset+=child.nodeValue.length}}};if(!currnode){if(endnodeoffset!=0){var msg=_('End node offset detected in a node without '+'children!');alert(msg);throw(msg)};return 0};while(currnode&&currnode!=endnode){if(currnode.nodeType==3){offset+=currnode.nodeValue.length};currnode=currnode.nextSibling};return offset+endnodeoffset};this.endNode=function(){var anode=this.selection.anchorNode;var aoffset=this.selection.anchorOffset;var onode=this.selection.focusNode;var ooffset=this.selection.focusOffset;var arange=this._createRange();arange.setStart(anode,aoffset);var orange=this._createRange();orange.setStart(onode,ooffset);return arange.compareBoundaryPoints('START_TO_START',orange)>0?anode:onode};this.getContentLength=function(){return this.selection.toString().length};this.cutChunk=function(startOffset,endOffset){var range=this.selection.getRangeAt(0);var offsetParent=this.parentElement();var currnode=offsetParent.firstChild;var curroffset=0;var startparent=null;var startparentoffset=0;while(currnode){if(currnode.nodeType==3){var nodelength=currnode.nodeValue.length;if(curroffset+nodelength<startOffset){curroffset+=nodelength} else{startparent=currnode;startparentoffset=startOffset-curroffset;break}};currnode=currnode.nextSibling};var currnode=offsetParent.firstChild;var curroffset=0;var endparent=null;var endparentoffset=0;while(currnode){if(currnode.nodeType==3){var nodelength=currnode.nodeValue.length;if(curroffset+nodelength<endOffset){curroffset+=nodelength} else{endparent=currnode;endparentoffset=endOffset-curroffset;break}};currnode=currnode.nextSibling};if(!startparent){throw(_('Start offset out of range!'))};if(!endparent){throw(_('End offset out of range!'))};var newrange=range.cloneRange();newrange.setStart(startparent,startparentoffset);newrange.setEnd(endparent,endparentoffset);return newrange.extractContents()};this.getElementLength=function(element){var length=0;var currnode=element.firstChild;while(currnode){if(currnode.nodeType==3){length+=currnode.nodeValue.length};currnode=currnode.nextSibling};return length};this.parentElement=function(allowmulti){if(!this.selection){return null}
if(this.selection.rangeCount==0){var parent=this.document.getDocument().body;while(parent.firstChild){parent=parent.firstChild}} else{var range=this.selection.getRangeAt(0);var parent=this.parentElementOfRange(range);if(allowmulti){var numRanges=this.selection.rangeCount;for(var i=1;i<numRanges;i=i+1){var parent1=parent;var parent2=null;var range1=this._createRange();var range2=this._createRange();var parent2=this.parentElementOfRange(this.selection.getRangeAt(i));range1.selectNode(parent1);range2.selectNode(parent2);if(range1.compareBoundaryPoints(Range.START_TO_START,range2)<=0&&range1.compareBoundaryPoints(Range.END_TO_END,range2)>=0){parent=parent1} else if(range1.compareBoundaryPoints(Range.START_TO_START,range2)>=0&&range1.compareBoundaryPoints(Range.END_TO_END,range2)<=0){parent=parent2} else if(range1.compareBoundaryPoints(Range.START_TO_END,range2)<=0){var coverRange=this._createRange();coverRange.setStartBefore(parent1);coverRange.setEndAfter(parent2);parent=coverRange.commonAncestorContainer} else{var coverRange=this._createRange();coverRange.setStartBefore(parent2);coverRange.setEndAfter(parent1);parent=coverRange.commonAncestorContainer}}}};if(parent.nodeType==Node.TEXT_NODE){parent=parent.parentNode};return parent};this.parentElementOfRange=function(range){if(range.compareBoundaryPoints(Range.START_TO_END,range)<0){var startNode=range.endContainer;var startOffset=range.endOffset;var endNode=range.startContainer;var endOffset=range.startOffset;range.setStart(startNode,startOffset);range.setEnd(endNode,endOffset)}
var parent=range.commonAncestorContainer;var inv=range.compareBoundaryPoints(Range.START_TO_END,range)<0;var startNode=inv?range.endContainer:range.startContainer;var startOffset=inv?range.endOffset:range.startOffset;var endNode=inv?range.startContainer:range.endContainer;var endOffset=inv?range.startOffset:range.endOffset;var selectedChild=null;var child=parent.firstChild;while(child){if(range.intersectsNode(child)&&!(child==startNode&&startOffset==child.length)&&!(child==endNode&&endOffset==0)){if(selectedChild){selectedChild=null;break} else{selectedChild=child}} else if(selectedChild){break};child=child.nextSibling};if(selectedChild){parent=selectedChild};if(parent.nodeType==Node.TEXT_NODE){parent=parent.parentNode};return parent};this.getSelectedNode=this.parentElement;this.moveStart=function(offset){var offsetparent=this.parentElement();var startoffset=this.startOffset();var realoffset=offset+startoffset;if(realoffset>=0){var currnode=offsetparent.firstChild;var curroffset=0;while(currnode){if(currnode.nodeType==3){var nodelength=currnode.nodeValue.length;if(curroffset+nodelength>=realoffset){var range=this.selection.getRangeAt(0);range.setStart(currnode,realoffset-curroffset);return}};currnode=currnode.nextSibling};var currnode=offsetparent.nextSibling;while(currnode){if(currnode.nodeType==3){var nodelength=currnode.nodeValue.length;if(curroffset+nodelength>=realoffset){var range=this.selection.getRangeAt(0);var endnode=this.endNode();var endoffset=this.endOffset();range.setEnd(currnode,realoffset-curroffset);range.setStart(endnode,endoffset);return};curroffset+=nodelength};currnode=currnode.nextSibling};throw(_('Offset out of document range'))} else if(realoffset<0){var currnode=offsetparent.prevSibling;var curroffset=0;while(currnode){if(currnode.nodeType==3){var currlength=currnode.nodeValue.length;if(curroffset-currlength<realoffset){var range=this.selection.getRangeAt(0);range.setStart(currnode,realoffset-curroffset)};curroffset-=currlength};currnode=currnode.prevSibling}} else{var range=this.selection.getRangeAt(0);range.setStart(offsetparent,0)}};this.moveEnd=function(offset){};this.reset=function(){this.selection=win.getSelection()};this.cloneContents=function(){var range=this.selection.getRangeAt(0);return range.cloneContents()};this.containsNode=function(node){var sel=this.selection;if(sel.containsNode){return sel.containsNode(node,true)} else{for(var i=0;i<sel.rangeCount;i++){if(sel.getRangeAt(i).containsNode(node)){return true}};return false}};this.toString=function(){return this.selection.toString()};this.getRange=function(){if(this.selection&&this.selection.rangeCount>0){return this.selection.getRangeAt(0)}};this.restoreRange=function(range){var selection=this.selection;if(selection){selection.removeAllRanges();selection.addRange(range)}};if(!win.Range.prototype.intersectsNode){win.Range.prototype.intersectsNode=function(node){var nodeRange=node.ownerDocument.createRange();try{nodeRange.selectNode(node)} catch(e){nodeRange.selectNodeContents(node)};return this.compareBoundaryPoints(Range.END_TO_START,nodeRange)==-1&&this.compareBoundaryPoints(Range.START_TO_END,nodeRange)==1}};this.intersectsNode=function(node){for(var i=0;i<this.selection.rangeCount;i++){if(this.selection.getRangeAt(i).intersectsNode(node)){return true}};return false};if(!win.Range.prototype.containsNode){win.Range.prototype.containsNode=function(node){var nodeRange=node.ownerDocument.createRange();try{nodeRange.selectNode(node)} catch(e){nodeRange.selectNodeContents(node)};return this.compareBoundaryPoints(Range.START_TO_START,nodeRange)!=-1&&this.compareBoundaryPoints(Range.END_TO_END,nodeRange)!=1}}};MozillaSelection.prototype=new BaseSelection;
function IESelection(document){this.document=document;this.selection=document.getDocument().selection;var doc=document.getDocument();var range=this.selection.createRange();var parent=this.selection.type=="Text"?range.parentElement():this.selection.type=="Control"?range.parentElement:null;if(parent&&parent.ownerDocument!=doc){var range=doc.body.createTextRange();range.collapse();range.select();this.reset()}
this.selectNodeContents=function(node){var range=doc.body.createTextRange();range.moveToElementText(node);range.moveStart('character',1);range.moveStart('character',-1);range.moveEnd('character',-1);range.moveEnd('character',1);range.select();this.reset()};this.collapse=function(collapseToEnd){var range=this.selection.createRange();range.collapse(!collapseToEnd);range.select();this.reset()};this.replaceWithNode=function(newnode,selectAfterPlace){if(this.selection.type=='Control'){var range=this.selection.createRange();range.item(0).parentNode.replaceChild(newnode,range.item(0));for(var i=1;i<range.length;i++){range.item(i).parentNode.removeChild(range[i])};if(selectAfterPlace){var range=this.document.getDocument().body.createTextRange();range.moveToElementText(newnode);range.select()}} else{var document=this.document.getDocument();var range=this.selection.createRange();range.pasteHTML('<img id="kupu-tempnode">');var tempnode=document.getElementById('kupu-tempnode');tempnode.replaceNode(newnode);if(selectAfterPlace){if(selectAfterPlace.nodeType==Node.ELEMENT_NODE){range.moveToElementText(selectAfterPlace)} else{range.moveToElementText(newnode)};range.select()}};this.reset();return newnode};this.startOffset=function(){var startoffset=0;var selrange=this.selection.createRange();var parent=selrange.parentElement();var elrange=selrange.duplicate();elrange.moveToElementText(parent);var tempstart=selrange.duplicate();while(elrange.compareEndPoints('StartToStart',tempstart)<0){startoffset++;tempstart.moveStart('character',-1)};return startoffset};this.endOffset=function(){var endoffset=0;var selrange=this.selection.createRange();var parent=selrange.parentElement();var elrange=selrange.duplicate();elrange.moveToElementText(parent);var tempend=selrange.duplicate();while(elrange.compareEndPoints('EndToEnd',tempend)>0){endoffset++;tempend.moveEnd('character',1)};return endoffset};this.getContentLength=function(){if(this.selection.type=='Control'){return this.selection.createRange().length};var contentlength=0;var range=this.selection.createRange();var endrange=range.duplicate();while(range.compareEndPoints('StartToEnd',endrange)<0){range.move('character',1);contentlength++};return contentlength};this.cutChunk=function(startOffset,endOffset){var range=this.selection.createRange().duplicate();range.moveStart('character',startOffset);range.moveEnd('character',-endOffset);range.pasteHTML('')};this.getElementLength=function(element){var length=0;var range=this.selection.createRange().duplicate();range.moveToElementText(element);range.moveStart('character',1);range.moveEnd('character',-1);var endpoint=range.duplicate();endpoint.collapse(false);range.collapse();while(!range.isEqual(endpoint)){range.moveEnd('character',1);range.moveStart('character',1);length++};return length};this.parentElement=function(allowmulti){if(this.selection.type=='Control'){return this.selection.createRange().item(0)} else{return this.selection.createRange().parentElement()}};this.getSelectedNode=this.parentElement;this.moveStart=function(offset){var range=this.selection.createRange();range.moveStart('character',offset);range.select();this.reset()};this.moveEnd=function(offset){var range=this.selection.createRange();range.moveEnd('character',offset);range.select();this.reset()};this.reset=function(){this.selection=this.document.getDocument().selection};this.cloneContents=function(){var contents=this.selection.createRange().htmlText;var doc=this.document.getDocument();var docfrag=doc.createElement('span');docfrag.innerHTML=contents;return docfrag};this.containsNode=function(node){var selected=this.selection.createRange();if(this.selection.type.toLowerCase()=='text'){var range=doc.body.createTextRange();range.moveToElementText(node);if(selected.compareEndPoints('StartToEnd',range)>=0||selected.compareEndPoints('EndToStart',range)<=0){return false}
return true} else{for(var i=0;i<selected.length;i++){if(selected.item(i).contains(node)){return true}}
return false}};this.getRange=function(){return this.selection.createRange()};this.restoreRange=function(range){try{range.select();this.reset()} catch(e){}};this.toString=function(){return this.selection.createRange().text};this.intersectsNode=function(node){var noderange=doc.body.createTextRange();noderange.moveToElementText(node);var selrange=this.selection.createRange();if((selrange.compareEndPoints('StartToStart',noderange)<=0&&selrange.compareEndPoints('EndToStart',noderange)>0)||(selrange.compareEndPoints('StartToStart',noderange)>0&&selrange.compareEndPoints('StartToEnd',noderange)<0)){return true}
return false}};IESelection.prototype=new BaseSelection;
function ContextFixer(func,context){this.func=func;this.context=context;this.args=arguments;var self=this;this.execute=function(){var args=[];for(var i=0;i<self.args.length-2;i++){args.push(self.args[i+2])};for(var i=0;i<arguments.length;i++){args.push(arguments[i])};return self.func.apply(self.context,args)}};
function Timer(){this.lastid=0;this.functions={};this.registerFunction=function(object,func,timeout){var args=[];for(var i=0;i<arguments.length-3;i++){args.push(arguments[i+3])}
var id=this._createUniqueId();this.functions[id]=[object,func,args];setTimeout("timer_instance._handleFunction("+id+")",timeout)};this._handleFunction=function(id){var obj=this.functions[id][0];var func=this.functions[id][1];var args=this.functions[id][2];this.functions[id]=null;func.apply(obj,args)};this._createUniqueId=function(){while(this.lastid in this.functions&&this.functions[this.lastid]){this.lastid++;if(this.lastid>100000){this.lastid=0}}
return this.lastid}};timer_instance=new Timer();Array.prototype.contains=function(element,objectequality){for(var i=0;i<this.length;i++){if(objectequality){if(element===this[i]){return true}} else{if(element==this[i]){return true}}};return false};Array.prototype.removeDoubles=function(){var ret=[];for(var i=0;i<this.length;i++){if(!ret.contains(this[i])){ret.push(this[i])}};return ret};Array.prototype.map=function(func){for(var i=0;i<this.length;i++){this[i]=func(this[i])}};Array.prototype.reversed=function(){var ret=[];for(var i=this.length;i>0;i--){ret.push(this[i-1])};return ret};String.prototype.strip=function(){var stripspace=/^\s*([\s\S]*?)\s*$/;return stripspace.exec(this)[1]};String.prototype.reduceWhitespace=function(){return this.replace(/\s+/g,' ')};String.prototype.truncate=function(len){if(this.length<=len){return this} else{var trimmed=this.substring(0,len+1).replace(/\s[^\s]*$/,'...');return trimmed}};String.prototype.entitize=function(){var ret=this.replace(/&/g,'&amp;');ret=ret.replace(/"/g,'&quot;');ret=ret.replace(/'/g, '&apos;');ret=ret.replace(/</g,'&lt;');ret=ret.replace(/>/g,'&gt;');return ret};String.prototype.deentitize=function(){var ret=this.replace(/&gt;/g,'>');ret=ret.replace(/&lt;/g,'<');ret=ret.replace(/&apos;/g,"'");ret=ret.replace(/&quot;/g,'"');ret=ret.replace(/&amp;/g,'&');return ret};String.prototype.urldecode=function(){var reg=/%([a-fA-F0-9]{2})/g;var str=this;while(true){var match=reg.exec(str);if(!match||!match.length){break};var repl=new RegExp(match[0],'g');str=str.replace(repl,String.fromCharCode(parseInt(match[1],16)))};return str};String.prototype.centerTruncate=function(maxlength){if(this.length<=maxlength){return this};var chunklength=maxlength/2-3;var start=this.substr(0,chunklength);var end=this.substr(this.length-chunklength);return start+' ... '+end};
function debug(str,win){if(!win){win=window};var doc=win.document;var div=doc.createElement('div');div.appendChild(doc.createTextNode(str));doc.getElementsByTagName('body')[0].appendChild(div)};
function Exception(){return};UpdateStateCancelBubble=new Exception();
function kupuFixImage(image){image.removeAttribute('width');image.removeAttribute('height');var width=image.naturalWidth||image.width;var height=image.naturalHeight||image.height;if(height>width){if(height>128){width=width * 128/height;height=128}} else{if(width>128){height=height * 128/width;width=128}};if(width&&height){image.height=height;image.width=width}}
function toggleAltFieldVisibility(me){var label=document.getElementById('image-alt-label');var vis=me.checked?'none':'';if(label){label.style.display=vis;var fld=document.getElementById(label.htmlFor);if(fld){fld.style.display=vis}}}
function getOuterHtml(node){var html='<';html+=node.nodeName.toLowerCase();var attrs=node.attributes;for(var a=0;a<attrs.length;a++){var att=attrs[a];if(att.specified){html+=' '+att.nodeName.toLowerCase()+'="'+att.nodeValue+'"'}}
html+='>';if(!(/hr|br|img|input/i.test(node.nodeName))){html+=node.innerHTML;html+='<\/'+node.nodeName.toLowerCase()+'>'}
return html}


/* - kupueditor.js - */
// http://right2info.org/portal_javascripts/kupueditor.js?original=1
function KupuDocument(iframe){this.editable=iframe;this.window=this.editable.contentWindow;this.document=this.window.document;this._browser=_SARISSA_IS_IE?'IE':'Mozilla';var DEPRECATED={'contentReadOnly':'readonly','styleWithCSS':'useCSS'};this.execCommand=function(command,arg){if(arg===undefined) arg=null;try{this.document.execCommand(command,false,arg)} catch(e){command=DEPRECATED[command];if(command){this.document.execCommand(command,false,!arg)}}};this.reloadSource=function(){document.location=document.location};this.getDocument=function(){return this.document};this.getWindow=function(){return this.window};this.getSelection=function(){if(this._browser=='Mozilla'){return new MozillaSelection(this)} else{return new IESelection(this)}};this.getEditable=function(){return this.editable}};
function KupuEditor(document,config,logger){this.document=document;this.config=config;this.log=logger;this.tools={};this.filters=[];this.serializer=new XMLSerializer();this._designModeSetAttempts=0;this._initialized=false;this._wantDesignMode=false;this._previous_range=null;this.content_changed=false;this.initialize=function(){this._initializeEventHandlers();if(this.getBrowserName()=="IE"){var body=this.getInnerDocument().getElementsByTagName('body')[0];body.setAttribute('contentEditable','true');this._initialized=true;if(this.afterInit){this.afterInit()};this._saveSelection()} else{this._setDesignModeWhenReady()}};this.setContextMenu=function(menu){menu.initialize(this)};this.registerTool=function(id,tool){this.tools[id]=tool;tool.initialize(this)};this.getTool=function(id){return this.tools[id]};this.registerFilter=function(filter){this.filters.push(filter);filter.initialize(this)};this.updateStateHandler=function(event){var interesting_codes=[8,13,37,38,39,40,46];this._saveSelection();if(event.type=='click'||(event.type=='keyup'&&interesting_codes.contains(event.keyCode))){this.updateState(event)}};this.updateState=function(event){var selNode=this.getSelectedNode();for(var id in this.tools){try{this.tools[id].updateState(selNode,event)} catch(e){if(e==UpdateStateCancelBubble){this.updateState(event);break} else{this.logMessage('Exception while processing updateState on '+'${id}: ${msg}',{'id':id,'msg':e},2)}}}};this.saveDocument=function(redirect,synchronous){if(!this.config.dst){this.logMessage(_('No destination URL available!'),2);return}
var sourcetool=this.getTool('sourceedittool');if(sourcetool){sourcetool.cancelSourceMode()};if(!this._initialized){return}
this._initialized=false;window.status=_("Please wait while saving document...");for(var id in this.tools){var tool=this.tools[id];if(tool.beforeSave){try{tool.beforeSave()} catch(e){alert(e);this._initialized=true;return}}};this.logMessage(_("Starting HTML cleanup"));var transform=this._filterContent(this.getInnerDocument().documentElement);var contents=this._serializeOutputToString(transform);this.logMessage(_("Cleanup done, sending document to server"));var request=new XMLHttpRequest();if(!synchronous){request.onreadystatechange=(new ContextFixer(this._saveCallback,this,request,redirect)).execute;request.open("PUT",this.config.dst,true);request.setRequestHeader("Content-type",this.config.content_type);request.send(contents);this.logMessage(_("Request sent to server"))} else{this.logMessage(_('Sending request to server'));request.open("PUT",this.config.dst,false);request.setRequestHeader("Content-type",this.config.content_type);request.send(contents);this.handleSaveResponse(request,redirect)}};this.prepareForm=function(form,id){var sourcetool=this.getTool('sourceedittool');if(sourcetool){sourcetool.cancelSourceMode()};if(!this._initialized){return}
this._initialized=false;window.status=_("Please wait while saving document...");for(var tid in this.tools){var tool=this.tools[tid];if(tool.beforeSave){try{tool.beforeSave()} catch(e){alert(e);this._initialized=true;return}}};if(!id){id='kupu'};this.logMessage(_("Starting HTML cleanup"));var transform=this._filterContent(this.getInnerDocument().documentElement);var contents=this._serializeOutputToString(transform);this.logMessage(_("Cleanup done, sending document to server"));var document=form.ownerDocument?form.ownerDocument:window.document;var ta=document.createElement('textarea');ta.style.visibility='hidden';var text=document.createTextNode(contents);ta.appendChild(text);ta.setAttribute('name',id);form.appendChild(ta);return true};this.execCommand=function(command,param){if(!this._initialized){this.logMessage(_('Editor not initialized yet!'));return};if(this.getBrowserName()=="IE"){this._restoreSelection()} else{this.focusDocument();if(command!='styleWithCSS'){this.content_changed=true;this.getDocument().execCommand('styleWithCSS',false)}};this.getDocument().execCommand(command,param);this.updateState()};this.getSelection=function(){this._restoreSelection();return this.getDocument().getSelection()};this.getSelectedNode=function(allowmulti){return this.getSelection().parentElement(allowmulti)};this.getNearestParentOfType=function(node,type){var type=type.toLowerCase();while(node){if(node.nodeName.toLowerCase()==type){return node}
var node=node.parentNode}
return false};this.removeNearestParentOfType=function(node,type){var nearest=this.getNearestParentOfType(node,type);if(!nearest){return false};var parent=nearest.parentNode;while(nearest.childNodes.length){var child=nearest.firstChild;child=nearest.removeChild(child);parent.insertBefore(child,nearest)};parent.removeChild(nearest)};this.getDocument=function(){return this.document};this.getInnerDocument=function(){return this.getDocument().getDocument()};this.insertNodeAtSelection=function(insertNode,selectNode){if(!this._initialized){this.logMessage(_('Editor not initialized yet!'));return};this.content_changed=true;var browser=this.getBrowserName();if(browser!="IE"){this.focusDocument()};var ret=this.getSelection().replaceWithNode(insertNode,selectNode);this._saveSelection();return ret};this.focusDocument=function(){this.getDocument().getWindow().focus()};this.logMessage=function(message,severity){this.log.log(message,severity)};this.registerContentChanger=function(element){addEventHandler(element,'change', function(){this.content_changed=true},this)};this.getBrowserName=function(){if(_SARISSA_IS_MOZ){return "Mozilla"} else if(_SARISSA_IS_IE){return "IE"} else{throw _("Browser not supported!")}};this.handleSaveResponse=function(request,redirect){if(request.status!='200'&&request.status!='204'&&request.status!='1223'){var msg=_('Error saving your data.\nResponse status: '+'${status}.\nCheck your server log for more '+'information.',{'status':request.status});alert(msg);window.status=_("Error saving document")} else if(redirect){window.document.location=redirect;this.content_changed=false} else{this.content_changed=false;if(this.config.reload_after_save){this.reloadSrc()};window.status=_("Document saved")};this._initialized=true};this._addEventHandler=addEventHandler;this._saveCallback=function(request,redirect){if(request.readyState==4){this.handleSaveResponse(request,redirect)}};this.reloadSrc=function(){this.getDocument().reloadSource();if(this.getBrowserName()=="Mozilla"){this.getInnerDocument().designMode="On"}};this.imageInserted=function(event){var node=event.target;if(node&&node.nodeType==1){var nodes=(/^img$/i.test(node.nodeName))?[node]:node.getElementsByTagName('img');for(var i=0;i<nodes.length;i++){node=nodes[i];var src=node.getAttribute('kupu-src');if(src){node.src=src}}}};this.imageModified=function(event){var node=event.target;if(node&&(/^img$/i.test(node.nodeName))){if(event.attrName=="style"&&event.attrChange==1&&(/height|width/.test(event.newValue))){timer_instance.registerFunction(this,this._clearStyle,1,node)}}};this._clearStyle=function(node){var w=node.width;var h=node.height;node.style.width="";node.style.height="";if(this.okresize){if(w){node.width=w};if(h){node.height=h}}};this._cancelResize=function(evt){return false};this._initializeEventHandlers=function(){var win=this.getDocument().getWindow();var idoc=this.getInnerDocument();var e=this._addEventHandler;var validattrs=this.xhtmlvalid.tagAttributes.img;this.okresize=validattrs.contains('width')&&validattrs.contains('height');e(win,'resize',this._resizeHandler,this);e(idoc,"click",this.updateStateHandler,this);e(idoc,"dblclick",this.updateStateHandler,this);e(idoc,"keyup",this.updateStateHandler,this);e(idoc,"keyup", function(){this.content_changed=true},this);e(idoc,"mouseup",this.updateStateHandler,this);if(this.getBrowserName()=="IE"){e(idoc,"selectionchange",this.onSelectionChange,this);if(!this.okresize){e(idoc.documentElement,"resizestart",this._cancelResize,this)}} else{e(idoc,"DOMNodeInserted",this.imageInserted,this);e(idoc,"DOMAttrModified",this.imageModified,this)}};this._resizeHandler=function(){if(this._wantDesignMode){this._setDesignModeWhenReady()}};this._setDesignModeWhenReady=function(){var success=false;try{this._setDesignMode();success=true} catch(e){};if(success){this._wantDesignMode=false;if(this.afterInit){this.afterInit()}} else{this._wantDesignMode=true}};this._setDesignMode=function(){this.getInnerDocument().designMode="On";this.execCommand("undo");this._initialized=true};this._saveSelection=function(){if(this._isDocumentSelected()){var cursel=this.getInnerDocument().selection;var currange=cursel.createRange();if(cursel.type=="Control"&&currange.item(0).nodeName.toLowerCase()=="body"){this._restoreSelection(true);return}
this._previous_range=currange}};this._restoreSelection=function(force){if(this._previous_range&&(force||!this._isDocumentSelected())){try{this._previous_range.select()} catch(e){}}};if(this.getBrowserName()!="IE"){this._saveSelection=function(){};this._restoreSelection=function(){}}
this.onSelectionChange=function(event){this._saveSelection()};this._isDocumentSelected=function(){if(this.suspended) return false;var editable_body=this.getInnerDocument().getElementsByTagName('body')[0];try{var selrange=this.getInnerDocument().selection.createRange()} catch(e){return false}
var someelement=selrange.parentElement?selrange.parentElement():selrange.item(0);while(someelement.nodeName.toLowerCase()!='body'){someelement=someelement.parentNode};return someelement==editable_body};this._clearSelection=function(){this._previous_range=null};this._filterContent=function(documentElement){var xhtmldoc=Sarissa.getDomDocument();var doc=this._convertToSarissaNode(xhtmldoc,documentElement);for(var i=0;i<this.filters.length;i++){var doc=this.filters[i].filter(xhtmldoc,doc)};this._fixXML(doc,xhtmldoc);return doc};this.getXMLBody=function(transform){var bodies=transform.getElementsByTagName('body');var data='';for(var i=0;i<bodies.length;i++){data+=this.serializer.serializeToString(bodies[i])}
return this.layoutsource(this.escapeEntities(data))};this.getHTMLBody=function(){var doc=this.getInnerDocument();var docel=doc.documentElement;var bodies=docel.getElementsByTagName('body');var data='';for(var i=0;i<bodies.length;i++){data+=bodies[i].innerHTML}
return this.layoutsource(this.escapeEntities(data))};this.setHTMLBody=function(text){var doc=this.getInnerDocument().documentElement;var bodies=doc.getElementsByTagName('body');for(var i=0;i<bodies.length-1;i++){bodies[i].parentNode.removeChild(bodies[i])}
if(_SARISSA_IS_IE){text=text.replace(/<!--\[.*?-->/g,'')} else{var fixups={'strong':'b','em':'i'};text=text.replace(/<(\/?)(strong|em)\b([^>]*)>/gi, function(all,close,tag,attrs){tag=fixups[tag.toLowerCase()];return '<'+close+tag+attrs+'>'})};text=text.replace(/<p>(<hr.*?>)<\/p>/g,'$1');bodies[bodies.length-1].innerHTML=text;var nodes=doc.getElementsByTagName('img');for(var i=0;i<nodes.length;i++){var node=nodes[i];node.setAttribute('kupu-src',node.src)}};this._fixXML=function(doc,document){var heads=doc.getElementsByTagName('head');var titles=doc.getElementsByTagName('title');if(!heads.length){var body=doc.getElementsByTagName('body')[0];var head=document.createElement('head');body.parentNode.insertBefore(head,body);var title=document.createElement('title');var titletext=document.createTextNode('');head.appendChild(title);title.appendChild(titletext)} else if(!titles.length){var head=heads[0];var title=document.createElement('title');var titletext=document.createTextNode('');head.appendChild(title);title.appendChild(titletext)};var dualtons=['a','abbr','acronym','address','applet','b','bdo','big','blink','blockquote','button','caption','center','cite','comment','del','dfn','dir','div','dl','dt','em','embed','fieldset','font','form','frameset','h1','h2','h3','h4','h5','h6','i','iframe','ins','kbd','label','legend','li','listing','map','marquee','menu','multicol','nobr','noembed','noframes','noscript','object','ol','optgroup','option','p','pre','q','s','script','select','small','span','strike','strong','style','sub','sup','table','tbody','td','textarea','tfoot','th','thead','title','tr','tt','u','ul','xmp'];for(var i=0;i<dualtons.length;i++){var elname=dualtons[i];var els=doc.getElementsByTagName(elname);for(var j=0;j<els.length;j++){var el=els[j];if(!el.hasChildNodes()){var child=document.createTextNode('');el.appendChild(child)}}}};this.xhtmlvalid=new XhtmlValidation(this);this._convertToSarissaNode=function(ownerdoc,htmlnode){return this.xhtmlvalid._convertToSarissaNode(ownerdoc,htmlnode)};this._fixupSingletons=function(xml){return xml.replace(/<([^>]+)\/>/g,"<$1 />")};this._serializeOutputToString=function(transform){if(this.config.strict_output){var contents='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" '+'"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n'+'<html xmlns="http://www.w3.org/1999/xhtml">'+this.serializer.serializeToString(transform.getElementsByTagName("head")[0])+this.serializer.serializeToString(transform.getElementsByTagName("body")[0])+'</html>'} else{var contents='<html>'+this.serializer.serializeToString(transform.getElementsByTagName("head")[0])+this.serializer.serializeToString(transform.getElementsByTagName("body")[0])+'</html>'};contents=this.escapeEntities(contents);if(this.config.compatible_singletons){contents=this._fixupSingletons(contents)};return contents};this.layoutsource=function(data){data=data.replace(/\s*(<(p|div|h.|ul|ol|dl|menu|dir|pre|blockquote|address|center|table|thead|tbody|tfoot|tr|th|td))\b/ig,'\n$1');data=data.replace(/\s*(<\/(p|div|h.|ul|ol|dl|menu|dir|pre|blockquote|address|center|table|thead|tbody|tfoot|tr|th|td)>)\s*/ig,'$1\n');data=data.replace(/\<pre\>((?:.|\n)*?)\<\/pre\>/gm, function(s){return s.replace(/<br\b[^>]*>/gi,'\n')});return data.strip()};this.escapeEntities=function(xml){xml=xml.replace(/\xa0/g,'&nbsp;');return xml};this.getFullEditor=function(){var fulleditor=this.getDocument().getEditable();while(!(/kupu-fulleditor/.test(fulleditor.className))){fulleditor=fulleditor.parentNode}
return fulleditor};this.setClass=function(name){this.getFullEditor().className+=' '+name};this.clearClass=function(name){var fulleditor=this.getFullEditor();fulleditor.className=fulleditor.className.replace(' '+name,'')};var busycount=0;this.busy=function(){if(busycount<=0){this.setClass('kupu-busy')}
busycount++};this.notbusy=function(force){busycount=force?0:busycount?busycount-1:0;if(busycount<=0){this.clearClass('kupu-busy')}};this.suspendEditing=function(){this._previous_range=this.getSelection().getRange();this.setClass('kupu-modal');for(var id in this.tools){this.tools[id].disable()}
if(this.getBrowserName()=="IE"){var body=this.getInnerDocument().getElementsByTagName('body')[0];body.setAttribute('contentEditable','false')} else{this.getDocument().execCommand('contentReadOnly','true')}
this.suspended=true};this.resumeEditing=function(){if(!this.suspended){return}
this.clearClass('kupu-modal');for(var id in this.tools){this.tools[id].enable()}
if(this.getBrowserName()=="IE"){var body=this.getInnerDocument().getElementsByTagName('body')[0];body.setAttribute('contentEditable','true');this._restoreSelection()} else{var doc=this.getInnerDocument();this.getDocument().execCommand('contentReadOnly','false');doc.designMode="On";this.focusDocument();this.getSelection().restoreRange(this._previous_range)}
this.suspended=false};this.newElement=function(tagName){return newDocumentElement(this.getInnerDocument(),tagName,arguments)};this.newText=function(text){return this.getInnerDocument().createTextNode(text)}}

