var Annoty={};Annoty=function(){return{ANNOTY_LINK_SEPARATOR:".",deferedWait:false,bodySearchIntervalID:0,init:function(){this.deployAnnotyLinks();this.insertWindowHolder();},addEvent:function(obj,eventType,fn){if(obj.addEventListener){obj.addEventListener(eventType,fn,false);}else if(obj.attachEvent){obj["e"+eventType+fn]=fn;obj[eventType+fn]=function(){obj["e"+eventType+fn](window.event);};obj.attachEvent("on"+eventType,obj[eventType+fn]);}else{obj["on"+eventType]=fn;return true;}},insertWindowHolder:function(){var windowHolder=document.createElement("div");windowHolder.id="annotyWindowHolder";document.body.appendChild(windowHolder);},deployAnnotyLinks:function(){var annotationLinks=document.getElementsByTagName("a");for(var i=0;i<annotationLinks.length;++i){var hrefIndex=annotationLinks[i].href.indexOf("**");if(hrefIndex !=-1){var anchorNode=annotationLinks[i];this.addEvent(anchorNode,"click",function(event){Annoty.deferedWait=false;Annoty.closeAnnotyWindow();var hrefIndex=this.href.indexOf("**");var href=this.href.substring(hrefIndex+2);var hrefArray=href.split(Annoty.ANNOTY_LINK_SEPARATOR);var siteID=hrefArray[0];var templateID=hrefArray[1];var elementID=hrefArray[2];Annoty.annotate(siteID,templateID,elementID,Annoty.xMouse(event)-20,Annoty.yMouse(event)-20);event.returnValue=false;if(!Annoty.isIE()){event.preventDefault();}});this.addEvent(anchorNode,"mouseover",function(event){Annoty.deferedWait=true;setTimeout("Annoty.openDefered('"+this+"','"+(Annoty.xMouse(event)-20)+"','"+(Annoty.yMouse(event)-20)+"');",1000);});}}},openDefered:function(object,x,y){if(Annoty.deferedWait){Annoty.closeAnnotyWindow();var hrefIndex=object.indexOf("**");var href=object.substring(hrefIndex+2);var hrefArray=href.split(Annoty.ANNOTY_LINK_SEPARATOR);var siteID=hrefArray[0];var templateID=hrefArray[1];var elementID=hrefArray[2];Annoty.annotate(siteID,templateID,elementID,x,y);}},closeAnnotyWindow:function(){var annotyWindow=document.getElementById("AnnotyWindow");if(annotyWindow){document.getElementById("annotyWindowHolder").removeChild(annotyWindow);}},annotate:function(siteID,templateID,elementID,x,y){var windowContainer=document.createElement("div");windowContainer.id="AnnotyWindow";windowContainer.style.position="absolute";windowContainer.style.backgroundColor="white";windowContainer.style.padding="5px 5px 5px 5px";windowContainer.style.border="1px solid #3981c6";windowContainer.style.textAlign="right";windowContainer.style.zIndex="999999";windowContainer.style.left=x+"px";windowContainer.style.top=y+"px";var annotyLocation="http://www.annoty.com/annoty/render/"+siteID+"/"+templateID+"/"+elementID+"/?url="+location.hostname;windowContainer.innerHTML="<iframe id='annotyFrame' frameborder='0' src='"+annotyLocation+"' style='padding:5px 5px 5px 5px;width:340px;height:150px;'></iframe>";windowContainer.innerHTML+="<br/><a href='#' onclick='Annoty.closeAnnotyWindow();' style='text-decoration:none;color:#3981c6;'>close</a>";document.getElementById("annotyWindowHolder").appendChild(windowContainer);if(this.isSafari()){document.getElementById("annotyFrame").contentDocument.location=annotyLocation;}},getAgent:function(){if(navigator.userAgent.indexOf('Opera') !=-1){return 'Opera';}if(navigator.userAgent.indexOf('MSIE') !=-1){return 'IE';}if(navigator.userAgent.indexOf('Firefox') !=-1){return 'Firefox';}if(navigator.userAgent.indexOf('Safari') !=-1){return 'Safari';}},isOpera:function(){if(this.getAgent()==='Opera'){return true;}return false;},isIE:function(){if(this.getAgent()==='IE'){return true;}return false;},isFF:function(){if(this.getAgent()==='Firefox'){return true;}return false;},isSafari:function(){if(this.getAgent()==='Safari'){return true;}return false;},xMouse:function(e){return this.getMousePosition(e).x;},yMouse:function(e){return this.getMousePosition(e).y;},getMousePosition:function(e){var Position={};if(!e){e=window.event;}if(e.pageX||e.pageY){Position.x=e.pageX;Position.y=e.pageY;}else if(e.clientX||e.clientY){Position.x=e.clientX;Position.y=e.clientY;if(this.isIE()){Position.x+=document.body.scrollLeft;Position.y+=document.body.scrollTop;}}return Position;}};}();Annoty.addEvent(window,"load",function(){Annoty.init();});