// Incordia JavaScript
// Generated 2008-02-18
Incordia.Packages.create("CDON.ui.ToolTip");Incordia.Packages.create("CDON.ui.ImageToolTip");var findPosition=function(element){var pos={x:0,y:0};do{pos.x+=obj.offsetLeft;pos.y+=obj.offsetTop}while(obj=obj.offsetParent);return pos};var findMouse=function(event){if(!event)event=window.event;if(event.pageX||event.pageY)return{x:event.pageX,y:event.pageY};else if(event.clientX||event.clientY)return{x:event.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,y:event.clientY+document.body.scrollTop+document.documentElement.scrollTop};return{x:0,y:0}};var getWindowSize=function(){var scroll={x:-1,y:-1};var win={x:-1,y:-1};var page={x:-1,y:-1};if(window.innerHeight&&window.scrollMaxY){scroll.x=window.innerWidth+window.scrollMaxX;scroll.y=window.innerHeight+window.scrollMaxY+30}else if(document.body.scrollHeight>document.body.offsetHeight){scroll.x=document.body.scrollWidth;scroll.y=document.body.scrollHeight+30}else{scroll.x=document.body.offsetWidth;scroll.y=document.body.offsetHeight+30}if(self.innerHeight){if(document.documentElement.clientWidth)win.x=document.documentElement.clientWidth;else win.x=self.innerWidth;win.y=self.innerHeight}else if(document.documentElement&&document.documentElement.clientHeight){win.x=document.documentElement.clientWidth;win.y=document.documentElement.clientHeight}else if(document.body){win.x=document.body.clientWidth;win.y=document.body.clientHeight}page.x=Math.max(win.x,scroll.x);page.y=Math.max(win.y,scroll.y);return{page:page,window:win}};var parseQueryString=function(queryString){var obj={};var arr=queryString.split("&");for(var i=0;i<arr.length;++i){var set=arr[i].split("&");if(set.length==1){if(i==0)obj["path"]=set[0];continue}obj[set[0]]=set[1]};return obj};CDON.ui.ToolTip=Incordia.Class.extend({arguments:null,tooltip:null,text:null,mouseOffset:null,focus:null,constructor:function(arguments){this.arguments=Incordia.merge(CDON.ui.ToolTip.defaults,arguments);this.focusEnforced=this.arguments.focus!=null;this.mouseOffset={x:0,y:0};this.focus=this.arguments.focus;var div=document.createElement("div");div.id=this.arguments.rel+"holder";div.className=this.arguments.rel+"holder tooltipholder";div.style.display="none";div.style.position="absolute";this.text=document.createElement(this.arguments.copyLink?"a":"div");div.appendChild(this.text);this.tooltip=div},load:function(){document.body.appendChild(this.tooltip);if(this.arguments.focus!=null&&!this.arguments.focusMouse)this.focusNode(this.arguments.focus);this.runBinding();if(this.arguments.focusMouse){var func=function(event){this.mouseOffset=findMouse(event);this.moveFocus()}.bind(this);addEvent(document,"mousemove",func)};if(this.arguments.remainIfTooltipHover){addEvent(this.tooltip,"mouseout",this._startTimer.bind(this));addEvent(this.tooltip,"mouseover",this._stopTimer.bind(this))}},runBinding:function(){$A(document.getElementsByTagName("a")).each(this.attemptBind.bind(this))},attemptBind:function(link){var property=Incordia.getSetting(link.rel,this.arguments.rel);if(property==null||(this.arguments.useTitle?!link.title:!property.value))return false;link._toolTipProperty=property.value||link.title;var _showLink=function(evt,link){if(this.arguments.copyLink)this.text.href=link.href;if(!this.focusEnforced&&!this.arguments.focusMouse)this.focusNode(link,true);this.show(link._toolTipProperty,null,link);if(this.arguments.type=="click")this._startTimer();else this._stopTimer()};switch(this.arguments.type){case"click":addEvent(link,"click",_showLink.bind(this,link));break;case"hover":addEvent(link,"mouseover",_showLink.bind(this,link));addEvent(link,"mouseout",this._startTimer.bind(this,link));break}link.className+=" "+this.arguments.rel+"link"},focusNode:function(node,passiveFocus){if(arguments.length>0)this.focus=$(em);if(this.focus==null){this.focus=null;this.focusEnforced=false}if(passiveFocus)this.focusEnforced=false;var pos=findPosition(this.focus);var offset=this._getOffset();pos.x+=offset.x+this.arguments.x;pos.y+=offset.y+this.arguments.y;pos=this._cropPosition(pos);this.tooltip.style.position="absolute";this.tooltip.style.left=pos.x+"px";this.tooltip.style.top=pos.y+"px"},show:function(text,focusElement,skipShow){if(skipShow!=true)this.tooltip.style.display="";this.text.innerHTML=this.arguments.allowHTML?text:text.replace(/</g,"&lt;").replace(/>/g,"&gt;");if(this.arguments.focusMouse){this.moveFocus()}else{if(focusElement)this.focusNode(focusElement);else this.focusNode()}}.requiresDom(),moveFocus:function(){var offset=this._getOffset();var pos={x:this.mouseOffset.x+offset.x+this.arguments.x,y:this.mouseOffset.y+offset.y+this.arguments.y};pos=this._cropPosition(pos);this.tooltip.style.left=pos.x+"px";this.tooltip.style.top=pos.y+"px"},hide:function(){this.text.href=null;this.tooltip.style.display="none"},_startTimer:function(){this._stopTimer();this._timer=setTimeout(this.hide.bind(this),this.arguments.timeout)},_stopTimer:function(){clearTimeout(this._timer)},_timer:null,_getOffset:function(){var focus=this.focus||{offsetWidth:16,offsetHeight:16};var offset={x:0,y:0};var pos=this.arguments.position;if(pos.match(/\bunder\b/))offset.y+=focus.offsetHeight;else if(pos.match(/\bover\b/))offset.y-=this.tooltip.offsetHeight;else if(pos.match(/\bvcenter\b/))offset.y-=(this.tooltip.offsetHeight/2)-(focus.offsetHeight/2);if(pos.match(/\bright\b/))offset.x+=focus.offsetWidth;else if(pos.match(/\bleft\b/))offset.x-=this.tooltip.offsetWidth;else if(pos.match(/\bhcenter\b/))offset.x-=(this.tooltip.offsetWidth/2)-(focus.offsetWidth/2);return offset},_cropPosition:function(pos){var viewport=getWindowSize();var overflow={x:Math.max(-pos.x,Math.min(0,viewport.x-(pos.x+this.tooltip.offsetWidth))),y:Math.max(-pos.y,Math.min(0,viewport.y-(pos.y+this.tooltip.offsetHeight)))};if(overflow.x==0&&overflow.y==0)return pos;if(this.arguments.cropRight&&overflow.x<0)pos.x+=overflow.x;if(this.arguments.cropLeft&&overflow.x>0)pos.x=0;if(this.arguments.cropBottom&&overflow.y<0)pos.y+=overflow.y;if(this.arguments.cropTop&&overflow.y>0)pos.y=0;return pos},global:{defaults:{focus:null,timeout:200,rel:"tooltip",type:"hover",useTitle:false,allowHTML:false,copyLink:true,remainIfToolTipHover:true,focusMouse:true,position:"",x:9,y:5,cropLeft:true,cropRight:false,cropTop:true,cropBottom:false}}});CDON.ui.ImageToolTip=CDON.ui.ToolTip.extend({imageElement:null,arguments:null,loaderElement:null,descriptionElement:null,currentImagePath:null,constructor:function(arguments){arguments=Incordia.merge(CDON.ui.ImageToolTip.defaults,arguments);arguments.allowHTML=true;var imageElement=this.imageElement=document.createElement("img");var loaderElement=this.loaderElement=document.createElement("div");var descriptionElement=this.descriptionElement=document.createElement("div");this.base.constructor.call(this,arguments);imageElement.className=this.arguments.rel+"img";loaderElement.className=this.arguments.rel+"loader";loaderElement.style.styleFloat="left";descriptionElement.appendChild(document.createTextNode(this.arguments.loadingText));descriptionElement.style.clear="both";descriptionElement.className=this.arguments.rel+"desc";this.tooltip.appendChild(loaderElement);this.tooltip.appendChild(imageElement);this.tooltip.appendChild(descriptionElement)},load:function(){this.base.load.call(this)},show:function(path,focusElement){if(this.descriptionElement.firstChild)this.descriptionElement.firstChild.data="     ";path=this.arguments.pathResolver?this.arguments.pathResolver(path):decodeURIComponent(path);if(this.currentImagePath==path){this.base.show.call(this,"");return}this.currentImagePath=path;var query=parseQueryString(path);path=this.arguments.baseUrl+query.path+this.arguments.suffixUrl;this.imageElement.style.display="none";this.loaderElement.style.display="";this.loaderElement.style.width=this.arguments.minSize+"px";this.loaderElement.style.height=this.arguments.minSize+"px";var img=new Image();var sizeSetter=function(){if(img.width>0){clearInterval(_iv);var size={x:this.arguments.minSize,y:this.arguments.minSize};if(img.width>img.height){size.x=Math.max(size.x,Math.min(this.arguments.maxSize,img.width));var diff=size.x/img.width;size.y=img.height*diff}else{size.y=Math.max(size.y,Math.min(this.arguments.maxSize,img.height));var diff=size.y/img.height;size.x=img.width*diff}this.loaderElement.style.width=size.x+"px";this.loaderElement.style.height=size.y+"px";this.imageElement.style.width=size.x+"px";this.imageElement.style.height=size.y+"px"}}.bind(this);img.onerror=function(){img.onload=null;img.onerror=null;if(this.descriptionElement.firstChild)this.descriptionElement.firstChild.data=""}.bind(this);img.onload=function(){img.onload=null;this.imageElement.style.display="";this.loaderElement.style.display="none";if(this.descriptionElement.firstChild)this.descriptionElement.firstChild.data=query.title||"";clearInterval(_iv);sizeSetter()}.bind(this);img.src=this.imageElement.src=path;var _iv=setInterval(sizeSetter,50);setTimeout(function(){if(this.descriptionElement.firstChild&&this.descriptionElement.firstChild.data=="     ")this.descriptionElement.firstChild.data=this.arguments.loadingText||""}.bind(this),50);this.base.show.call(this,"")},global:{defaults:{baseUrl:"",suffixUrl:"",rel:"imagetooltip",minSize:50,maxSize:200,loadingText:"",pathResolver:null}}});
