function tii_getTotalOffsetPosition(element,direction)
{var pos=direction=='x'?element.offsetLeft:element.offsetTop;var tmp=element.offsetParent;while(tmp!=null)
{pos+=direction=='x'?tmp.offsetLeft:tmp.offsetTop;tmp=tmp.offsetParent;}
return pos;}
function tii_stopDefaultAction(event)
{event.returnValue=false;if(typeof event.preventDefault!='undefined')
{event.preventDefault();}}
function tii_dom_createElement(nodeName,attributes)
{var isopera=typeof window.opera!='undefined';var isie=typeof document.all!='undefined'&&!isopera&&navigator.vendor!='KDE';var newElement;try
{newElement=document.createElement(nodeName);}
catch(error)
{return null;}
var attributesLength=attributes.length;for(var i=0;i<attributesLength;i++)
{var attribute=attributes[i][0];var value=attributes[i][1];newElement.setAttribute(attribute,value);switch(attribute)
{case'id':newElement.id=value;break;case'class':if(isie)
{newElement.setAttribute('className',value);}
newElement.className=value;break;case'style':newElement.style.cssText=newElement.style.cssText+' '+value;break;case'for':if(isie)
{newElement.setAttribute('htmlFor',value);}
newElement.htmlFor=value;}}
return newElement;}
function tii_dom_removeWhitespaceTextNodes(node)
{for(var x=0;x<node.childNodes.length;x++)
{var child=node.childNodes[x];if(child.nodeType==3&&!/\S/.test(child.nodeValue))
{node.removeChild(node.childNodes[x]);x--;}
if(child.nodeType==1)
{tii_dom_removeWhitespaceTextNodes(child);}}}
function tii_callFunctionOnWindowLoad(functionToCall)
{if(typeof window.addEventListener!='undefined')
{window.addEventListener('load',functionToCall,false);}
else if(typeof document.addEventListener!='undefined')
{document.addEventListener('load',functionToCall,false);}
else if(typeof window.attachEvent!='undefined')
{window.attachEvent('onload',functionToCall);}
else
{var oldFunctionToCall=window.onload;if(typeof window.onload!='function')
{window.onload=functionToCall;}
else
{window.onload=function()
{oldFunctionToCall();functionToCall();};}}}
function tii_callFunctionOnElementLoad(targetId,functionToCall)
{var myArguments=arguments;tii_callFunctionOnWindowLoad(function()
{window.loaded=true;});var targetElement=document.getElementById(targetId);if(targetElement==null&&!window.loaded)
{var pollingInterval=setInterval(function()
{if(window.loaded)
{clearInterval(pollingInterval);}
targetElement=document.getElementById(targetId);if(targetElement!=null)
{clearInterval(pollingInterval);var argumentsTemp=new Array();var argumentsTempLength=myArguments.length-2;for(var i=0;i<argumentsTempLength;i++)
{argumentsTemp[i]=myArguments[i+2];}
functionToCall.apply(this,argumentsTemp);}},10);}}
function tii_addEventHandlerOnElementLoad(targetId,eventType,functionToCall,bubbleEventUpDOMTree)
{tii_callFunctionOnWindowLoad(function()
{window.loaded=true;});var targetElement=document.getElementById(targetId);if(targetElement==null&&!window.loaded)
{var pollingInterval=setInterval(function()
{if(window.loaded)
{clearInterval(pollingInterval);}
targetElement=document.getElementById(targetId);if(targetElement!=null)
{clearInterval(pollingInterval);tii_addEventHandler(targetElement,eventType,functionToCall,bubbleEventUpDOMTree);}},10);}}
function tii_addEventHandler(targetElement,eventType,functionToCall,bubbleEventUpDOMTree)
{if(!targetElement)
{window.status='Warning: Tried to attach event to null object';return false;}
if(typeof targetElement.addEventListener!='undefined')
{targetElement.addEventListener(eventType,functionToCall,bubbleEventUpDOMTree);}
else if(typeof targetElement.attachEvent!='undefined')
{targetElement.attachEvent('on'+eventType,functionToCall);}
else
{eventType='on'+eventType;if(typeof targetElement[eventType]=='function')
{var oldListener=targetElement[eventType];targetElement[eventType]=function()
{oldListener();return functionToCall();}}
else
{targetElement[eventType]=functionToCall;}}
return true;}
function tii_removeEventHandler(targetElement,eventType,functionToRemove,bubbleEventUpDOMTree)
{if(typeof targetElement.removeEventListener!="undefined")
{targetElement.removeEventListener(eventType,functionToRemove,bubbleEventUpDOMTree);}
else if(typeof targetElement.detachEvent!="undefined")
{targetElement.detachEvent("on"+eventType,functionToRemove);}
else
{targetElement["on"+eventType]=null;}
return true;}