
function DOM(){this.debug=true;this.elements=new Array();this.getElementsByName=DOM_getElementsByName;this.getElementsByClass=DOM_getElementsByClass;this.getElementsById=DOM_getElementsById;this.getAllElements=DOM_getAllElements;this.getElementIndex=DOM_getElementIndex;this.replaceNodeValue=DOM_replaceNodeValue;this.replaceAttributeValue=DOM_replaceAttributeValue;this.getElementsByNodeValue=DOM_getElementsByNodeValue;this.stringToDom=DOM_stringToDom;this.showHide=DOM_showHide;this.show=DOM_show;this.hide=DOM_hide;this.isVisible=DOM_isVisible;this.writeText=DOM_writeText;this.writeHtml=DOM_writeHtml;this.readHtml=DOM_readHtml;this.replaceStringByNodes=DOM_replaceStringByNodes;this.appendNodes=DOM_appendNodes;this.stringToDiv=DOM_stringToDiv;this.getElementById=DOM_getElementById;this.setToCache=DOM_setToCache;this.clear=DOM_clear;this.storeToCache=DOM_storeToCache;}
var DOM=new DOM();function DOM_getElementsByName(node,tag,searchName){var elements=new Array();if(node==null)
node=document;if(tag==null)
tag='*';var els=node.getElementsByTagName(tag);var elsLen=els.length;searchName=searchName.replace("{","\\{");searchName=searchName.replace("}","\\}");var pattern=new RegExp("(^|\\s)"+searchName+"(\\s|$)");var j=0;for(var i=0;i<elsLen;i++){if(pattern.test(els[i].name)){elements[j]=els[i];j++;}}
return elements;}
function DOM_getElementsByNodeValue(node,tag,nodeValue){var elements=new Array();if(node==null)
node=document;if(tag==null)
tag='*';var els=node.getElementsByTagName(tag);var elsLen=els.length;nodeValue=nodeValue.replace("{","\\{");nodeValue=nodeValue.replace("}","\\}");var pattern=new RegExp("(^|\\s)"+nodeValue+"(\\s|$)");var j=0;var elChild;for(var i=0;i<elsLen;i++){for(var k=0;k<els[i].childNodes.length;k++){elChild=els[i].childNodes[k];if(pattern.test(elChild.nodeValue)){elements[j]=elChild;j++;}}}
return elements;}
function DOM_getElementsByClass(node,tag,searchClass){var classElements=new Array();if(node==null)
node=document;if(tag==null)
tag='*';var els=node.getElementsByTagName(tag);var elsLen=els.length;searchClass=searchClass.replace("{","\\{");searchClass=searchClass.replace("}","\\}");searchClass=searchClass.replace("*",".*");var pattern=new RegExp("(^|\\s)"+searchClass+"(\\s|$)");var j=0;for(var i=0;i<elsLen;i++){if(pattern.test(els[i].className)){classElements[j]=els[i];j++;}}
return classElements;}
function DOM_getElementsById(node,tag,searchId){var classElements=new Array();if(node==null)
node=document;if(tag==null)
tag='*';var els=node.getElementsByTagName(tag);var elsLen=els.length;searchId=searchId.replace("{","\\{");searchId=searchId.replace("}","\\}");searchId=searchId.replace("*",".*");var pattern=new RegExp("(^|\\s)"+searchId+"(\\s|$)");var j=0;for(var i=0;i<elsLen;i++){if(pattern.test(els[i].id)){classElements[j]=els[i];j++;}}
return classElements;}
function DOM_getAllElements(oElm,sTagName){return aElements=(sTagName=="*"&&oElm.all)?oElm.all:oElm.getElementsByTagName(sTagName);}
function DOM_getElementIndex(listElement,element){for(var i=0;i<listElement.length;i++){if(listElement[i]==element)
return i;}}
function DOM_stringToDom(htmlString){var els=new Array();var div=document.createElement("div");div.innerHTML=htmlString;for(var i=0;i<div.childNodes.length;i++){els[i]=div.childNodes[i].cloneNode(true);}
return els;}
function DOM_stringToDiv(htmlString){var els=new Array();var div=document.createElement("div");div.innerHTML=htmlString;return div;}
function DOM_showHide(element){if(element){if(element.style.display=="block"){element.style.visibility="hidden";element.style.display="none";}else{element.style.visibility="visible";element.style.display="block";}}}
function DOM_show(element){if(element){element.style.visibility="visible";element.style.display="block";}}
function DOM_hide(element){if(element){element.style.visibility="hidden";element.style.display="none";}}
function DOM_isVisible(element){if(element&&element.style.visibility=="visible")
return true;else
return false;}
function DOM_readHtml(node,textToWrite){if(!node)
return null;return node.innerHTML;}
function DOM_writeHtml(node,strResult){if(!node){return;}
strResult=""+strResult;if(strResult==""||(strResult.indexOf('<')==-1&&strResult.indexOf('&')==-1)){DOM.writeText(node,strResult);return;}
node.innerHTML=strResult;}
function DOM_writeText(node,textToWrite){if(!node)
return;while(node.childNodes.length>0)
node.removeChild(node.firstChild);node.appendChild(document.createTextNode(textToWrite));return;}
function DOM_replaceNodeValue(node,tagName,search,replace){var els=DOM.getElementsByNodeValue(node,tagName,search);var element;if(DOM.debug&&(els==null||els.length==0)){alert("Element "+tagName+" with "+search+" not found !");DOM.debug=false;}
if(replace.indexOf("<")==-1){for(var i=0;i<els.length;i++){element=els[i];var str=element.nodeValue;element.nodeValue=str.replace(search,replace);}}else{var elsReplace=DOM.stringToDom(replace);for(var i=0;i<els.length;i++){var parent=els[i].parentNode;for(var j=0;j<elsReplace.length;j++){parent.insertBefore(elsReplace[j],els[i]);}
parent.removeChild(els[i]);}}}
function DOM_replaceStringByNodes(node,tagName,search,elsReplace){var els=DOM.getElementsByNodeValue(node,tagName,search);if(DOM.debug&&(els==null||els.length==0)){alert("Element "+tagName+" with "+search+" not found !");DOM.debug=false;}
for(var i=0;i<els.length;i++){var parent=els[i].parentNode;for(var j=0;j<elsReplace.length;j++){parent.insertBefore(elsReplace[j],els[i]);}
parent.removeChild(els[i]);}}
function DOM_replaceAttributeValue(node,tagName,attributeName,search,replace){var els=node.getElementsByTagName(tagName);if(DOM.debug&&(els==null||els.length==0)){alert("Element "+tagName+" ("+attributeName+") with "+search+" not found !");DOM.debug=false;}
var at;for(var i=0;i<els.length;i++){at=els[i].getAttribute(attributeName);if(at){var att=document.createAttribute(attributeName);if(at.replace){att.value=at.replace(search,replace);els[i].setAttributeNode(att);}else if(at.nodeValue){alert(typeof at);att.nodeValue=at.nodeValue.replace(search,replace);els[i].setAttributeNode(att);}else{var parent=els[i].parentNode;var html=parent.innerHTML;html=html.replace(search,replace);parent.innerHTML=html;}}}}
function DOM_appendNodes(documentId,nodes){var el=document.getElementById(documentId);if(el){for(var i=0;i<nodes.length;i++){el.appendChild(nodes[i]);}}}
function DOM_getElementById(id){var obj=DOM.elements[id];if(!obj){obj=document.getElementById(id);if(obj)
DOM.setToCache(id,obj);}
return obj;}
function DOM_setToCache(id,obj){DOM.elements[id]=obj;}
function DOM_clear(){DOM.elements=new Array();}
function DOM_storeToCache(node,tagNames){var elementsName;if(tagNames instanceof Array){elementsName=tagNames;}else{elementsName=new Array();elementsName[0]=tagNames;}
var domElements;var el;for(var i=0;i<elementsName.length;i++){domElements=DOM.getAllElements(node,elementsName[i]);for(var j=0;j<domElements.length;j++){el=domElements[j];if(el.id&&el.id!=""){DOM.setToCache(el.id,el);}}}}