var Spry;if(!Spry)Spry={};Spry.forwards=1;Spry.backwards=2;Spry.linearTransition=1;Spry.sinusoidalTransition=2;if(!Spry.Effect)Spry.Effect={};Spry.Effect.Registry=function()
{this.elements=new Array();_AnimatedElement=function(element)
{this.element=element;this.currentEffect=-1;this.effectArray=new Array();};this.AnimatedElement=_AnimatedElement;};Spry.Effect.Registry.prototype.getRegisteredEffect=function(element,effect)
{var eleIdx=this.getIndexOfElement(element);if(eleIdx==-1)
{this.elements[this.elements.length]=new this.AnimatedElement(element);eleIdx=this.elements.length-1;}
var foundEffectArrayIdx=-1;for(var i=0;i<this.elements[eleIdx].effectArray.length;i++)
{if(this.elements[eleIdx].effectArray[i])
{if(this.effectsAreTheSame(this.elements[eleIdx].effectArray[i],effect))
{foundEffectArrayIdx=i;if(this.elements[eleIdx].effectArray[i].isRunning==true){this.elements[eleIdx].effectArray[i].cancel();}
this.elements[eleIdx].currentEffect=i;if(this.elements[eleIdx].effectArray[i].options&&(this.elements[eleIdx].effectArray[i].options.toggle!=null)){if(this.elements[eleIdx].effectArray[i].options.toggle==true)
this.elements[eleIdx].effectArray[i].doToggle();}else{this.elements[eleIdx].effectArray[i]=effect;}
break;}}}
if(foundEffectArrayIdx==-1)
{var currEffectIdx=this.elements[eleIdx].effectArray.length;this.elements[eleIdx].effectArray[currEffectIdx]=effect;this.elements[eleIdx].currentEffect=currEffectIdx;}
var idx=this.elements[eleIdx].currentEffect;return this.elements[eleIdx].effectArray[idx];}
Spry.Effect.Registry.prototype.getIndexOfElement=function(element)
{var registryIndex=-1;for(var i=0;i<this.elements.length;i++)
{if(this.elements[i]){if(this.elements[i].element==element)
registryIndex=i;}}
return registryIndex;}
Spry.Effect.Registry.prototype.effectsAreTheSame=function(effectA,effectB)
{if(effectA.name!=effectB.name)
return false;if(effectA.effectsArray)
{if(!effectB.effectsArray||effectA.effectsArray.length!=effectB.effectsArray.length)
return false;for(var i=0;i<effectA.effectsArray.length;i++)
{if(!Spry.Effect.Utils.optionsAreIdentical(effectA.effectsArray[i].effect.options,effectB.effectsArray[i].effect.options))
return false;}}
else
{if(effectB.effectsArray||!Spry.Effect.Utils.optionsAreIdentical(effectA.options,effectB.options))
return false;}
return true;}
var SpryRegistry=new Spry.Effect.Registry;if(!Spry.Effect.Utils)Spry.Effect.Utils={};Spry.Effect.Utils.showError=function(msg)
{alert('Spry.Effect ERR: '+msg);}
Spry.Effect.Utils.Position=function()
{this.x=0;this.y=0;this.units="px";}
Spry.Effect.Utils.Rectangle=function()
{this.width=0;this.height=0;this.units="px";}
Spry.Effect.Utils.PositionedRectangle=function()
{this.position=new Spry.Effect.Utils.Position;this.rectangle=new Spry.Effect.Utils.Rectangle;}
Spry.Effect.Utils.intToHex=function(integerNum)
{var result=integerNum.toString(16);if(result.length==1)
result="0"+result;return result;}
Spry.Effect.Utils.hexToInt=function(hexStr)
{return parseInt(hexStr,16);}
Spry.Effect.Utils.rgb=function(redInt,greenInt,blueInt)
{var redHex=Spry.Effect.Utils.intToHex(redInt);var greenHex=Spry.Effect.Utils.intToHex(greenInt);var blueHex=Spry.Effect.Utils.intToHex(blueInt);compositeColorHex=redHex.concat(greenHex,blueHex);compositeColorHex='#'+compositeColorHex;return compositeColorHex;}
Spry.Effect.Utils.camelize=function(stringToCamelize)
{var oStringList=stringToCamelize.split('-');var isFirstEntry=true;var camelizedString='';for(var i=0;i<oStringList.length;i++)
{if(oStringList[i].length>0)
{if(isFirstEntry)
{camelizedString=oStringList[i];isFirstEntry=false;}
else
{var s=oStringList[i];camelizedString+=s.charAt(0).toUpperCase()+s.substring(1);}}}
return camelizedString;}
Spry.Effect.Utils.isPercentValue=function(value)
{var result=false;try
{if(value.lastIndexOf("%")>0)
result=true;}
catch(e){}
return result;}
Spry.Effect.Utils.getPercentValue=function(value)
{var result=0;try
{result=Number(value.substring(0,value.lastIndexOf("%")));}
catch(e){Spry.Effect.Utils.showError('Spry.Effect.Utils.getPercentValue: '+e);}
return result;}
Spry.Effect.Utils.getPixelValue=function(value)
{var result=0;try
{result=Number(value.substring(0,value.lastIndexOf("px")));}
catch(e){}
return result;}
Spry.Effect.Utils.getFirstChildElement=function(node)
{if(node)
{var childCurr=node.firstChild;while(childCurr)
{if(childCurr.nodeType==1)
return childCurr;childCurr=childCurr.nextSibling;}}
return null;};Spry.Effect.Utils.fetchChildImages=function(startEltIn,targetImagesOut)
{if(!startEltIn||startEltIn.nodeType!=1||!targetImagesOut)
return;if(startEltIn.hasChildNodes())
{var childImages=startEltIn.getElementsByTagName('img')
var imageCnt=childImages.length;for(var i=0;i<imageCnt;i++)
{var imgCurr=childImages[i];var dimensionsCurr=Spry.Effect.getDimensions(imgCurr);targetImagesOut.push([imgCurr,dimensionsCurr.width,dimensionsCurr.height]);}}}
Spry.Effect.Utils.optionsAreIdentical=function(optionsA,optionsB)
{if(optionsA==null&&optionsB==null)
return true;if(optionsA!=null&&optionsB!=null)
{var objectCountA=0;var objectCountB=0;for(var propA in optionsA)objectCountA++;for(var propB in optionsB)objectCountB++;if(objectCountA!=objectCountB)
return false;for(var prop in optionsA)
{if(optionsA[prop]===undefined)
{if(optionsB[prop]!==undefined)
return false;}
else if((optionsB[prop]===undefined)||(optionsA[prop]!=optionsB[prop]))
{return false;}}
return true;}
return false;}
Spry.Effect.getElement=function(ele)
{var element=null;if(ele&&typeof ele=="string")
element=document.getElementById(ele);else
element=ele;if(element==null)Spry.Effect.Utils.showError('Element "'+ele+'" not found.');return element;}
Spry.Effect.getStyleProp=function(element,prop)
{var value;try
{value=element.style[Spry.Effect.Utils.camelize(prop)];if(!value)
{if(document.defaultView&&document.defaultView.getComputedStyle){var css=document.defaultView.getComputedStyle(element,null);value=css?css.getPropertyValue(prop):null;}else
if(element.currentStyle){value=element.currentStyle[Spry.Effect.Utils.camelize(prop)];}}}
catch(e){Spry.Effect.Utils.showError('Spry.Effect.getStyleProp: '+e);}
return value=='auto'?null:value;};Spry.Effect.getStylePropRegardlessOfDisplayState=function(element,prop,displayElement)
{var refElement=displayElement?displayElement:element;var displayOrig=Spry.Effect.getStyleProp(refElement,'display');var visibilityOrig=Spry.Effect.getStyleProp(refElement,'visibility');if(displayOrig=='none')
{Spry.Effect.setStyleProp(refElement,'visibility','hidden');Spry.Effect.setStyleProp(refElement,'display','block');if(window.opera)
refElement.focus();}
var styleProp=Spry.Effect.getStyleProp(element,prop);if(displayOrig=='none')
{Spry.Effect.setStyleProp(refElement,'display','none');Spry.Effect.setStyleProp(refElement,'visibility',visibilityOrig);}
return styleProp;};Spry.Effect.setStyleProp=function(element,prop,value)
{try
{element.style[Spry.Effect.Utils.camelize(prop)]=value;}
catch(e){Spry.Effect.Utils.showError('Spry.Effect.setStyleProp: '+e);}
return null;};Spry.Effect.makePositioned=function(element)
{var pos=Spry.Effect.getStyleProp(element,'position');if(!pos||pos=='static'){element.style.position='relative';if(window.opera){element.style.top=0;element.style.left=0;}}}
Spry.Effect.isInvisible=function(element)
{var propDisplay=Spry.Effect.getStyleProp(element,'display');if(propDisplay&&propDisplay.toLowerCase()=='none')
return true;var propVisible=Spry.Effect.getStyleProp(element,'visibility');if(propVisible&&propVisible.toLowerCase()=='hidden')
return true;return false;}
Spry.Effect.enforceVisible=function(element)
{var propDisplay=Spry.Effect.getStyleProp(element,'display');if(propDisplay&&propDisplay.toLowerCase()=='none')
Spry.Effect.setStyleProp(element,'display','block');var propVisible=Spry.Effect.getStyleProp(element,'visibility');if(propVisible&&propVisible.toLowerCase()=='hidden')
Spry.Effect.setStyleProp(element,'visibility','visible');}
Spry.Effect.makeClipping=function(element)
{var overflow=Spry.Effect.getStyleProp(element,'overflow');if(overflow!='hidden'&&overflow!='scroll')
{var heightCache=0;var needsCache=/MSIE 7.0/.test(navigator.userAgent)&&/Windows NT/.test(navigator.userAgent);if(needsCache)
heightCache=Spry.Effect.getDimensionsRegardlessOfDisplayState(element).height;Spry.Effect.setStyleProp(element,'overflow','hidden');if(needsCache)
Spry.Effect.setStyleProp(element,'height',heightCache+'px');}}
Spry.Effect.cleanWhitespace=function(element)
{var childCountInit=element.childNodes.length;for(var i=childCountInit-1;i>=0;i--){var node=element.childNodes[i];if(node.nodeType==3&&!/\S/.test(node.nodeValue))
{try
{element.removeChild(node);}
catch(e){Spry.Effect.Utils.showError('Spry.Effect.cleanWhitespace: '+e);}}}}
Spry.Effect.getComputedStyle=function(element)
{var computedStyle=/MSIE/.test(navigator.userAgent)?element.currentStyle:document.defaultView.getComputedStyle(element,null);return computedStyle;}
Spry.Effect.getDimensions=function(element)
{var dimensions=new Spry.Effect.Utils.Rectangle;var computedStyle=null;if(element.style.width&&/px/i.test(element.style.width))
{dimensions.width=parseInt(element.style.width);}
else
{computedStyle=Spry.Effect.getComputedStyle(element);var tryComputedStyle=computedStyle&&computedStyle.width&&/px/i.test(computedStyle.width);if(tryComputedStyle)
dimensions.width=parseInt(computedStyle.width);if(!tryComputedStyle||dimensions.width==0)
dimensions.width=element.offsetWidth;}
if(element.style.height&&/px/i.test(element.style.height))
{dimensions.height=parseInt(element.style.height);}
else
{if(!computedStyle)
computedStyle=Spry.Effect.getComputedStyle(element);var tryComputedStyle=computedStyle&&computedStyle.height&&/px/i.test(computedStyle.height);if(tryComputedStyle)
dimensions.height=parseInt(computedStyle.height);if(!tryComputedStyle||dimensions.height==0)
dimensions.height=element.offsetHeight;}
return dimensions;}
Spry.Effect.getDimensionsRegardlessOfDisplayState=function(element,displayElement)
{var refElement=displayElement?displayElement:element;var displayOrig=Spry.Effect.getStyleProp(refElement,'display');var visibilityOrig=Spry.Effect.getStyleProp(refElement,'visibility');if(displayOrig=='none')
{Spry.Effect.setStyleProp(refElement,'visibility','hidden');Spry.Effect.setStyleProp(refElement,'display','block');if(window.opera)
refElement.focus();}
var dimensions=Spry.Effect.getDimensions(element);if(displayOrig=='none')
{Spry.Effect.setStyleProp(refElement,'display','none');Spry.Effect.setStyleProp(refElement,'visibility',visibilityOrig);}
return dimensions;}
Spry.Effect.getOpacity=function(element)
{var o=Spry.Effect.getStyleProp(element,"opacity");if(o==undefined||o==null)
o=1.0;return o;}
Spry.Effect.getColor=function(element)
{var c=Spry.Effect.getStyleProp(ele,"background-color");return c;}
Spry.Effect.getPosition=function(element)
{var position=new Spry.Effect.Utils.Position;var computedStyle=null;if(element.style.left&&/px/i.test(element.style.left))
{position.x=parseInt(element.style.left);}
else
{computedStyle=Spry.Effect.getComputedStyle(element);var tryComputedStyle=computedStyle&&computedStyle.left&&/px/i.test(computedStyle.left);if(tryComputedStyle)
position.x=parseInt(computedStyle.left);if(!tryComputedStyle||position.x==0)
position.x=element.offsetLeft;}
if(element.style.top&&/px/i.test(element.style.top))
{position.y=parseInt(element.style.top);}
else
{if(!computedStyle)
computedStyle=Spry.Effect.getComputedStyle(element);var tryComputedStyle=computedStyle&&computedStyle.top&&/px/i.test(computedStyle.top);if(tryComputedStyle)
position.y=parseInt(computedStyle.top);if(!tryComputedStyle||position.y==0)
position.y=element.offsetTop;}
return position;}
Spry.Effect.getOffsetPosition=Spry.Effect.getPosition;Spry.Effect.Animator=function(options)
{this.name='Animator';this.element=null;this.timer=null;this.direction=Spry.forwards;this.startMilliseconds=0;this.repeat='none';this.isRunning=false;this.options={duration:500,toggle:false,transition:Spry.linearTransition,interval:33};this.setOptions(options);};Spry.Effect.Animator.prototype.setOptions=function(options)
{if(!options)
return;for(var prop in options)
this.options[prop]=options[prop];};Spry.Effect.Animator.prototype.start=function(withoutTimer)
{if(arguments.length==0)
withoutTimer=false;var self=this;if(this.options.setup)
{try
{this.options.setup(this.element,this);}
catch(e){Spry.Effect.Utils.showError('Spry.Effect.Animator.prototype.start: setup callback: '+e);}}
this.prepareStart();var currDate=new Date();this.startMilliseconds=currDate.getTime();if(withoutTimer==false){this.timer=setInterval(function(){self.drawEffect();},this.options.interval);}
this.isRunning=true;};Spry.Effect.Animator.prototype.stop=function()
{if(this.timer){clearInterval(this.timer);this.timer=null;}
this.startMilliseconds=0;if(this.options.finish)
{try
{this.options.finish(this.element,this);}
catch(e){Spry.Effect.Utils.showError('Spry.Effect.Animator.prototype.stop: finish callback: '+e);}}
this.isRunning=false;};Spry.Effect.Animator.prototype.cancel=function()
{if(this.timer){clearInterval(this.timer);this.timer=null;}
this.isRunning=false;}
Spry.Effect.Animator.prototype.drawEffect=function()
{var isRunning=true;var position=this.getElapsedMilliseconds()/this.options.duration;if(this.getElapsedMilliseconds()>this.options.duration){position=1.0;}else{if(this.options.transition==Spry.sinusoidalTransition)
{position=(-Math.cos(position*Math.PI)/2)+0.5;}
else if(this.options.transition==Spry.linearTransition)
{}
else
{Spry.Effect.Utils.showError('unknown transition');}}
this.animate(position);if(this.getElapsedMilliseconds()>this.options.duration){this.stop();isRunning=false;}
return isRunning;};Spry.Effect.Animator.prototype.getElapsedMilliseconds=function()
{if(this.startMilliseconds>0){var currDate=new Date();return(currDate.getTime()-this.startMilliseconds);}else{return 0;}};Spry.Effect.Animator.prototype.doToggle=function()
{if(this.options.toggle==true){if(this.direction==Spry.forwards){this.direction=Spry.backwards;}else if(this.direction==Spry.backwards){this.direction=Spry.forwards;}}}
Spry.Effect.Animator.prototype.prepareStart=function(){};Spry.Effect.Animator.prototype.animate=function(position){};Spry.Effect.Size=function(element,fromRect,toRect,options)
{this.dynamicFromRect=false;if(arguments.length==3)
{options=toRect;toRect=fromRect;fromRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);this.dynamicFromRect=true;}
Spry.Effect.Animator.call(this,options);this.name='Size';this.element=Spry.Effect.getElement(element);if(fromRect.units!=toRect.units)
Spry.Effect.Utils.showError('Spry.Effect.Size: Conflicting units ('+fromRect.units+', '+toRect.units+')');this.units=fromRect.units;var originalRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);this.originalWidth=originalRect.width;this.startWidth=fromRect.width;this.startHeight=fromRect.height;this.stopWidth=toRect.width;this.stopHeight=toRect.height;this.childImages=new Array();if(this.options.scaleContent)
Spry.Effect.Utils.fetchChildImages(element,this.childImages);this.fontFactor=1.0;if(this.element.style&&this.element.style.fontSize)
{if(/em\s*$/.test(this.element.style.fontSize))
this.fontFactor=parseFloat(this.element.style.fontSize);}
if(Spry.Effect.Utils.isPercentValue(this.startWidth))
{var startWidthPercent=Spry.Effect.Utils.getPercentValue(this.startWidth);this.startWidth=originalRect.width*(startWidthPercent/100);}
if(Spry.Effect.Utils.isPercentValue(this.startHeight))
{var startHeightPercent=Spry.Effect.Utils.getPercentValue(this.startHeight);this.startHeight=originalRect.height*(startHeightPercent/100);}
if(Spry.Effect.Utils.isPercentValue(this.stopWidth))
{var stopWidthPercent=Spry.Effect.Utils.getPercentValue(this.stopWidth);var originalRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);this.stopWidth=originalRect.width*(stopWidthPercent/100);}
if(Spry.Effect.Utils.isPercentValue(this.stopHeight))
{var stopHeightPercent=Spry.Effect.Utils.getPercentValue(this.stopHeight);var originalRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);this.stopHeight=originalRect.height*(stopHeightPercent/100);}
this.widthRange=this.startWidth-this.stopWidth;this.heightRange=this.startHeight-this.stopHeight;this.enforceVisible=Spry.Effect.isInvisible(this.element);};Spry.Effect.Size.prototype=new Spry.Effect.Animator();Spry.Effect.Size.prototype.constructor=Spry.Effect.Size;Spry.Effect.Size.prototype.animate=function(position)
{var width=0;var height=0;var fontSize=0;if(this.direction==Spry.forwards){width=this.startWidth-(this.widthRange*position);height=this.startHeight-(this.heightRange*position);fontSize=this.fontFactor*(this.startWidth+position*(this.stopWidth-this.startWidth))/this.originalWidth;}else if(this.direction==Spry.backwards){width=this.widthRange*position+this.stopWidth;height=this.heightRange*position+this.stopHeight;fontSize=this.fontFactor*(this.stopWidth+position*(this.startWidth-this.stopWidth))/this.originalWidth;}
if(this.options.scaleContent==true)
this.element.style.fontSize=fontSize+'em';this.element.style.width=width+this.units;this.element.style.height=height+this.units;if(this.options.scaleContent)
{var propFactor=(this.direction==Spry.forwards)?(this.startWidth+position*(this.stopWidth-this.startWidth))/this.originalWidth:(this.stopWidth+position*(this.startWidth-this.stopWidth))/this.originalWidth;for(var i=0;i<this.childImages.length;i++)
{this.childImages[i][0].style.width=propFactor*this.childImages[i][1]+this.units;this.childImages[i][0].style.height=propFactor*this.childImages[i][2]+this.units;}}
if(this.enforceVisible)
{Spry.Effect.enforceVisible(this.element);this.enforceVisible=false;}};Spry.Effect.Size.prototype.prepareStart=function()
{if(this.dynamicFromRect==true)
{var fromRect=Spry.Effect.getDimensions(element);this.startWidth=fromRect.width;this.startHeight=fromRect.height;this.widthRange=this.startWidth-this.stopWidth;this.heightRange=this.startHeight-this.stopHeight;}};Spry.Effect.Blind=function(element,options)
{var element=Spry.Effect.getElement(element);Spry.Effect.makeClipping(element);var durationInMilliseconds=1000;var doToggle=false;var kindOfTransition=Spry.sinusoidalTransition;var doScaleContent=false;var setupCallback=null;var finishCallback=null;var originalRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);var fromHeightPx=originalRect.height;var toHeightPx=0;var optionFrom=options?options.from:originalRect.height;var optionTo=options?options.to:0;if(options)
{if(options.duration!=null)durationInMilliseconds=options.duration;if(options.from!=null)
{if(Spry.Effect.Utils.isPercentValue(options.from))
fromHeightPx=Spry.Effect.Utils.getPercentValue(options.from)*originalRect.height/100;else
fromHeightPx=Spry.Effect.Utils.getPixelValue(options.from);}
if(options.to!=null)
{if(Spry.Effect.Utils.isPercentValue(options.to))
toHeightPx=Spry.Effect.Utils.getPercentValue(options.to)*originalRect.height/100;else
toHeightPx=Spry.Effect.Utils.getPixelValue(options.to);}
if(options.toggle!=null)doToggle=options.toggle;if(options.transition!=null)kindOfTransition=options.transition;if(options.setup!=null)setupCallback=options.setup;if(options.finish!=null)finishCallback=options.finish;}
var fromRect=new Spry.Effect.Utils.Rectangle;fromRect.width=originalRect.width;fromRect.height=fromHeightPx;var toRect=new Spry.Effect.Utils.Rectangle;toRect.width=originalRect.width;toRect.height=toHeightPx;options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,scaleContent:doScaleContent,setup:setupCallback,finish:finishCallback,from:optionFrom,to:optionTo};var blindEffect=new Spry.Effect.Size(element,fromRect,toRect,options);blindEffect.name='Blind';var registeredEffect=SpryRegistry.getRegisteredEffect(element,blindEffect);registeredEffect.start();return registeredEffect;};function setupHighlight(element,effect)
{Spry.Effect.setStyleProp(element,'background-image','none');};function finishHighlight(element,effect)
{Spry.Effect.setStyleProp(element,'background-image',effect.options.restoreBackgroundImage);if(effect.direction==Spry.forwards)
Spry.Effect.setStyleProp(element,'background-color',effect.options.restoreColor);};Spry.Effect.DoFade=function(element,options)
{return Spry.Effect.AppearFade(element,options);};Spry.Effect.DoBlind=function(element,options)
{return Spry.Effect.Blind(element,options);};Spry.Effect.DoHighlight=function(element,options)
{return Spry.Effect.Highlight(element,options);};Spry.Effect.DoSlide=function(element,options)
{return Spry.Effect.Slide(element,options);};Spry.Effect.DoGrow=function(element,options)
{return Spry.Effect.GrowShrink(element,options);};Spry.Effect.DoShake=function(element,options)
{return Spry.Effect.Shake(element,options);};Spry.Effect.DoSquish=function(element,options)
{return Spry.Effect.Squish(element,options);};Spry.Effect.DoPulsate=function(element,options)
{return Spry.Effect.Pulsate(element,options);};Spry.Effect.DoPuff=function(element,options)
{return Spry.Effect.Puff(element,options);};Spry.Effect.DoDropOut=function(element,options)
{return Spry.Effect.DropOut(element,options);};Spry.Effect.DoFold=function(element,options)
{return Spry.Effect.Fold(element,options);};