var toolLib={getEvent:function(e){return e||window.event;},getTarget:function(e){return e.target||e.srcElement;},stopPropagation:function(e){if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;}},preventDefault:function(e){if(e.preventDefault){e.preventDefault();}else{e.returnValue=false;}},stopEvent:function(e){toolLib.stopPropagation(e);toolLib.preventDefault(e);},eventManager:function(elem,action,doThis,useCapture){if(window.addEventListener){elem.addEventListener(action,function(e){doThis(e);toolLib.preventDefault(e);},useCapture);}else{elem.attachEvent('on'+action,function(e){doThis(e);toolLib.preventDefault(e);});}},debugElem:function(content,id){var debugText,debugDiv;debugText="<span style='font-size:9px;font-family:verdana;font-weight:bold;color:red;text-decoration:underline;'>";debugText+=(id)?id:"Es wurde keine ID fuer dieses DebugElem angeben, dies kann zu Problemen fuehren!";debugText+=":</span>";debugText+="<p style='font-size:9px;font-family:verdana;'>"+content+"</p>";if(!document.getElementById(id)){debugDiv=document.createElement("div");debugDiv.setAttribute("id",id);document.body.appendChild(debugDiv);debugDiv.innerHTML=debugText;}else{document.getElementById(id).innerHTML=debugText;}},dumpData:function(arr,currLvl){var dump='',lvlSpace='',i,elem,value,spaceChar="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";if(typeof currLvl==='undefined'){currLvl=0;}
for(i=0;i<currLvl;i+=1){lvlSpace+=spaceChar;}
if(typeof arr==='object'){for(elem in arr){if(arr.hasOwnProperty(elem)){value=arr[elem];if(typeof value==='object'){dump+=lvlSpace+"["+elem+"] =>\n<br/>"+lvlSpace+"(\n<br/>";dump+=toolLib.dumpData(value,currLvl+1);dump+=lvlSpace+")<br/>";}else{dump+=lvlSpace+"["+elem+"] => '"+value+"'\n<br/>";}}}}else{dump="Error, das Array ist vom Typ: "+typeof arr;}
return dump;}};var pushVarsFrom=(function(){function getRegExpString(filename){return new RegExp(filename+"\\?(.*)?$");}
function getParamArr(regExpString,filename,elements){var i,ii,params,paramArr,pairs,keyValue,key,value;for(i=0;i<elements.length;i+=1){if(regExpString.test(elements[i].src)===true){params=RegExp.$1;paramArr=[];paramArr[filename]=[];pairs=params.split("&");for(ii=0;ii<pairs.length;ii+=1){keyValue=pairs[ii].split("=");key=keyValue[0];value=keyValue[1];paramArr[filename][key]=value;}}}
return paramArr;}
return function(filename,tag){var regExpString,elements,paramArr;if(typeof tag==='undefined'){tag='script';}
regExpString=getRegExpString(filename);elements=document.getElementsByTagName(tag);paramArr=getParamArr(regExpString,filename,elements);return paramArr;};}());var getElementsBy=(function(){var needArray=false,cbFunc=null,regExp=null,debug=0;function buildRegExp(searchString){if(debug===1){console.log('build regExp-String');}
var regExpString='',countOfCls,i,OR;if(typeof(searchString)==='undefined'||searchString===''){searchString='.*';}
if(typeof searchString==='object'){countOfCls=searchString.length;OR="|";for(i=0;i<searchString.length;i+=1){countOfCls-=1;if(countOfCls===0){OR='';}
regExpString+='\\b'+searchString[i]+'\\b'+OR;}}else{regExpString='\\b'+searchString+'\\b';}
return new RegExp(regExpString);}
function getElements(tag){if(debug===1){console.log('get elements');}
var i,countOfTags,elements=[],currElements,tagElem;if(typeof tag==='undefined'||tag===''){tag='*';}
if(typeof tag==='object'){countOfTags=tag.length;for(i=0;i<countOfTags;i+=1){currElements=document.getElementsByTagName(tag[i]);for(tagElem=0;tagElem<currElements.length;tagElem+=1){elements.push(currElements[tagElem]);}}}else{elements=document.getElementsByTagName(tag);}
return elements;}
function checkString(searchString,elem){var cbFuncReturn;if(regExp.test(searchString)){if(debug===1){console.log('check string');}
if(typeof needArray==='undefined'&&typeof cbFunc==='function'){cbFuncReturn=cbFunc(elem);elem.singleReturn=cbFuncReturn;}
elem.singleElem=elem;return elem;}
return false;}
function searchAllAttr(elements){if(debug===1){console.log('search all attr');}
var elementsBy=[],i,ii,searchString,elem;elementsBy.searchReturn=[];elementsBy.functionReturn=[];for(i=0;i<elements.length;i+=1){for(ii=0;ii<elements[i].attributes.length;ii+=1){searchString=elements[i].attributes[ii].value;elem=checkString(searchString,elements[i]);if(elem.singleElem){elementsBy.searchReturn.push(elem.singleElem);}
if(elem.singleReturn){elementsBy.functionReturn.push(elem.singleReturn);}
if(regExp.test(searchString)){break;}}}
return elementsBy;}
function searchArrAttr(elements,attr){if(debug===1){console.log('search an array of attr');}
var elementsBy=[],i,ii,currAttr,searchString,elem;elementsBy.searchReturn=[];elementsBy.functionReturn=[];for(i=0;i<elements.length;i+=1){for(ii=0;ii<attr.length;ii+=1){currAttr=attr[ii];searchString=elements[i][currAttr];elem=checkString(searchString,elements[i]);if(elem.singleElem){elementsBy.searchReturn.push(elem.singleElem);}
if(elem.singleReturn){elementsBy.functionReturn.push(elem.singleReturn);}}}
return elementsBy;}
function searchOneAttr(elements,attr){if(debug===1){console.log('search in one attr');}
var elementsBy=[],searchString,i,elem;elementsBy.searchReturn=[];elementsBy.functionReturn=[];for(i=0;i<elements.length;i+=1){searchString=elements[i][attr];elem=checkString(searchString,elements[i]);if(elem.singleElem){elementsBy.searchReturn.push(elem.singleElem);}
if(elem.singleReturn){elementsBy.functionReturn.push(elem.singleReturn);}}
return elementsBy;}
function setNeedArray(value){needArray=value;}
function setCbFunc(fN){cbFunc=fN;}
function setRegExp(searchString){regExp=buildRegExp(searchString);}
return function(searchString,attr,tag,cbFunc,needArray){var elementsBy=[],elements=getElements(tag),cbFuncReturn;setCbFunc(cbFunc);setNeedArray(needArray);setRegExp(searchString);if(typeof attr==='undefined'||attr===''){elementsBy=searchAllAttr(elements)}else{if(typeof attr==='object'){elementsBy=searchArrAttr(elements,attr);}else{elementsBy=searchOneAttr(elements,attr);}}
if(needArray===true&&typeof cbFunc==='function'){cbFuncReturn=cbFunc(elementsBy);elementsBy.functionReturn=cbFuncReturn;}
return elementsBy;};}());var showHide=(function(){var status,display,inlineElem;if(inlineElem===true){display='inline';}else{display='block';}
function setStatus(value){status=value;}
function getStatus(elem){if(typeof status==='undefined'&&elem.style.display===''){setStatus('show');}
return status;}
function show(elem){elem.style.display=display;setStatus('show');return status;}
function hide(elem){elem.style.display='none';setStatus('hide');return status;}
return function(elem,inlineElem){elem=document.getElementById(elem);var status=getStatus(elem);if(status==='show'){status=hide(elem);setStatus(status);}else{status=show(elem,inlineElem);setStatus(status);}
return false;};}());var xhr=(function(){function handleReadyState(o,callback,interval){var poll=window.setInterval(function(){if(o&&o.readyState===4){window.clearInterval(poll);if(callback){callback(o);}}},interval);}
function getXHR(){var http,i,msxml;try{http=new XMLHttpRequest();getXHR=function(){return new XMLHttpRequest();};}catch(e){msxml=['MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP'];for(i=0;i<msxml.length;i+=1){try{http=new ActiveXObject(msxml[i]);getXHR=function(){return new ActiveXObject(msxml[i]);};break;}catch(ee){throw new Error('Could not generate XHR.');}}}
return http;}
return function(uri,callback,interval,method,postData){var http;if(typeof method==='undefined'){method='GET';}
if(typeof interval==='undefined'||interval==''){interval=50;}
http=getXHR();http.open(method,uri,true);handleReadyState(http,callback,interval);http.setRequestHeader('Content-Type','text/plain');http.send(postData||null);return http;};}());var showContextHelp=(function(){var cshElem,bgColor,helpObj;function showHelp(elem){var helpText=elem.className;helpText=helpText.split("_");helpText=helpText[1];if(typeof helpObj[helpText]==='undefined'){cshElem.innerHTML=helpText+": has no helptext.";cshElem.style.display="block";}else{cshElem.innerHTML=helpObj[helpText];cshElem.style.display="block";}
return false;}
function hideHelp(){cshElem.style.display="none";return false;}
function updatePosition(e){var y,x;if(document.all){x=window.event.x+document.body.scrollLeft;}else{x=e.pageX;}
if(document.all){y=window.event.y+document.body.scrollTop;}else{y=e.pageY;}
cshElem.style.left=(x+20)+"px";cshElem.style.top=(y-20)+"px";return false;}
function attachEvents(elem){toolLib.eventManager(elem,'mouseover',function(){showHelp(elem);},false);toolLib.eventManager(elem,'mouseout',hideHelp,false);toolLib.eventManager(elem,'mousemove',updatePosition,false);return false;}
function setCshElem(value){cshElem=value;}
function setBgColor(value){bgColor=value;}
function setHelpObj(value){helpObj=value;}
function getBgColor(){return bgColor;}
return{setHelpObj:function(helpObj){setHelpObj(helpObj);return true;},setBgColorTooltip:function(value){setBgColor(value);},generateTooltip:function(id){var tooltipDiv=document.createElement("div");tooltipDiv.setAttribute("id",id);tooltipDiv.style.position='absolute';tooltipDiv.style.display='none';tooltipDiv.style.backgroundColor=getBgColor();document.body.appendChild(tooltipDiv);setCshElem(tooltipDiv);},init:function(elem){attachEvents(elem);return true;}};}());var getFilledFormItems=(function(){var fieldType,filledItems;function generateHash(key,value,type,text,id,className,optionText){filledItems.push({'name':key,'value':value,'type':type,'innerHTML':text,'id':id,'className':className,'optionText':optionText});return filledItems;}
function getSelectBox(currElem,type,key){var optionIndex,optionText=[],multiple=[],vals=[],i,x=0;switch(type){case'select-one':optionIndex=currElem.selectedIndex;optionText=currElem[key].options[optionIndex].text;return optionText;case'select-multiple':for(i=0;i<currElem.options.length;i+=1){if(currElem.options[i].selected){vals[x]=currElem.options[i].value;optionText[x]=currElem.options[i].text;x+=1;}}
multiple.optionText=optionText;multiple.vals=vals;return multiple;}
return false;}
function getHashWithField(currElem,key,value,type,text,id,className,optionText){var i,checkBoxAssist=[],selectBox,boxes=[];if(value.length!==0&&currElem.type===fieldType){if(type==='radio'||type==='checkbox'){if(type==='checkbox'&&currElem.checked){checkBoxAssist[key]=[];boxes=getElementsBy(key,'name','input');for(i=0;i<boxes.length;i+=1){if(boxes[i].checked){checkBoxAssist[key][i]=boxes[i].value;}}
value=checkBoxAssist[key];generateHash(key,value,type,text,id,className,optionText);}
if(type==='radio'&&currElem.checked){generateHash(key,value,type,text,id,className,optionText);}}else{selectBox=getSelectBox(currElem,type,key);if(typeof selectBox==='object'){value=selectBox.vals;optionText=selectBox.optionText;}
if(typeof selectBox==='string'){optionText=selectBox;}
generateHash(key,value,type,text,id,className,optionText);}}
return checkBoxAssist;}
function getHashAll(currElem,key,value,type,text,id,className,optionText,checkBoxAssist){var i,boxes=[],selectBox;key=key.split("[]");key=key[0];if(value.length!==0&&typeof checkBoxAssist[key]==='undefined'){if(type==='radio'||type==='checkbox'){if(type==='checkbox'&&currElem.checked){checkBoxAssist[key]=[];boxes=document.getElementsByName(key);for(i=0;i<boxes.length;i+=1){if(boxes[i].checked){checkBoxAssist[key][i]=boxes[i].value;}}
value=checkBoxAssist[key];generateHash(key,value,type,text,id,className,optionText);}
if(type==='radio'&&currElem.checked){generateHash(key,value,type,text,id,className,optionText);}}else{selectBox=getSelectBox(currElem,type,key);if(typeof selectBox==='object'){value=selectBox.vals;optionText=selectBox.optionText;}
if(typeof selectBox==='string'){optionText=selectBox;}
generateHash(key,value,type,text,id,className,optionText);}}
return checkBoxAssist;}
function setFieldType(value){fieldType=value;}
function setFilledItems(value){if(value===''){filledItems=[];}else{filledItems=value;}}
return function(formId,fieldType){var elem=document.forms[formId],formLen=elem.length,checkBoxAssist=[],i,x,currElem,value,key,type,text,id,className,optionText;setFilledItems('');if(typeof fieldType!=='undefined'){setFieldType(fieldType);}
if(typeof elem[0].type==='undefined'){x=1;}else{x=0;}
for(i=x;i<formLen;i+=1){currElem=elem[i];value=currElem.value;key=currElem.name;type=currElem.type;text=currElem.innerHTML;id=currElem.id;className=currElem.className;optionText='undefined';if(typeof fieldType!=='undefined'){checkBoxAssist=getHashWithField(currElem,key,value,type,text,id,className,optionText,checkBoxAssist);}else{checkBoxAssist=getHashAll(currElem,key,value,type,text,id,className,optionText,checkBoxAssist);}}
return filledItems;};}());var dropdown=(function(){var timeToFadeOut=500,closetimer=null,divLayer='',image='',hoverEffectDebug=false,imgNormal,imgHover,imgPath;function getTimeToFadeOut(){return timeToFadeOut;}
function setImgSwitchVars(path,normal,hover){imgPath=path;imgNormal=normal;imgHover=hover;}
function getClosetimer(){return closetimer;}
function setClosetimer(fn){closetimer=fn;}
function setDivLayer(elem){divLayer=elem;}
function getDivLayer(id){if(id){setDivLayer(document.getElementById(id));divLayer=getDivLayer();return divLayer;}
return divLayer;}
function getImage(){return image;}
function setImage(elem){image=elem;}
return{dropdownClicked:0,isLayer:false,configImg:function(path,normal,hover){setImgSwitchVars(path,normal,hover);},show:function(id,imgElem,isLayer){var oldDivLayer,newDivLayer,img;dropdown.cancelTimer();oldDivLayer=getDivLayer();newDivLayer=getDivLayer(id);if(isLayer!==true){img=getImage();img.src=imgPath+imgNormal;}
if(oldDivLayer){oldDivLayer.style.display='none';}
window.setTimeout(function(){if(oldDivLayer.id!==newDivLayer.id){newDivLayer.style.display='block';if(isLayer!==true){setImage(imgElem);img=getImage();img.src=imgPath+imgHover;}
dropdown.dropdownClicked=1;}else{newDivLayer.style.display='none';setDivLayer('');if(isLayer!==true){setImage('');}
dropdown.dropdownClicked=0;}},0);return false;},close:function(isLayer){var divLayer,timeToFadeOut,img;divLayer=getDivLayer();timeToFadeOut=getTimeToFadeOut();setClosetimer(window.setTimeout(function(){if(divLayer){divLayer.style.display='none';setDivLayer('');if(isLayer!==true){img=getImage();img.src=imgPath+imgNormal;setImage('');}
dropdown.dropdownClicked=0;}},timeToFadeOut));},cancelTimer:function(isLayer){var closetimer,img;closetimer=getClosetimer();if(isLayer!==true){img=getImage();img.src=imgPath+imgHover;}
if(closetimer){window.clearTimeout(closetimer);setClosetimer(null);}},instantCancel:function(){var divLayer,img;divLayer=getDivLayer();if(divLayer){if(divLayer.style.display==='block'){divLayer.style.display='none';img=getImage();img.src=imgPath+imgNormal;setImage('');setDivLayer('');dropdown.dropdownClicked=0;}}},attachEvents:function(elem){var splitTag,tag,dropType,elemNr;if(dropdown.isLayer!==true){dropType='Dropdown';}else{dropType='Layer';}
if(hoverEffectDebug===true&&(!imgPath||!imgNormal||!imgHover)){alert('Need dropdown.configImg(path, imgNormal, imgHover)');}
splitTag=elem.id.split('-');tag=splitTag[0];switch(tag){case"a":elemNr=splitTag[2];if(dropdown.isLayer!==true){toolLib.eventManager(elem,'click',function(e){return dropdown.show('div-'+dropType+'-'+elemNr,elem.firstChild,false);},false);}else{toolLib.eventManager(elem,'click',function(e){return dropdown.show('div-'+dropType+'-'+elemNr,elem.firstChild,true);},false);}
if(dropdown.isLayer!==true){toolLib.eventManager(elem,'mouseout',function(){dropdown.close(false)},false);}
break;case"div":toolLib.eventManager(elem,'mouseover',dropdown.cancelTimer,false);toolLib.eventManager(elem,'mouseout',dropdown.close,false);break;case"img":toolLib.eventManager(elem,'mouseover',function(){elem.src=imgPath+imgHover;},false);toolLib.eventManager(elem,'mouseout',function(){dropdown.checkClick(elem);},false);break;default:return false;}
return false;},checkClick:function(elem){if(dropdown.dropdownClicked===1){elem.src=imgPath+imgHover;}
if(dropdown.dropdownClicked===0){elem.src=imgPath+imgNormal;}},setClickCancel:function(){document.onclick=dropdown.instantCancel;}};}());
