﻿/*
    ' Comsite Dynamic Tabs - http://www.comsite.org
    ' Copyright ©2008 - All rights reserved world wide.
    ' by Jay Kappel - Comsite.org
    '
    ' No permission is granted to copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software.
    ' Use of this software is limited to a 45 day trial period after which the software must be registered or un-installed.
    ' All source code of this software is the sole property of Comsite.org and may not be modified unless specific permission
    ' has been granted by Comsite.org
    '
    ' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. IN NO EVENT SHALL 
    ' THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
    ' CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
    ' DEALINGS IN THE SOFTWARE.
*/
function csDynamicTabs(moduleId){var instance=this;this.moduleId=moduleId;this.tabsList=new Array();this.activeTab;this.loiterTab;this.autoRotate=false;this.rotateDelay=5000;this.rotatorID=0;this.rotateCounter=0;this.useTransition=false;this.transitionDur=400;this.useRollover=false;this.rolloverDelay=0;this.activatorID=0;this.minDataHeight=0;this.initTabs=function(){if(!instance.moduleId){alert('You must set the ModuleID before you can call initTabs!');return}var elms=document.getElementsByTagName('div');for(var c=0;c<elms.length;c++){var elm=elms[c];if(elm.id){if(elm.id.indexOf('csPageTab:'+instance.moduleId)==0&&elm.className.indexOf('tab')>-1)instance.registerTab(elm)}}if(instance.tabsList.length>0)instance.activateTab(instance.tabsList[0]);if(instance.autoRotate&&instance.tabsList.length>1)instance.rotate()};this.registerTab=function(elm){if(typeof elm=='string')elm=document.getElementById(elm);if(elm){instance.tabsList.push(elm);elm.style.cssText+='-moz-user-select: none;-khtml-user-select: none;user-select: none;';if(instance.useRollover){csDynamicTabs.addEvent(elm,'mouseout',instance.killTimer);csDynamicTabs.addEvent(elm,'mouseover',function(){instance.activateTab(elm)})}csDynamicTabs.addEvent(elm,'click',function(){instance.activateTab(elm,true);instance.pauseRotate(elm)});csDynamicTabs.addEvent(elm,'selectstart',new Function('return false'))}};this.rotate=function(bCancel){if(bCancel==true||instance.autoRotate==false){if(instance.rotatorID!=0)window.clearTimeout(instance.rotatorID);instance.rotatorID=0;return true}var oTab=instance.tabsList[instance.rotateCounter];if(!oTab){instance.rotateCounter=0;oTab=instance.tabsList[instance.rotateCounter]}if(oTab)instance.activateTab(oTab,true);else instance.autoRotate=false;if(instance.rotatorID!=0)window.clearTimeout(instance.rotatorID);instance.rotatorID=window.setTimeout(instance.rotate,instance.rotateDelay);instance.rotateCounter++};this.pauseRotate=function(oTab){if(instance.rotatorID>0){instance.rotate(true);instance.rotatorID=window.setTimeout(instance.rotate,(instance.rotateDelay*3));for(var cnt=0;cnt<instance.tabsList.length;cnt++){if(instance.tabsList[cnt].id==oTab.id)instance.rotateCounter=cnt+1}}};this.activateTab=function(oTab,bForceDisplay){if(instance.activatorID!=0)window.clearTimeout(instance.activatorID);instance.loiterTab=oTab;if((instance.useRollover&&instance.rolloverDelay>0)&&!bForceDisplay)instance.activatorID=window.setTimeout(instance.showTab,instance.rolloverDelay);else instance.showTab()};this.showTab=function(){var activeData,inActiveData,d,bFade=instance.useTransition;var oTab=instance.loiterTab,activeTab=instance.activeTab;if(activeTab==oTab)return;if(activeTab){activeTab.className='tab';activeData=document.getElementById(activeTab.id+'_data');if(activeData&&bFade!=true)activeData.style.display='none'}else{activeData={};activeData.id=''}if(oTab){instance.activeTab=oTab;oTab.className='tabActive';inActiveData=document.getElementById(oTab.id+'_data');if(activeData.id>''){var dataArea=activeData.parentNode,h=parseFloat(activeData.offsetHeight+activeData.offsetTop);if(instance.minDataHeight==0)instance.minDataHeight=dataArea.offsetHeight;if(h>instance.minDataHeight){dataArea.style.minHeight=h+'px';instance.minDataHeight=h}}if(inActiveData&&bFade!=true){inActiveData.style.display='block'}if(inActiveData&&bFade==true){queueOpacity(activeData.id,100,0,instance.transitionDur/2);queueOpacity(inActiveData.id,0,100,instance.transitionDur/2)}}};this.killTimer=function(){if(instance.activatorID!=0){window.clearTimeout(instance.activatorID);instance.activatorID=0;instance.loiterTab=null}}}csDynamicTabs.addEvent=function(obj,evt,func,capture){csDynamicTabs.removeEvent(obj,evt,func,capture);if(obj.attachEvent){obj.attachEvent('on'+evt,func)}else{obj.addEventListener(evt,func,capture)}};csDynamicTabs.removeEvent=function(obj,evt,func,capture){try{if(obj.detachEvent){obj.detachEvent('on'+evt,func)}else{obj.removeEventListener(evt,func,capture)}}catch(e){}};var aryOpacity=new Array();function queueOpacity(id,opacStart,opacEnd,millisec,callback){if(!id)return;var obj={id:id,opacStart:opacStart,opacEnd:opacEnd,millisec:millisec,callback:callback};aryOpacity.push(obj);if(aryOpacity.length==1)setTimeout(queueProcess,20)};function queueProcess(){if(aryOpacity.length==0)return;var obj=aryOpacity.shift();if(obj){if(obj.callback)opacity(obj.id,obj.opacStart,obj.opacEnd,obj.millisec,function(){obj.callback(obj.id)});else opacity(obj.id,obj.opacStart,obj.opacEnd,obj.millisec)}if(aryOpacity.length>0)setTimeout(queueProcess,obj.millisec)};function opacity(id,opacStart,opacEnd,millisec,callback){var speed=Math.round(millisec/100);var timer=0;if(opacStart>opacEnd){for(i=opacStart;i>=opacEnd;i--){setTimeout("changeOpac("+i+",'"+id+"')",(timer*speed));timer++}}else if(opacStart<opacEnd){for(i=opacStart;i<=opacEnd;i++){setTimeout("changeOpac("+i+",'"+id+"')",(timer*speed));timer++}}if(callback)setTimeout(callback,millisec+20)};function shiftOpacity(id,millisec){if(document.getElementById(id).style.opacity==0){opacity(id,0,100,millisec)}else{opacity(id,100,0,millisec)}};function changeOpac(opacity,id){if(!id)return;var object=document.getElementById(id);if(!object)return;var css=object.style;css.opacity=(opacity/100);css.MozOpacity=(opacity/100);css.KhtmlOpacity=(opacity/100);css.filter="alpha(opacity="+opacity+")";if(css.opacity==0&&css.display!='none')css.display='none';else if(css.display!='block')css.display='block';if(css.display!='none'&&!css.width)css.width=object.offsetWidth};