//Applies behaviour rules to the global dynamic effects 
//Author: Brian R Miedlar (c) 2004-2006
//Dependencies: prototype.js, behaviour.js, screen.js
var _dynamics;var Dynamics=Class.create();Dynamics.prototype={initialize:function(){this.frozenDiv=null;this.preloaderWaitCount=0;this.cacheNumber=0;this.preloaderHash=[];this.preloaderImages=new Array();this.loading=false;}};Dynamics.Load=function(){var Script_Name='dynamics.js';_os.requireAll(Script_Name,['screen.js'],{'onComplete':function(){_dynamics=new Dynamics();_os.onLoadComplete(Script_Name);}});};Dynamics.IsCssMember=function(element,cssSelector){var activeElement=null;var nodes=document.getElementsBySelector(cssSelector);nodes.each(function(node){if(node==$(element)){activeElement=node;throw $break;}});return(activeElement!=null);};Dynamics.IsChild=function(element,parent){element=$(element);var bFound=false;$A(parent.childNodes).each(function(child){if(child!=element){var childCheck=Dynamics.IsChild(element,child);if(childCheck){bFound=true;throw $break;}throw $continue;}bFound=true;throw $break;});return bFound;};Dynamics.IsCssChild=function(element,cssSelector){var bFound=false;var nodes=document.getElementsBySelector(cssSelector);nodes.each(function(node){if(node!=$(element)){var childCheck=Dynamics.IsChild(element,node);if(childCheck){bFound=true;throw $break;}throw $continue;}bFound=true;throw $break;});return bFound;};Dynamics.AddRolloverEffects=function(element,hoverCss,selectedCss,cssSelector,options){if(!options)options={};element=$(element);if(cssSelector==undefined)cssSelector=null;var selector=cssSelector;Event.observe(element,'mousedown',function(){if(selector){if(!Dynamics.IsCssMember(element,selector))return;}Element.addClassName(element,selectedCss);if(options.onSelected)options.onSelected(element);});Event.observe(element,'mouseover',function(){if(selector){if(!Dynamics.IsCssMember(element,selector))return;}Element.addClassName(element,hoverCss);if(options.onHover)options.onHover(element);});Event.observe(element,'mouseout',function(){if(selector){if(!Dynamics.IsCssMember(element,selector))return;}Element.removeClassName(element,hoverCss);if(options.onExited){options.onExited(element);}else{}});};Dynamics.AddButtonEffects=function(element,hoverCss,pressedCss,cssSelector){element=$(element);if(cssSelector==undefined)cssSelector=null;var selector=cssSelector;Event.observe(element,'mousedown',function(){if(selector){if(!Dynamics.IsCssMember(element,selector))return;}Element.addClassName(element,pressedCss);});Event.observe(element,'mouseover',function(){if(cssSelector){if(!Dynamics.IsCssMember(element,selector))return;}Element.addClassName(element,hoverCss);});Event.observe(element,'mouseup',function(){if(selector){if(!Dynamics.IsCssMember(element,selector))return;}Element.removeClassName(element,hoverCss);Element.removeClassName(element,pressedCss);});Event.observe(element,'mouseout',function(){if(selector){if(!Dynamics.IsCssMember(element,selector))return;}try{Element.removeClassName(element,hoverCss);}catch(e){}Element.removeClassName(element,pressedCss);});};Dynamics.ClearPreloadImageMemory=function(){if(_dynamics.preloaderImages)_dynamics.preloaderImages.clear();_dynamics.preloaderWaitCount=0;_dynamics.cacheNumber++;};Dynamics.PreloadImages=function(){if(!_dynamics){setTimeout(function(){Dynamics.PreloadImages(Dynamics.PreloadImages.arguments);},50);return;}var options=Dynamics.PreloadImages.arguments[0];var bTrackStatus=false;if(typeof(options)=='boolean'){bTrackStatus=options;options={};}else{options=Object.extend({},options||{});bTrackStatus=options.trackStatus;}var d=document;if(d.images){var i,j=_dynamics.preloaderImages.length,a=Dynamics.PreloadImages.arguments;for(i=1;i<a.length;i++)if(a[i].indexOf("#")!=0){_dynamics.preloaderImages[j]=new Image;var img=_dynamics.preloaderImages[j++];var imgSrc=a[i];if(bTrackStatus){if(_dynamics.preloaderHash){var hItem=_dynamics.preloaderHash[imgSrc];var bDefined=(hItem!=undefined);if(bDefined){if(hItem!=true)bDefined=false;}if(!bDefined){_dynamics.preloaderWaitCount++;img.onload=function(){if(options.onpreload)options.onpreload();Dynamics.OnImagePreloaded(_dynamics.cacheNumber,j);};img.onerror=function(){if(options.onpreloaderror)options.onpreloaderror();console.log('image preload error: '+imgSrc);};}else{if(options.onpreload)options.onpreload();Dynamics.OnImagePreloaded(_dynamics.cacheNumber,j);}}}img.src=imgSrc;_dynamics.preloaderHash[imgSrc]=true;}}};Dynamics.PreloadImage=Dynamics.PreloadImages;Dynamics.OnImagePreloaded=function(cacheNum,index){if(cacheNum!=_dynamics.cacheNumber)return;if(_dynamics.preloaderWaitCount<=0)return;_dynamics.preloaderWaitCount--;return;};Dynamics.HideGroup=function(cssGroupSelector){var nodes=document.getElementsBySelector(cssGroupSelector);nodes.each(function(node){Element.hide(node);});};Dynamics.ShowGroupMember=function(element,cssGroupSelector){Dynamics.HideGroup(cssGroupSelector);Element.show(element);};Dynamics.FreezeApplication=function(containerElement,frozenCss){if(_dynamics.frozenDiv!=null)return;if($('Frozen')){if(Element.visible('Frozen'))return;}Dynamics.UnfreezeApplication(containerElement);var oSize=Screen.PageSize();var sId='Frozen';if(!$(sId)){var div=document.createElement("div");div.setAttribute('id',sId);_dynamics.frozenDiv=$(containerElement).appendChild(div);}Element.setStyle(sId,{display:'block','background-color':'#999999',position:'absolute',top:0,left:0,'z-index':50,width:'100%',height:oSize.pageHeight+'px'});Element.addClassName(sId,frozenCss);Element.show(sId);Element.setOpacity(sId,.6);};Dynamics.UnfreezeApplication=function(containerElement){if(_dynamics.frozenDiv!=null)$(containerElement).removeChild(_dynamics.frozenDiv);_dynamics.frozenDiv=null;var sId='Frozen';if($(sId)){Element.hide(sId);}};Dynamics.Toggle=Class.create();Dynamics.Toggle.prototype={initialize:function(toggleElement,defaultOn,cssOn,cssOff,onToggleFunc){this.element=toggleElement;this.cssOn=cssOn;this.cssOff=cssOff;this.onToggle=onToggleFunc;this.switchState=!defaultOn;this.flip();},refresh:function(){this.updateStyle();if(this.onToggle!=undefined)this.onToggle(this.switchState);},on:function(){this.switchState=false;this.flip();},off:function(){this.switchState=true;this.flip();},flip:function(){this.switchState=!this.switchState;this.updateStyle();if(this.onToggle!=undefined)this.onToggle(this.switchState);},updateStyle:function(){if(this.switchState){Dynamics.Toggle.SwitchStyle(this.element,this.cssOn,this.cssOff,'on');}else{Dynamics.Toggle.SwitchStyle(this.element,this.cssOn,this.cssOff,'off');}},isState:function(state){if(state){this.isOn();}else{this.isOff();}},isOn:function(){this.switchState=true;this.updateStyle();},isOff:function(){this.switchState=false;this.updateStyle();}};Dynamics.Toggle.SwitchStyle=function(element,cssOn,cssOff,value){if(value=='on'){Element.removeClassName(element,cssOff);if(!Element.hasClassName(element,cssOn))Element.addClassName(element,cssOn);}else{Element.removeClassName(element,cssOn);if(!Element.hasClassName(element,cssOff))Element.addClassName(element,cssOff);}};Dynamics.SetStatus=function(element,value,bAutoTimeout){Element.update(element,value);if(bAutoTimeout)setTimeout(function(){Element.update(element,'');},300);};Dynamics.CheckDocumentStatus=function(preloaderRefreshCount,preloaderWaitCount,activeRefreshCount,activeWaitCount,statusElement){if(!statusElement)statusElement='Status';if(!preloaderRefreshCount)preloaderRefreshCount=0;if(preloaderWaitCount!=_dynamics.preloaderWaitCount)preloaderRefreshCount=0;if(!activeRefreshCount)activeRefreshCount=0;if(activeWaitCount!=Ajax.activeRequestCount)activeWaitCount=0;if(_dynamics.preloaderWaitCount>0){_dynamics.loading=true;setTimeout(function(){if(statusElement)Dynamics.SetStatus(statusElement,'loading images... '+_dynamics.preloaderWaitCount+' remaining',false);if(preloaderRefreshCount>2)_dynamics.preloaderWaitCount=0;Dynamics.CheckDocumentStatus(preloaderRefreshCount+1,_dynamics.preloaderWaitCount,activeRefreshCount +1,Ajax.activeRequestCount,statusElement);},400);}else if(Ajax.activeRequestCount>0){_dynamics.loading=true;setTimeout(function(){if(statusElement)Dynamics.SetStatus(statusElement,'retrieving data... '+Ajax.activeRequestCount+' remaining',false);Dynamics.CheckDocumentStatus(preloaderRefreshCount+1,_dynamics.preloaderWaitCount,activeRefreshCount +1,Ajax.activeRequestCount,statusElement);},400);}else{if(statusElement)Dynamics.SetStatus(statusElement,'done',true);_dynamics.loading=false;}};Dynamics.ChangeSelection=function(element,cssSelector,selectedClassName){Dynamics.RemoveSelection(cssSelector,selectedClassName);if(Dynamics.IsCssMember(element,cssSelector)){Element.addClassName(element,selectedClassName);var effect=new Effect.Opacity(element,{duration:0.5,from:0.8,to:1.0});effect=null;}};Dynamics.RemoveSelection=function(cssSelector,selectedClassName){var nodes=document.getElementsBySelector(cssSelector+'.'+selectedClassName);nodes.each(function(node){Element.removeClassName(node,selectedClassName);});};Dynamics.RestoreDefaultSelection=function(cssDefaultSelector,selectedClassName){var nodes=document.getElementsBySelector(cssDefaultSelector);nodes.each(function(node){Element.addClassName(node,selectedClassName);});};Dynamics.RestoreDefaultDisplay=function(cssGroupSelector,cssDefaultSelector){var nodes=document.getElementsBySelector(cssGroupSelector);nodes.each(function(node){Element.hide(node);});nodes=document.getElementsBySelector(cssDefaultSelector);nodes.each(function(node){Element.show(node);});};Dynamics.Load();
