/*
 * Fish Eye
 * Copyright(c) 2007, DMXZone.
 * 
 * This code is licensed under BSD license. Use it as you wish, 
 * but keep this copyright intact.
 */


(function($)
{$.delayedTask=function(fn,scope,args)
{var nTimeoutId=null;this.delay=function(time,newFn,newScope,newArgs)
{if(nTimeoutId)
{clearTimeout(nTimeoutId);}
fn=newFn||fn;scope=newScope||scope;args=newArgs||args;nTimeoutId=setTimeout(function(){fn.call(scope,args);},time);}
this.cancel=function()
{if(nTimeoutId)
{clearTimeout(nTimeoutId);nTimeoutId=null;}}
this.delayCancel=function(time)
{var hE=this;setTimeout(function(){hE.cancel();},time);}}})(jQuery);jQuery.dmxFishEye={build:function(hOptions)
{return this.each(function()
{var hFishEye=this;var agt=navigator.userAgent.toLowerCase();jQuery.browser.msie7=agt.indexOf('msie 7')!=-1;if(!hFishEye.parentNode)
{$(hFishEye).addClass('fisheye');if(hOptions.valign=='top')
{$(hFishEye).addClass('fisheyeTop');}
else if(hOptions.valign=='bottom')
{$(hFishEye).addClass('fisheyeBottom');}
hContainer=$('<div>');hContainer.appendTo(hFishEye).addClass('fisheyeContainter');$(hFishEye).appendTo(document.body);}
hFishEye.dmxFishEyeConfig={sItemsSelector:hOptions.items||'a',hItems:$(hOptions.items||'a',hFishEye),hContainer:$(hOptions.container,hFishEye),sAlignment:hOptions.align,sValign:hOptions.valign||'top',sHalign:hOptions.halign||'center',sTextColor:hOptions.textColor||null,sTextPos:hOptions.textPos,hPos:$(hFishEye).offset(),nWidth:$(hFishEye).width(),sTextSelector:hOptions.textItems||'span',nImageWidth:hOptions.imageWidth,nItemPadding:hOptions.itemPadding||0,nMaxWidth:hOptions.maxWidth,nMaxHeight:hOptions.maxHeight,nItemWidth:hOptions.itemWidth,nMaxItemWidth:hOptions.maxItemWidth,nItemHeight:hOptions.itemHeight,nMaxItemHeight:hOptions.maxItemHeight,nProximity:hOptions.proximity||80,sSmoothness:hOptions.smoothness,aWidths:[],pngFix:false}
if(jQuery.browser.msie&&!jQuery.browser.msie7)
{hFishEye.dmxFishEyeConfig.pngFix=true;}
if(typeof hFishEye.dmxFishEyeConfig.sTextPos=='undefined')
{hFishEye.dmxFishEyeConfig.sTextPos=hFishEye.dmxFishEyeConfig.sValign=='top'?'bottom':'top';}
if(hFishEye.dmxFishEyeConfig.nItemPadding>0)
{var nPercent=hFishEye.dmxFishEyeConfig.nMaxWidth/hFishEye.dmxFishEyeConfig.nItemWidth;hFishEye.dmxFishEyeConfig.nItemWidth+=2*hFishEye.dmxFishEyeConfig.nItemPadding;hFishEye.dmxFishEyeConfig.nMaxWidth+=2*hFishEye.dmxFishEyeConfig.nItemPadding*nPercent;}
if(hOptions.sSmoothness)
{switch(hOptions.sSmoothness)
{case'high':hFishEye.dmxFishEyeConfig.nProximity=140;break;case'medium':hFishEye.dmxFishEyeConfig.nProximity=80;break;case'low':hFishEye.dmxFishEyeConfig.nProximity=50;break;}}
if(hOptions.itemsList)
{var nImgWidth=hFishEye.dmxFishEyeConfig.nImageWidth;$.each(hOptions.itemsList,function(nPos,hItem)
{if(hFishEye.dmxFishEyeConfig.sValign=='bottom')
{hFishEye.dmxFishEyeConfig.hContainer.append('<a style="width: '+hFishEye.dmxFishEyeConfig.nItemWidth+'px; left: '+nPos*hFishEye.dmxFishEyeConfig.nItemWidth+'px;" href="#" class="fisheyeItem"><span>'+hItem.text+'</span><img src="'+hItem.image+'" width="'+nImgWidth+'">')}
else if(hFishEye.dmxFishEyeConfig.sValign=='top')
{hFishEye.dmxFishEyeConfig.hContainer.append('<a style="width: '+hFishEye.dmxFishEyeConfig.nItemWidth+'px; left: '+nPos*hFishEye.dmxFishEyeConfig.nItemWidth+'px;" href="#" class="fisheyeItem"><img src="'+hItem.image+'" width="'+nImgWidth+'"><span>'+hItem.text+'</span>')}});hFishEye.dmxFishEyeConfig.hItems=$(hFishEye.dmxFishEyeConfig.sItemsSelector,hFishEye);}
jQuery.dmxFishEye.positionToolBar(this,0);jQuery.dmxFishEye.positionIcons(this);if(typeof soundManager!='undefined')
{var hSoundTask=new jQuery.delayedTask(function(){soundManager.play('baloon')})}
var hItem;hFishEye.dmxFishEyeConfig.hItems.bind('mouseover',function()
{if(hSoundTask)
{hSoundTask.delay(100);}}).bind('mouseout',function()
{if(hSoundTask)
{hSoundTask.cancel();}}).each(function(nPos)
{hItem=this;$(hFishEye.dmxFishEyeConfig.sTextSelector,this).css('opacity',0).css('display','block');if(hFishEye.dmxFishEyeConfig.sTextColor)
{$(hFishEye.dmxFishEyeConfig.sTextSelector,this).css('color',hFishEye.dmxFishEyeConfig.sTextColor);}
if(hFishEye.dmxFishEyeConfig.sValign=='bottom')
{$(this).css('top','auto');$(this).css('bottom','0');}
else if(hFishEye.dmxFishEyeConfig.sValign=='top')
{$(this).css('top','0');$(this).css('bottom','auto');}
if(hFishEye.dmxFishEyeConfig.nItemPadding>0)
{$(this).css('paddingLeft',hFishEye.dmxFishEyeConfig.nItemPadding);$(this).css('paddingRight',hFishEye.dmxFishEyeConfig.nItemPadding);if(!$.boxModel||$.browser.msie)
{$(this).css('width',hFishEye.dmxFishEyeConfig.nItemWidth-2*hFishEye.dmxFishEyeConfig.nItemPadding);}}
if(hFishEye.dmxFishEyeConfig.sTextPos=='top')
{$("img",this).appendTo($(this));}
else if(hFishEye.dmxFishEyeConfig.sTextPos=='bottom')
{$("img",this).prependTo($(this));}
if(hFishEye.dmxFishEyeConfig.pngFix&&$("img",this).attr('src').toLowerCase().indexOf('.png')>0)
{var hImage=new Image();$(hImage).bind('load',function()
{var nDelta=this.width/this.height;hItem.pngDelta=nDelta;}).attr('src',$(this).find('img')[0].src);$("img",this).addClass('png');try
{document.recalc();}
catch(hEx)
{}}
hFishEye.dmxFishEyeConfig.aWidths[nPos]=hFishEye.dmxFishEyeConfig.nItemWidth;});$(this).bind('mouseout',function()
{});$(window).bind('resize',function()
{hFishEye.dmxFishEyeConfig.hPos=$(hFishEye).offset();jQuery.dmxFishEye.positionToolBar(hFishEye,0);jQuery.dmxFishEye.positionIcons(hFishEye);});$(document).bind('mousemove',function(event)
{$.event.fix(event);var hMPointer={x:event.pageX,y:event.pageY};var nCorrection=0;var nDX=0;var nDY=0;var hDWidth=0;if(hFishEye.dmxFishEyeConfig.sHalign)
{nDX=hMPointer.x-hFishEye.dmxFishEyeConfig.hPos.left;hDWidth=hFishEye.dmxFishEyeConfig.nItemWidth*hFishEye.dmxFishEyeConfig.hItems.size();if(hFishEye.dmxFishEyeConfig.sHalign=='center')
{nDX+=-(hFishEye.offsetWidth-hDWidth)/2;}
else if(hFishEye.dmxFishEyeConfig.sHalign=='right')
{nDX+=-hFishEye.offsetWidth+hDWidth;}
else if(hFishEye.dmxFishEyeConfig.sHalign=='left')
{}}
nDY=hMPointer.y-hFishEye.dmxFishEyeConfig.hPos.top-hFishEye.offsetHeight/2;var nPDY=Math.pow(nDY,2);var aWidths=[];hFishEye.dmxFishEyeConfig.hItems.each(function(nPos)
{var nDistance;if(hFishEye.dmxFishEyeConfig.sHalign!='center')
{var nTBPos=0;for(var nI=0;nI<nPos;nI++)
{nTBPos+=hFishEye.dmxFishEyeConfig.aWidths[nI];}
nDistance=Math.sqrt(Math.pow(nDX-nTBPos,2)+nPDY);nDistance-=hFishEye.dmxFishEyeConfig.aWidths[nPos]/2;}
else
{nDistance=Math.sqrt(Math.pow(nDX-nPos*hFishEye.dmxFishEyeConfig.nItemWidth,2)+nPDY);nDistance-=hFishEye.dmxFishEyeConfig.nItemWidth/2;}
nDistance=nDistance<0?0:nDistance;nDistance=nDistance>hFishEye.dmxFishEyeConfig.nProximity?hFishEye.dmxFishEyeConfig.nProximity:nDistance;nDistance=hFishEye.dmxFishEyeConfig.nProximity-nDistance;var nPercentage=nDistance/(hFishEye.dmxFishEyeConfig.nProximity/100);if(nPercentage>20)
{$(hFishEye.dmxFishEyeConfig.sTextSelector,this).css('opacity',nPercentage/100);}
else
{$(hFishEye.dmxFishEyeConfig.sTextSelector,this).css('opacity',0);}
var nExtraWidth=hFishEye.dmxFishEyeConfig.nMaxWidth*(nDistance/hFishEye.dmxFishEyeConfig.nProximity);aWidths[nPos]=hFishEye.dmxFishEyeConfig.nItemWidth+nExtraWidth;$(this).css('width',hFishEye.dmxFishEyeConfig.nItemWidth+nExtraWidth);if(hFishEye.dmxFishEyeConfig.pngFix&&this.pngDelta)
{$(this).css('height',(hFishEye.dmxFishEyeConfig.nItemWidth+nExtraWidth)/this.pngDelta);}
if(hFishEye.dmxFishEyeConfig.nItemPadding>0)
{var nPadding=hFishEye.dmxFishEyeConfig.nItemPadding*(1+nPercentage/100);$(this).css('paddingLeft',nPadding);$(this).css('paddingRight',nPadding);if(!$.boxModel||$.browser.msie)
{$(this).css('width',hFishEye.dmxFishEyeConfig.nItemWidth+nExtraWidth-2*nPadding);if(hFishEye.dmxFishEyeConfig.pngFix&&this.pngDelta)
{$(this).css('height',(hFishEye.dmxFishEyeConfig.nItemWidth+nExtraWidth-2*nPadding)/this.pngDelta);}}}
$(this).css('left',hFishEye.dmxFishEyeConfig.nItemWidth*nPos+nCorrection);nCorrection+=nExtraWidth;});hFishEye.dmxFishEyeConfig.aWidths=aWidths;jQuery.dmxFishEye.positionToolBar(hFishEye,nCorrection);});});},positionToolBar:function(hFishEye,nCorrection)
{if(typeof nCorrection=='undefined')
{nCorrection=0;}
if(hFishEye.dmxFishEyeConfig.sHalign)
{if(hFishEye.dmxFishEyeConfig.sHalign=='center')
{hFishEye.dmxFishEyeConfig.hContainer.css('left',(hFishEye.offsetWidth-hFishEye.dmxFishEyeConfig.nItemWidth*hFishEye.dmxFishEyeConfig.hItems.size())/2-nCorrection/2);}
else if(hFishEye.dmxFishEyeConfig.sHalign=='left')
{hFishEye.dmxFishEyeConfig.hContainer.css('left',-nCorrection/hFishEye.dmxFishEyeConfig.hItems.size());}
else if(hFishEye.dmxFishEyeConfig.sHalign=='right')
{hFishEye.dmxFishEyeConfig.hContainer.css('left',hFishEye.offsetWidth-hFishEye.dmxFishEyeConfig.nItemWidth*hFishEye.dmxFishEyeConfig.hItems.size()-nCorrection/2);}}
hFishEye.dmxFishEyeConfig.hContainer.css('width',hFishEye.dmxFishEyeConfig.nItemWidth*hFishEye.dmxFishEyeConfig.hItems.size()+nCorrection)},positionIcons:function(hFishEye)
{hFishEye.dmxFishEyeConfig.hItems.each(function(nPos)
{$(this).css('width',hFishEye.dmxFishEyeConfig.nItemWidth);$(this).css('left',hFishEye.dmxFishEyeConfig.nItemWidth*nPos);});}}
jQuery.fn.dmxFishEye=jQuery.dmxFishEye.build;
