var useEffects = true;
		var panelsHidden = true;
		var initialView = true;
		var initialViewTimer_hide = 0;
		var initialViewTimer_show = 0;
		var animation_time = .3;
		
		function tabpanel_mouseover_handler(elem, event) {
			var tab = $(elem);
			var img = tab.firstDescendant();
			
			if(tab.className!="tab_on") { img.src=imgPath+img.id+"_over.jpg"; }
			return true;
		}

		function tabpanel_mouseout_handler(elem, event) {
			var tab = $(elem);
			var img = tab.firstDescendant();
			
			if(tab.className!="tab_on") { img.src=imgPath+img.id+"_off.jpg"; }
			return true;
		}

		function tabpanel_click_handler(elem, event) {
			//not in use - to use remove the underscore
		}
				
		function tab_on_handler(elem) {
			var tab = $(elem);
			var img = tab.firstDescendant();
			img.src=imgPath+img.id+"_on.jpg";
			
			elem.panel.style.zIndex = 1;
			$('panels').style.zIndex = 10;
			
			if (useEffects) {
			    if (initialView) { 
			        new Effect.Appear(elem.panel.id, {delay: 1.5, duration: animation_time, queue: 'parallel'}); 
			    } else { 
			        new Effect.Appear(elem.panel.id, {duration: animation_time, queue: 'parallel'});
			    }
			}
			return useEffects;
		}
		
		function tab_off_handler(elem) {
			var tab = $(elem);
			var img = tab.firstDescendant();
			img.src=imgPath+img.id+"_off.jpg";
			
			elem.panel.style.zIndex = 0;
			
			if (useEffects) {
			    if (panelsHidden) {
			        new Effect.Fade(elem.panel.id, {duration: animation_time, queue: 'parallel', afterFinish: function(){ $('panels').style.zIndex = 0; }});
			    } else {
			        new Effect.Fade(elem.panel.id, {delay: animation_time, duration:0, queue: 'parallel', afterFinish: function(){  }});
			    }
			}
			return useEffects;
		}		
		
		var BehaviorTabPanel = GenericBehavior.create('BehaviorTabPanel', {
			onAttach: function(event, elem, args) {
				this.tellSuper('onAttach', event, elem, args);
				this.args = args;
				
				// set defaults
				this.args.tab_left = this.args.tab_left || 'tab_left';
				this.args.tab_right = this.args.tab_right || 'tab_right';
				this.args.tab_on = this.args.tab_on || 'tab_on';

				TabPanels = elem.immediateDescendants();
				// sanity check: there should only be two, one tabs and one panels!
				if (TabPanels.length != 2) {alert('Tab Panels setup incorrectly.')};
				
				var tabGroup = TabPanels[0];
				var panelGroup = TabPanels[1];
				
				// all tabs
				var tabs = tabGroup.immediateDescendants();
				this.tabs = tabs;
				this.tabon = tabs[0]; // default 0 to on
				
				// all panels
				var panels = panelGroup.immediateDescendants();
				this.panels = panels;

				//sanity check:
				if (tabs.length != panels.length) {alert('Tab Panels setup incorrectly.')};
				
				// set up tabs
				this.tabs.each(function(t, i) {
					t.container = elem;
					t.panel = panels[i];
					t.onclick = function(event) {    					
						this.container.onDraw(this.id);
						try {
							tabpanel_click_handler(this, event);
						} catch (e) {}
					};

					t.onmouseover = function(event) {
						try {
						    clearTimeout(initialViewTimer_hide);
    					    clearTimeout(initialViewTimer_show);
							tabpanel_mouseover_handler(this, event);
						} catch (e) {}
					};
					
					t.onmouseout = function(event) {
    					try {
    					    clearTimeout(initialViewTimer_hide);
    					    clearTimeout(initialViewTimer_show);
    						tabpanel_mouseout_handler(this, event);
    					} catch (e) {}
					}; 
					
				});
				
				return true;
			},
			onDraw: function(name) {
				var tab = $(name) || this.tabs[0];
				var container = this;
				var lasttab = container.tabon;
				var tab_class = container.args.tab_left;
									
				this.tabs.each(function(t, i) {
					if (t.id==tab.id ) {
    					tab_class = container.args.tab_right;
				        if (tab.id!=lasttab.id) { 
    						t.className = container.args.tab_on;
    						container.tabon = t;
    					} else {
    						t.className = tab_class;
    						container.tabon = container.tabs[0];
                        }
					} else {
						t.className = tab_class;
					}
				});

				if (tab.id!=lasttab.id) { // switching between visible tabs
                    panelsHidden = false;
					try {
						r = tab_on_handler(tab);
						if (!r) { tab.panel.show() }
					} catch (e) { tab.panel.show() }
				} else { // switch to hidden tab
                    panelsHidden = true;
					try {
						r = tab_on_handler(this.tabs[0]);
						if (!r) { tab.panel.show() }
					} catch (e) { tab.panel.show() }
                }
                                
				try {
					r = tab_off_handler(lasttab);
					if (!r) { lasttab.panel.hide() }
				} catch (e) { lasttab.panel.hide() }
			}
		});

		whenel('tabs_panels_container', function (elem) {
			elem.addBehavior(BehaviorTabPanel, {
			}).onDraw('hideall');
		});
		
		Event.observe( window, 'load', 
		    function() {
		        setTimeout(
		            function() {
		                if (initialView) {
            	            initialViewTimer_show = setTimeout("$('tab_landing').onclick()", 1);
            	            initialViewTimer_hide = setTimeout("$('tab_landing').onclick()", 6000);
            			    initialView = false;
            	        }   
		            }, 200		        
		        );
		    }
		);