
/* - ploneglossary.js - */
// http://www.quadra-informatique.fr/portal_javascripts/ploneglossary.js?original=1
function goto_glossary_definition(definition_index){url=related_glossary_definitions[definition_index]["url"];document.location=url}
function show_glossary_definition_popup(node,definition_index){popup_node=document.createElement("div");popup_node.setAttribute('id',"glossary-definition-popup");title_text=related_glossary_definitions[definition_index]["title"];title_node=document.createElement("h6");title_node.appendChild(document.createTextNode(title_text));popup_node.appendChild(title_node);description_text=related_glossary_definitions[definition_index]["description"];description_node=document.createElement("p");texts=description_text.split('\n')
for(i=0;i<texts.length;i++){text=texts[i];description_node.appendChild(document.createTextNode(text));description_node.appendChild(document.createElement("br"))}
popup_node.appendChild(description_node);if(node.tagName.toUpperCase()=='AREA'){var img_node=getImgFromArea(node);if(img_node){var img_parent_node=img_node.parentNode;img_parent_node.className="glossaryPopupPosition";var p_top=getAreaBottom(node)+15;var p_left=((getAreaLeft(node)+getAreaRight(node))/2)-140;popup_node.style.top=p_top+'px';popup_node.style.left=p_left+'px';img_parent_node.insertBefore(popup_node,img_node)}} else{node.className="glossaryPopupPosition";node.appendChild(popup_node)}}
function getImgFromArea(node){var parent_node=node.parentNode;var map_name='#'+parent_node.name;var imgs=document.getElementsByTagName('IMG');var img_node;for(i=0;i<imgs.length;i++){img=imgs[i];if(img.useMap==map_name){img_node=img;break}}
return img_node}
function getAreaLeft(node){coords=node.coords.split(',');var min=-1;for(var i=0;i<coords.length/2;i++){var val=parseInt(coords[2*i]);if(min==-1||val<min){min=val}}
return min}
function getAreaRight(node){coords=node.coords.split(',');var max=0;for(var i=0;i<coords.length/2;i++){var val=parseInt(coords[2*i]);if(val>max){max=val}}
return max}
function getAreaBottom(node){coords=node.coords.split(',');var max=0;for(var i=0;i<coords.length/2;i++){var val=parseInt(coords[2*i+1]);if(val>max){max=val}}
return max}
function hide_glossary_definition_popup(node,definition_index){popup_node=document.getElementById("glossary-definition-popup");if(node.tagName.toUpperCase()=='AREA'){if(popup_node){var img_node=getImgFromArea(node);if(img_node){var span_node=img_node.parentNode;span_node.removeChild(popup_node)}}} else{if(popup_node){node.removeChild(popup_node)}
node.className="highlightedGlossaryTerm"}}
function CBrowser(){var ua,s,i;this.isIE=false;this.isNS=false;this.isOP=false;this.version=null;ua=navigator.userAgent;s="Opera";if((i=ua.indexOf(s))>=0){this.isOP=true;this.version=7;return}
s="MSIE";if((i=ua.indexOf(s))>=0){this.isIE=true;this.version=parseFloat(ua.substr(i+s.length));return}
s="Netscape6/";if((i=ua.indexOf(s))>=0){this.isNS=true;this.version=parseFloat(ua.substr(i+s.length));return}
s="Gecko";if((i=ua.indexOf(s))>=0){this.isNS=true;this.version=6.1;return}}
var browser_info=new CBrowser();var related_glossary_definitions=new Array();
function add_related_glossary_definition(title,description,url,terms,show){var definition=new Array();definition["title"]=title;definition["description"]=description;definition["url"]=url;definition["terms"]=terms;definition["show"]=show;related_glossary_definitions.push(definition)}
function highlight_related_glossary_term_in_text(node,word,definition_index){var class_name="highlightedGlossaryTerm";var parent_node=node.parentNode;if(parent_node.className==class_name){return}
var lword=word.toLowerCase();var content_value=node.nodeValue;var lcontent_value=content_value.toLowerCase();var word_bounds=new Array();word_bounds.push('^'+lword+'$');word_bounds.push('\\W'+lword+'\\W');word_bounds.push('^'+lword+'\\W');word_bounds.push('\\W'+lword+'$');var index=-1;for(var i=0;i<word_bounds.length;i++){index=lcontent_value.search(word_bounds[i]);if(index!=-1){if(i==1||i==3){index+=1}
break}}
if(index==-1){return}
var last_index=index+word.length;if(index!=-1){var hiword=document.createElement("span");hiword.className=class_name;hiword.appendChild(document.createTextNode(content_value.substr(index,word.length)));if(browser_info.isIE){hiword.setAttribute("onmouseover", function(){show_glossary_definition_popup(this,definition_index)});hiword.setAttribute("onmouseout", function(){hide_glossary_definition_popup(this,definition_index)});hiword.setAttribute("onclick", function(){goto_glossary_definition(definition_index)})}
else{hiword.setAttribute("onmouseover","javascript:show_glossary_definition_popup(this, "+definition_index+")");hiword.setAttribute("onmouseout","javascript:hide_glossary_definition_popup(this, "+definition_index+")");hiword.setAttribute("onclick","javascript:goto_glossary_definition("+definition_index+")")}
parent_node.insertBefore(document.createTextNode(content_value.substr(0,index)),node);parent_node.insertBefore(hiword,node);parent_node.insertBefore(document.createTextNode(content_value.substr(index+word.length)),node);parent_node.removeChild(node)}}
function highlight_related_glossary_term_in_node(node,word,definition_index,unauthorized_tags){if(!node){return false}
tag_name=node.nodeName.toLowerCase();for(i=0;i<unauthorized_tags.length;i++){unauthorized_tag_name=unauthorized_tags[i].toLowerCase();if(tag_name==unauthorized_tag_name){return false}}
if(node.hasChildNodes){var i;for(i=0;i<node.childNodes.length;i++){highlight_related_glossary_term_in_node(node.childNodes[i],word,definition_index,unauthorized_tags)}
if(node.nodeType==3){highlight_related_glossary_term_in_text(node,word,definition_index)}}
if(tag_name.toUpperCase()=='AREA'&&node.title==word){node.title='';if(browser_info.isIE){node.setAttribute("onmouseover", function(){show_glossary_definition_popup(this,definition_index)});node.setAttribute("onmouseout", function(){hide_glossary_definition_popup(this,definition_index)});node.setAttribute("onclick", function(){goto_glossary_definition(definition_index)})}
else{node.setAttribute("onmouseover","javascript:show_glossary_definition_popup(this, "+definition_index+")");node.setAttribute("onmouseout","javascript:hide_glossary_definition_popup(this, "+definition_index+")");node.setAttribute("onclick","javascript:goto_glossary_definition("+definition_index+")")}
var img_node=getImgFromArea(node);if(img_node){var img_parent_node=img_node.parentNode;if(img_parent_node.className!="glossaryImageContainer"){img_node.alt='';var div_node=document.createElement("div");img_parent_node.insertBefore(div_node,img_node);img_parent_node.removeChild(img_node);div_node.className="glossaryImageContainer"
div_node.appendChild(document.createTextNode("\u00A0"));div_node.appendChild(img_node)}}}
return true}
function highlight_related_glossary_terms_in_node(target_node,unauthorized_tags){for(var def_index=0;def_index<related_glossary_definitions.length;def_index++){var terms=related_glossary_definitions[def_index]["terms"];for(var term_index=0;term_index<terms.length;term_index++){var word=terms[term_index];highlight_related_glossary_term_in_node(target_node,word,def_index,unauthorized_tags)}}}
function build_related_glossary_terms_list(target_node){if(related_glossary_definitions.length>0){var i=0;var ul_node=document.createElement("ul");for(i=0;i<related_glossary_definitions.length;i++){if(related_glossary_definitions[i]["show"]=='1'){var li_node=document.createElement("li");var a_node=document.createElement("a");var url=related_glossary_definitions[i]["url"];a_node.setAttribute("href",url);var title_text=related_glossary_definitions[i]["title"];a_node.appendChild(document.createTextNode(title_text));li_node.appendChild(a_node);ul_node.appendChild(li_node)}}
target_node.appendChild(ul_node)}}

