/* *******************************************************
J  a  v  a  c  a  t  z
Filename:   common.js
Purpose:    This file is created to hold common functions
            that are useful to other projects.
            Please do not put other codes in this file.
Modified by: KY 2010.04.09
******************************************************* */

/* kyMenu 2.1.1.2010.05.25 */
var kyMenu2 = {
	delay: 0,
	navDisableLayerShowDuration: 0.3,
	navDisableLayerHideDuration: 0,
	navDisableLayerOpacity: 0.65,
	navWidth: 255,
	boolHideCurrent: false,
	boolOpenAllSubs: true,
	noCalculateMaxWidth: true,
	timeout: new Array(),
	init: function() {
		$$('.kyMenu2').each( function(menu) {
			var originalMenu = $(menu);
			var newMenu = $(menu).clone(true);
			$(menu).replace(newMenu);
			$('page').insert(new Element('div').addClassName('navDiv').insert(originalMenu).setStyle({'position':'absolute'}));
			$(originalMenu).up('.navDiv').setStyle({'top':$(newMenu).up('.navDiv').cumulativeOffset().top + 'px'});
			$(newMenu).setStyle({'visibility':'hidden'});
			menu = originalMenu;
			if(!$('navDisableLayer')) {
				var width = $$('body')[0].getWidth();
				var height = $$('body')[0].getHeight();
				if(width < document.viewport.getWidth()) width = document.viewport.getWidth();
				if(height < document.viewport.getHeight()) height = document.viewport.getHeight();
				var navDisableLayer = new Element('div', { 'id':'navDisableLayer' }).addClassName('navDisableLayer').setStyle({ 'width':width+'px', 'height':height+'px' }).setOpacity(0.65).hide();
				$$('body')[0].insert({'top':navDisableLayer});
			}
			var navDisableLayer = $('navDisableLayer');
			$(menu).observe('mouseenter', function(e) { $$('body')[0].addClassName('onNav'); new Effect.Appear($('navDisableLayer'), { 'duration':kyMenu2.navDisableLayerShowDuration, 'to':kyMenu2.navDisableLayerOpacity }); });
			$(menu).observe('mouseleave', function(e) { $$('body')[0].removeClassName('onNav'); new Effect.Fade($('navDisableLayer'), { 'duration':kyMenu2.navDisableLayerHideDuration }); });
			
			$(menu).identify();
			var uls = $(menu).select('ul').concat($(menu).select('.ul'));
			$(uls).each( function(ul) {
				$(ul).hide();
				if($(ul).up(2).hasClassName('kyMenu2')) $(ul).setStyle({'width':kyMenu2.navWidth+'px'});
				if($(ul).firstDescendant().hasClassName('navColumn')) {
					var width = $(ul).childElements().length * kyMenu2.navWidth;
					$(ul).setStyle({'width':width + 'px'});
				}
			} );
			if(kyMenu2.boolOpenAllSubs) $(menu).select('.ul .ul').each(function(ul){$(ul).show();});
			
			if(Prototype.Browser.IE && BrowserDetect.version <= 6) {
				$$('.ul').each( function(ul) {
					var iframeCover = new Element('iframe').addClassName('cover').setStyle({
						'position':'absolute',
						'margin':0,
						'padding':0,
						'width':0,
						'height':0
					}).setOpacity(0);
					$(ul).insert({'top':iframeCover});
				} );
			}
			var lis = $(menu).select('li').concat($(menu).select('.li'));
			$(lis).each( function(li) {
				if($(li).down('.ul')) {
					$(li).down('a').addClassName('moreNav');
					
					// MouseEnter
					$(li).observe('mouseenter', function(e) {
						if(kyMenu2.boolHideCurrent && $(li).down('a').hasClassName('current')) {
							if($(li).down('a').readAttribute('href') == 'javascript:void(0);') {
								$(li).down('a').removeClassName('pointer');
							} else if(!$(li).down('.li a') || $(li).down('a').readAttribute('href') == $(li).down('.li a').readAttribute('href')) {
								$(li).down('a').writeAttribute('href','javascript:void(0);');
								$(li).down('a').removeClassName('pointer');
							} else {
								$(li).down('a').addClassName('pointer');
							}
							return;
						}
						var thisNode = $(this);
						$(this).up('.kyMenu2').select('.ul').reverse().each( function(subUL) {
							var li = $(subUL).up('.li');
							if(!li) li = $(subUL).up('li');
							if(kyMenu2.timeout[$(li).identify()]) {
								window.clearTimeout(kyMenu2.timeout[$(li).identify()]);
								kyMenu2.timeout[$(li).identify()] = null;
								if(!kyMenu2.boolOpenAllSubs || $(subUL).up().tagName.toLowerCase()=='li') {
									$(subUL).hide();
								}
							}
						} );
						if($(this).down('.ul') && $(this).down('.ul').firstDescendant().hasClassName('navColumn')) {
							var width = $(this).down('.ul').childElements().length * kyMenu2.navWidth;
							if($(this).up().hasClassName('kyMenu2') && $(this).cumulativeOffset().left + width > document.viewport.getWidth()) {
								$(this).down('.ul').setStyle({'right':0});
							} else {
								$(this).down('.ul').setStyle({'right':'auto'});
							}
						}
						
						$(this).down('a').addClassName('active');
						$(this).down('.ul').show();
						if(!kyMenu2.noCalculateMaxWidth) {
							var maxwidth = 0;
							var subLis = $(this).down('.ul').childElements();
							for(var i=0; i < subLis.length; i++) {
								if(subLis[i].getWidth() > maxwidth) {
									maxwidth = subLis[i].getWidth();
								}
							}
							for(var i=0; i < subLis.length; i++) {
								subLis[i].setStyle({'width':maxwidth+'px'});
							}
							if($(this).up() != $(menu) && !kyMenu2.boolOpenAllSubs) $(this).down('.ul').setStyle({'marginLeft':$(this).getWidth()+'px'});
						}
						if(Prototype.Browser.IE && BrowserDetect.version <= 6) {
							// $(this).down('.ul iframe.cover').setStyle({'height':$(this).down('.ul').getHeight()+'px'});
							$(this).down('.ul iframe.cover').setStyle({'position':'absolute','width':$(this).down('.ul').getWidth()+'px','height':$(this).down('.ul').getHeight()+'px'});
						}
					});
					// MouseLeave
					$(li).observe('mouseleave', function(e) {
						$(this).down('a').removeClassName('active');
						if(!kyMenu2.boolOpenAllSubs || $(li).tagName.toLowerCase()=='li') {
							// $(this).down('.ul').hide();
							clearTimeout(kyMenu2.timeout[$(this).identify()]);
							kyMenu2.timeout[$(this).identify()] = window.setTimeout("$('"+$(this).identify()+"').down('.ul').hide();",kyMenu2.delay);
						}
					});
				}
			} );
		} );
	}
};

/* kyMenu 2.5.2.2011.01.13     */
/* boolDisableLayer (2.2)      */
/* boolAlwaysShowCurrent (2.3) */
/* menuEffect (2.4)            */
/* .keepRight (2.5)      */
var kyMenu = {
	delay: 0,	// ms
	navDisableLayerShowDuration: 0.3,	// sec
	navDisableLayerHideDuration: 0,		// sec
	navDisableLayerOpacity: 0.5,
	navWidth: 255,
	boolDisableLayer: false,
	boolHideCurrent: false,
	boolAlwaysShowCurrent: false,
	boolOpenAllSubs: false,
	noCalculateMaxWidth: true,
	menuEffect: 'blind',
	menuEffectDuration: 0.5,
	timeout: new Array(),
	init: function() {
		$$('.kyMenu').reverse().each( function(menu) {
			var originalMenu = $(menu);
			var newMenu = $(menu).clone(true);
			$(menu).replace(newMenu);
			var insertTo = $('page').down('.pageInner');
			if($('pagewrap')) insertTo = $('pagewrap');
			$(insertTo).insert(new Element('div').addClassName($(newMenu).up('.navDiv').readAttribute('class')).insert(originalMenu).setStyle({'position':'absolute', 'width':$(newMenu).up('.navDiv').measure('width')+'px'}));
			$(originalMenu).up('.navDiv').setStyle({'top':$(newMenu).up('.navDiv').cumulativeOffset().top - $(insertTo).cumulativeOffset().top + 'px'});
			$(newMenu).setStyle({'visibility':'hidden'});
			menu = originalMenu;
			if(kyMenu.boolDisableLayer && !$('navDisableLayer')) {
				var width = $$('body')[0].getWidth();
				var height = $$('body')[0].getHeight();
				if(width < document.viewport.getWidth()) width = document.viewport.getWidth();
				if(height < document.viewport.getHeight()) height = document.viewport.getHeight();
				var navDisableLayer = new Element('div', { 'id':'navDisableLayer' }).addClassName('navDisableLayer').setStyle({ 'width':width+'px', 'height':height+'px' }).setOpacity(0.65).hide();
				$$('body')[0].insert({'top':navDisableLayer});
			}
			if(kyMenu.boolDisableLayer) var navDisableLayer = $('navDisableLayer');
			$(menu).observe('mouseenter', function(e) { $$('body')[0].addClassName('onNav'); if(kyMenu.boolDisableLayer) $('navDisableLayer').appear({ 'duration':kyMenu.navDisableLayerShowDuration, 'to':kyMenu.navDisableLayerOpacity }); });
			$(menu).observe('mouseleave', function(e) { $$('body')[0].removeClassName('onNav'); if(kyMenu.boolDisableLayer) $('navDisableLayer').fade({ 'duration':kyMenu.navDisableLayerHideDuration }); });
			$(menu).observe('click', function(e) { $$('body')[0].removeClassName('onNav'); if(kyMenu.boolDisableLayer) $('navDisableLayer').fade({ 'duration':kyMenu.navDisableLayerHideDuration }); });
			
			$(menu).identify();
			var uls = $(menu).select('ul').concat($(menu).select('.ul'));
			$(uls).each( function(ul) {
				$(ul).hide();
				if($(ul).up(2).hasClassName('kyMenu')) $(ul).setStyle({'width':kyMenu.navWidth+'px'});
				if($(ul).firstDescendant().hasClassName('navColumn')) {
					var width = $(ul).childElements().length * kyMenu.navWidth;
					$(ul).setStyle({'width':width + 'px'});
				}
			} );
			if(kyMenu.boolOpenAllSubs) $(menu).select('.ul .ul').each(function(ul){$(ul).show();});
			
			if(Prototype.Browser.IE && BrowserDetect.version <= 6) {
				$$('.ul').each( function(ul) {
					var iframeCover = new Element('iframe').addClassName('cover').setStyle({
						'position':'absolute',
						'margin':0,
						'padding':0,
						'width':0,
						'height':0
					}).setOpacity(0);
					$(ul).insert({'top':iframeCover});
				} );
			}
			var lis = $(menu).select('li').concat($(menu).select('.li'));
			$(lis).each( function(li) {
				if($(li).down('.ul')) {
					$(li).down('a').addClassName('moreNav');
					
					// MouseEnter
					$(li).observe('mouseenter', function(e) {
						if(kyMenu.boolAlwaysShowCurrent) $(li).up('ul').down('.current').up('li').removeClassName('hasSub');
						if(kyMenu.boolHideCurrent && !kyMenu.boolAlwaysShowCurrent && $(li).down('a').hasClassName('current')) {
							if($(li).down('a').readAttribute('href') == 'javascript:void(0);') {
								$(li).down('a').removeClassName('pointer');
							} else if(!$(li).down('.li a') || $(li).down('a').readAttribute('href') == $(li).down('.li a').readAttribute('href')) {
								$(li).down('a').writeAttribute('href','javascript:void(0);');
								$(li).down('a').removeClassName('pointer');
							} else {
								$(li).down('a').addClassName('pointer');
							}
							return;
						}
						var thisNode = e.findElement('li'); // $(this);
						$(thisNode).up('.kyMenu').select('.ul').reverse().each( function(subUL) {
							var li = $(subUL).up('.li');
							if(!li) li = $(subUL).up('li');
							if(kyMenu.boolAlwaysShowCurrent || kyMenu.timeout[$(li).identify()]) {
								window.clearTimeout(kyMenu.timeout[$(li).identify()]);
								// kyMenu.timeout[$(li).identify()] = null;
								if(!kyMenu.boolOpenAllSubs || $(subUL).up().tagName.toLowerCase()=='li') {
									$(subUL).setStyle({'height':''}).hide();
								}
							}
						} );
						if($(thisNode).down('.ul') && $(thisNode).down('.ul').firstDescendant().hasClassName('navColumn')) {
							var width = $(thisNode).down('.ul').childElements().length * kyMenu.navWidth;
							if($(thisNode).up().hasClassName('kyMenu') && $(thisNode).positionedOffset().left + width > document.viewport.getWidth()) {
								$(thisNode).down('.ul').setStyle({'right':0});
							} else {
								$(thisNode).down('.ul').setStyle({'right':''});
							}
						} else {
							$(thisNode).down('.ul').show();
							$(thisNode).down('.ul').setStyle({'left':0});
							var width = $(thisNode).down('.ul').measure('border-box-width');
							if($(thisNode).up().hasClassName('kyMenu') && $(thisNode).positionedOffset().left + width + $(thisNode).up('.kyMenu').positionedOffset().left > $('page').getWidth()) {
								$(thisNode).down('.ul').setStyle({'right':0});
							} else {
								$(thisNode).down('.ul').setStyle({'right':''});
							}
							$(thisNode).down('.ul').setStyle({'left':''}).hide();
						}
						
						$(thisNode).down('a').addClassName('active');
						if($(thisNode).down('.ul')) {
							if(kyMenu.menuEffect == 'appear') {
								$(thisNode).down('.ul').appear({duration:kyMenu.menuEffectDuration, afterUpdate: function(e) { if($(e.element).up('.kyMenu').hasClassName('keepRight')) { var width=$(e.element).measure('border-box-width'); var left=$(e.element).up('li').measure('left'); var total=$(e.element).up('.navDiv').measure('border-box-width'); if(left+width>total) $(e.element).setStyle({left:total-width-left+'px'}); } }, afterFinish: function(e) { if($(e.element).up('.kyMenu').hasClassName('keepRight')) { var width=$(e.element).measure('border-box-width'); var left=$(e.element).up('li').measure('left'); var total=$(e.element).up('.navDiv').measure('border-box-width'); if(left+width>total) $(e.element).setStyle({left:total-width-left+'px'}); } $(e.element).setStyle({height:''}); if($(e.element).down('iframe.cover')) $(e.element).down('iframe.cover').setStyle({width:$(e.element).getWidth()+'px',height:$(e.element).getHeight()+'px'}); if(!$(thisNode).down('a').hasClassName('active')) $(e.element).hide(); }});
							} else if(kyMenu.menuEffect == 'blind') {
								$(thisNode).down('.ul').blindDown({duration:kyMenu.menuEffectDuration, afterUpdate: function(e) { if($(e.element).up('.kyMenu').hasClassName('keepRight')) { var width=$(e.element).measure('border-box-width'); var left=$(e.element).up('li').measure('left'); var total=$(e.element).up('.navDiv').measure('border-box-width'); if(left+width>total) $(e.element).setStyle({left:total-width-left+'px'}); } }, afterFinish: function(e) { if($(e.element).up('.kyMenu').hasClassName('keepRight')) { var width=$(e.element).measure('border-box-width'); var left=$(e.element).up('li').measure('left'); var total=$(e.element).up('.navDiv').measure('border-box-width'); if(left+width>total) $(e.element).setStyle({left:total-width-left+'px'}); } $(e.element).setStyle({height:''}); if($(e.element).down('iframe.cover')) $(e.element).down('iframe.cover').setStyle({width:$(e.element).getWidth()+'px',height:$(e.element).getHeight()+'px'}); if(!$(thisNode).down('a').hasClassName('active')) $(e.element).hide(); }});
							} else if(kyMenu.menuEffect == 'slide') {
								$(thisNode).down('.ul').slideDown({duration:kyMenu.menuEffectDuration, afterUpdate: function(e) { if($(e.element).up('.kyMenu').hasClassName('keepRight')) { var width=$(e.element).measure('border-box-width'); var left=$(e.element).up('li').measure('left'); var total=$(e.element).up('.navDiv').measure('border-box-width'); if(left+width>total) $(e.element).setStyle({left:total-width-left+'px'}); } }, afterFinish: function(e) { if($(e.element).up('.kyMenu').hasClassName('keepRight')) { var width=$(e.element).measure('border-box-width'); var left=$(e.element).up('li').measure('left'); var total=$(e.element).up('.navDiv').measure('border-box-width'); if(left+width>total) $(e.element).setStyle({left:total-width-left+'px'}); } $(e.element).setStyle({height:''}); if($(e.element).down('iframe.cover')) $(e.element).down('iframe.cover').setStyle({width:$(e.element).getWidth()+'px',height:$(e.element).getHeight()+'px'}); if(!$(thisNode).down('a').hasClassName('active')) $(e.element).hide(); }});
							} else {
								$(thisNode).down('.ul').show();
							}
							$(thisNode).addClassName('hasSub');
						}
						if(!kyMenu.noCalculateMaxWidth) {
							var maxwidth = 0;
							var subLis = $(thisNode).down('.ul').childElements();
							for(var i=0; i < subLis.length; i++) {
								if(subLis[i].getWidth() > maxwidth) {
									maxwidth = subLis[i].getWidth();
								}
							}
							for(var i=0; i < subLis.length; i++) {
								subLis[i].setStyle({'width':maxwidth+'px'});
							}
							if($(thisNode).up() != $(menu) && !kyMenu.boolOpenAllSubs) $(thisNode).down('.ul').setStyle({'marginLeft':$(thisNode).getWidth()+'px'});
						}
						if(Prototype.Browser.IE && BrowserDetect.version <= 6) {
							// $(this).down('.ul iframe.cover').setStyle({'height':$(this).down('.ul').getHeight()+'px'});
							$(thisNode).down('.ul iframe.cover').setStyle({'position':'absolute','width':$(thisNode).down('.ul').getWidth()+'px','height':$(this).down('.ul').getHeight()+'px'});
						}
					});
					// MouseLeave
					$(li).observe('mouseleave', function(e) {
						var thisNode = e.findElement('li');
						$(thisNode).down('a').removeClassName('active');
						$(thisNode).removeClassName('hasSub');
						if(!kyMenu.boolOpenAllSubs) {	// || $(li).tagName.toLowerCase()=='li'
							// $(this).down('.ul').hide();
							clearTimeout(kyMenu.timeout[$(thisNode).identify()]);
							kyMenu.timeout[$(thisNode).identify()] = window.setTimeout("kyMenu.hideMenu('"+$(thisNode).identify()+"');",kyMenu.delay);
						}
					});
					// Click
					$(li).observe('click', function(e) {
						var thisNode = e.findElement('li');
						$(thisNode).down('a').removeClassName('active');
						if(!kyMenu.boolOpenAllSubs || $(li).tagName.toLowerCase()=='li') {
							// $(this).down('.ul').hide();
							clearTimeout(kyMenu.timeout[$(thisNode).identify()]);
							kyMenu.timeout[$(thisNode).identify()] = window.setTimeout("$('"+$(thisNode).identify()+"').down('.ul').hide();",kyMenu.delay);
						}
					});
				}
			} );
		} );
		if(kyMenu.boolAlwaysShowCurrent) {
			$$('.navDiv').each(function(navDiv) {
				if($(navDiv).down('.current') && $(navDiv).down('.current').up('li').down('div.ul')) {
					$(navDiv).down('.current').up('li').down('div.ul').show();
					$(navDiv).down('.current').up('li').addClassName('hasSub');
				}
			});
		}
	},
	hideMenu: function(id) {
		if(kyMenu.boolAlwaysShowCurrent) {
			$$('.navDiv').each(function(navDiv) {
				if($(navDiv).down('.current')) {
					$(navDiv).down('.current').up('li').down('div.ul').show();
					$(navDiv).down('.current').up('li').addClassName('hasSub');
				}
			});
		}
		$(id).down('.ul').setStyle({height:''}).hide();
	}
};

/* kyMenu 2010.12.01 */
var kyMenu3 = {
	showCurrent: false,
	statusEffect: false,
	effectDuration: 0.5,
	effectDelay: 0.1,
	init: function(action, mouseEvent) {
		var showCurrent = kyMenu3.showCurrent;
		if(action) action = action.toLowerCase();
		if(mouseEvent) mouseEvent = mouseEvent.toLowerCase();
		$$('.kyMenu3 ul ul').each( function(node) {
			$(node).hide();
		} );
		$$('.kyMenu3 ul').each( function(node) {
			$(node).hide();
		} );
		$$('.kyMenu3').each( function(menu) {
			if(!kyMenu3.showCurrent) {
				if($(menu).hasClassName('showCurrent')) showCurrent = true;
				else showCurrent = false;
			}
			if($(menu).hasClassName('2rows')) {
				$(menu).select('li .topSifr').each( function(node) {
					var wordArr = $(node).innerHTML.split(' ');
					var text = '';
					for(var i=0; i<wordArr.length; i++) {
						if(i == wordArr.length - 1) {
							if(i == 0) text += '&nbsp;';
							text += '<br />' + wordArr[i];
						} else {
							text += wordArr[i] + ' ';
						}
					}
					$(node).update(text);
				} );
			}
			if($(menu).hasClassName('center')) {
				var padding = parseInt(($(menu).up().getWidth() - $(menu).getWidth()) / 2) + 'px';
				$(menu).up().setStyle({'paddingLeft': padding,'paddingRight': padding});
			}
		} );
		$$('.kyMenu3 li').each( function(node) {
			var kyMenu3UL = $(node).up('.kyMenu3');
			if($(kyMenu3UL).hasClassName('fade') || $(kyMenu3UL).hasClassName('appear')) action = 'fade';
			else if($(kyMenu3UL).hasClassName('blind')) action = 'blind';
			else if($(kyMenu3UL).hasClassName('slide')) action = 'slide';
			if($(kyMenu3UL).hasClassName('click')) {
				mouseEvent = 'click';
				if($(node).down('ul')) $(node).addClassName('close');
			} else if($(kyMenu3UL).hasClassName('hover')) {
				mouseEvent = 'hover';
				if($(node).down('ul')) $(node).down('a').addClassName('moreNav');
			}
			if(showCurrent && ($(node).hasClassName('current') || $(node).down('a').hasClassName('current'))) {
				$(node).addClassName('active');
				$(node).down('a').addClassName('active');
				if($(node).down('ul')) {
					if(mouseEvent=='click') {
						$(node).addClassName('open');
					}
					$(node).down('ul').appear({ duration: 0 });
				}
			}
			if(!mouseEvent || mouseEvent == 'hover') {
				if(!(showCurrent && $(node).down('a').hasClassName('current'))) {
					$(node).observe('mouseenter', menuover = function(e) {
						$(node).addClassName('active');
						$(node).down('a').addClassName('active');
						if($(node).down('ul') && !$(node).down('ul').visible()) {
							$(node).removeClassName('close').addClassName('open');
							if(!action || action == 'fade' || action == 'appear') {
								$(node).down('ul').appear({ duration: kyMenu3.effectDuration, delay: kyMenu3.effectDelay });
							} else if(action == 'blind') {
								$(node).setStyle({'visibility':'visible'});
								$(node).down('ul').blindDown({ duration: kyMenu3.effectDuration, delay: kyMenu3.effectDelay, transition: Effect.Transitions.sinoidal, afterFinish: function() { if(!$(node).hasClassName('active')) { $(node).down('ul').hide(); $(node).addClassName('close').removeClassName('open'); } $(node).down('ul').setStyle({'height':'auto'}); } });
							} else if(action == 'slide') {
								$(node).setStyle({'visibility':'visible'});
								$(node).down('ul').blindDown({ duration: kyMenu3.effectDuration, delay: kyMenu3.effectDelay, transition: Effect.Transitions.sinoidal, afterFinish: function() { if(!$(node).hasClassName('active')) { $(node).down('ul').hide(); $(node).addClassName('close').removeClassName('open'); } $(node).down('ul').setStyle({'height':'auto'}); } });
							}
						}
					} );
					$(node).observe('mouseleave', menuleave = function(e) {
						$(node).removeClassName('active');
						$(node).down('a').removeClassName('active');
						if($(node).down('ul') && !$(node).down('ul').hasClassName('currentUl')) {
							$(node).removeClassName('open').addClassName('close');
							if(!action || action == 'fade' || action == 'appear') {
								$(node).down('ul').fade({ duration: kyMenu3.effectDuration });
							} else if(action == 'blind') {
								$(node).down('ul').blindUp({ duration: kyMenu3.effectDuration, afterFinish: function() { if($(node).hasClassName('active')) { $(node).down('ul').show(); $(node).addClassName('open').removeClassName('close'); } $(node).down('ul').setStyle({'height':'auto'}); } });
							} else if(action == 'slide') {
								$(node).down('ul').blindUp({ duration: kyMenu3.effectDuration, afterFinish: function() { if($(node).hasClassName('active')) { $(node).down('ul').show(); $(node).addClassName('open').removeClassName('close'); } $(node).down('ul').setStyle({'height':'auto'}); } });
							}
						}
					} );
				}
			} else if(mouseEvent == 'click') {
				if($(node).down('ul')) {
					$(node).down('a').href = 'javascript:void(0);';
					$(node).down('a').title = 'Click to toggle subpages';
					if(!$(node).hasClassName('current')) $(node).addClassName('close');
					else $(node).addClassName('open');
				}
				$(node).down('a').observe('click', menuclick = function(e) {
					if(!kyMenu3.statusEffect) {
						kyMenu3.statusEffect = true;
						if(!$(node).hasClassName('active')) {
							$(node).addClassName('active');
							$(node).down('a').addClassName('active');
							if($(node).down('ul')) {
								$(node).removeClassName('close');
								$(node).addClassName('open');
								if(!action || action == 'fade' || action == 'appear') {
									$(node).down('ul').appear({ duration: kyMenu3.effectDuration, delay: kyMenu3.effectDelay, afterFinish: function() { kyMenu3.statusEffect = false; } });
								} else if(action == 'blind') {
									$(node).down('ul').blindDown({ duration: kyMenu3.effectDuration, delay: kyMenu3.effectDelay, afterFinish: function() { if(!$(node).hasClassName('active')) { $(node).down('ul').hide(); $(node).addClassName('close').removeClassName('open'); } $(node).down('ul').setStyle({'height':'auto'}); kyMenu3.statusEffect = false; } });
								} else if(action == 'slide') {
									$(node).down('ul').blindDown({ duration: kyMenu3.effectDuration, delay: kyMenu3.effectDelay, afterFinish: function() { if(!$(node).hasClassName('active')) { $(node).down('ul').hide(); $(node).addClassName('close').removeClassName('open'); } $(node).down('ul').setStyle({'height':'auto'}); kyMenu3.statusEffect = false; } });
								}
							}
						} else {
							$(node).removeClassName('active');
							$(node).down('a').removeClassName('active');
							if($(node).down('ul')) {
								$(node).removeClassName('open');
								$(node).addClassName('close');
								if(!action || action == 'fade' || action == 'appear') {
									$(node).down('ul').fade({ duration: kyMenu3.effectDuration, afterFinish: function() { kyMenu3.statusEffect = false; } });
								} else if(action == 'blind') {
									$(node).down('ul').blindUp({ duration: kyMenu3.effectDuration, afterFinish: function() { if($(node).hasClassName('active')) { $(node).down('ul').show(); $(node).addClassName('open').removeClassName('close'); } $(node).down('ul').setStyle({'height':'auto'}); kyMenu3.statusEffect = false; } });
								} else if(action == 'slide') {
									$(node).down('ul').blindUp({ duration: kyMenu3.effectDuration, afterFinish: function() { if($(node).hasClassName('active')) { $(node).down('ul').show(); $(node).addClassName('open').removeClassName('close'); } $(node).down('ul').setStyle({'height':'auto'}); kyMenu3.statusEffect = false; } });
								}
							}
						}
					}
				} );
			}
		} );
		if(showCurrent) {
			$$('.kyMenu3 .current').each( function(node) {
				$(node).up('ul').show();
				$(node).up('li').addClassName('open').removeClassName('close');
			} );
		} else {
			$$('.kyMenu3 .current').each( function(node) {
				if(!$(node).up('ul').hasClassName('kyMenu3')) {
					$(node).up('ul').hide();
				}
			} );
		}
	}
};

/* getSiteDomain */
function getSiteDomain(url) {
	var siteDomain = url.toString().substring(url.toString().indexOf('://'));
	if(siteDomain.length == url.length) return null;
	else {
		siteDomain = siteDomain.substring(3, siteDomain.length);
		siteDomain = siteDomain.substring(0, (siteDomain.indexOf('/')!=-1)?(siteDomain.indexOf('/')):(siteDomain.length));
		siteDomain = siteDomain.substring(0, (siteDomain.indexOf(':')!=-1)?(siteDomain.indexOf(':')):(siteDomain.length));
		var tempDomain = siteDomain.substring(0, siteDomain.lastIndexOf('.'));
		tempDomain = tempDomain.substring(tempDomain.lastIndexOf('.')+1);
		siteDomain = tempDomain + siteDomain.substring(siteDomain.lastIndexOf('.'));
		return siteDomain;
	}
}

/* Get URL Parameter v1.1.20110210 */
function getParameter(pname) {		// get value of an ? parameter in url
	var url = window.location.href;
	var paramsStart = url.indexOf('?');
	if(paramsStart != -1) {
		var paramString = url.substring(paramsStart + 1);
		if(paramString.indexOf('#') != -1) paramString = paramString.substring(0, paramString.indexOf('#'));
		params = paramString.split('&');
		for(var i = 0; i < params.length; i++) {
			var param = params[i];
			if(param.indexOf('=') != -1) {
				if(param.substring(0, param.indexOf('=')).toLowerCase() == pname.toLowerCase()) {
					return param.substr(param.indexOf('=')+1);
				}
			} else if(param == pname) {
				return null;
			}
		}
	}
	return undefined;
}


/* Set, Retrieve, Delete Cookies */
function setCookie(name, value, expires) { 
	var expDate = new Date(expires);
	document.cookie = name + "=" + escape(value) + "; path=/" + ((expires == null) ? "" : "; expires=" + expDate.toGMTString());
}
function getCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length,c.length));
	}
	return null;
}
function delCookie(name) {
	document.cookie = name + "=; expires=Thu, 01-Jan-70 00:00:01 GMT" + "; path=/";
}

/* Print Page */
function printPage() {
	var this_url = document.location.href;
	if(this_url.lastIndexOf('?') == -1) {	// there is no ? parameters
		this_url = this_url + "?screenmode=print";
	} else {
		this_url = this_url + "&screenmode=print";
	}
	var day = new Date();
	var id = day.getTime();
	eval("page" + id + " = window.open(this_url, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=1,resizable=1,width=640,height=480'); page" + id + ".focus();");
}
function printPageWithURL(ExtraURL) {
	var day = new Date();
	var id = day.getTime();
	eval("page" + id + " = window.open(ExtraURL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=1,resizable=1,width=640,height=480'); page" + id + ".focus();");
}
function printPage2(){
	print();
}


/* Browser Detection */
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

/* Fix PNG in MSIE, used in bodyOnLoad in needed */
function fixPNG() {
	// var arVersion = navigator.appVersion.split("MSIE");
	// var version = parseFloat(arVersion[1]);

	// if ((version >= 5.5) && (version < 7)) {
	if( BrowserDetect.browser == "Explorer" && BrowserDetect.version >= 5.5 && BrowserDetect.version < 7 && BrowserDetect.OS == "Windows" ) {
	   for(var i=0; i<document.images.length; i++) {
		  var img = document.images[i];
		  var imgName = img.src.toUpperCase();
		  if (imgName.substring(imgName.length-3, imgName.length) == "PNG") {
			 var imgID = (img.id) ? "id='" + img.id + "' " : "";
			 var imgClass = (img.className) ? "class='" + img.className + " fixPNG' " : "class='fixPNG'";
			 var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' ";
			 var imgStyle = "display:inline-block;" + img.style.cssText ;
			 if (img.align == "left") imgStyle = "float:left;" + imgStyle;
			 if (img.align == "right") imgStyle = "float:right;" + imgStyle;
			 if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle;
			 var strNewHTML = "<span " + imgID + imgClass + imgTitle
			 + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle // + ";"
			 + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
			 + "(src=\'" + img.src + "\', sizingMethod='scale');\">"
			 + "<span class='unfixPNG' style='display: none;'>" + img.src + ":::" + img.style.cssText + "</span>"	// moded by KY
			 + "</span>";
			 img.outerHTML = strNewHTML;
			 i = i-1;
		  }
	   }
	}
}
function unfixPNG() {	// undo fixPNG -- added by KY, not 100% foolproof yet.
	var itemFixPNG = $$('.fixPNG');
	var itemFixPNG_span = $$('.fixPNG .unfixPNG');
	var counter = 0;
	if(itemFixPNG.length > 0) {
		itemFixPNG.each( function(node) {
			var tmpText = itemFixPNG_span[counter].innerHTML.split(":::");
			var imgSrc = tmpText[0];
			var imgID = ($(node).id) ? "id='" + $(node).id + "' " : "";
			var imgClass = ($(node).className) ? "class='" + $(node).className + "' " : "";
			imgClass = imgClass.replace("fixPNG", "");
			var imgTitle = ($(node).title) ? "title='" + $(node).title + "' " : "";
			var imgStyle = (tmpText[1]!="") ? "style='" + tmpText[1] + "' " : "";
			$(node).outerHTML = "<img src='" + imgSrc + "' alt='beforePrintPNG' " + imgID + imgClass + imgTitle + imgStyle + " />";
			counter++;
		} );
	}
}



/* *** adjustText *** */
function adjustText(pc) {
	if(pc) {
		// $('main').setStyle({ 'fontSize': pc+'%' });
		new Effect.Morph($('main'), { style: { 'fontSize': pc+'%' }, duration: 0.5 });
	}
}



/* *** IE Update for ActiveX click to activate *** */
function ieupdate() {
	objects = document.getElementsByTagName("object");
	for (var i = 0; i < objects.length; i++)
	{
		objects[i].outerHTML = objects[i].outerHTML;
	}
}




/* ********************************** */
/* *** pageBanner Slideshow       *** */
/* *** thumbnail support          *** */
/* *** random pick support        *** */
/* *** noslideshow support        *** */
/* *** thumb scroll support       *** */
/* *** thumb repeat support       *** */
/* *** thumb scroll support       *** */
/* *** descriptions support       *** */
/* *** title link support         *** */
/* *** multi-banner support (2.4) *** */
/* *** number index support (2.5) *** */
/* *** prev() (2.6)               *** */
/* *** boolAutoPlay (2.6)         *** */
/* *** boolDownload (2.7)         *** */
/* *** boolVertMiddle (2.8)       *** */
/* *** v2.8.0 KY 2011.02.14       *** */
/* ********************************** */
var pageBanner = {
	numberOfImages: 0,	// random pick number of images from banners[], 0 = no restriction
	numberOfBannerAreas: 1,	// if > 1, no thumbnails are supported
	slideshow: true,
	boolAutoPlay: false,
	boolVertMiddle: true,
	boolDownload: true,
	downloadText: 'Download this image',
	downloads: new Array(),
	boolEffectTracker: false,
	boolHover: true,
	boolNumberIndex: false,	// true = no thumbs support
	banners: new Array(),
	thumbs: new Array(),	// slideshow must be true for thumbnail support
	thumbOpacity: 0.5,		// opacity for non-current thumbnail
	titles: new Array(),
	descriptions: new Array(),
	links: new Array(),
	boolThumbTitle: false,
	boolThumbDescription: false,
	bannerFadeTimer: 1.0,
	gotobannerFadeTimer: 1.0,
	thumbnailFadeTimer: 0.3,
	bannerSlideTimer: 10000,
	bannerInterval: null,
	currentBanner: 0,
	currentBannerArea: '',
	intervalThumbMove: null,
	thumbsMoveDelay: 50,
	init: function() {
		if($('pageBannerThumbs') && !pageBanner.slideshow) {
			// alert('Error: slideshow must be turned on for thumbnail support.');
			var err = new Error(); 
			err.name = 'pageBanner Error'; 
			err.message = 'Slideshow must be turned on for thumbnail support.'; 
			try { throw(err); } catch(e) { alert(err.message); }
			return;
		}
		if($('pageBannerThumbs') && pageBanner.banners.length != pageBanner.thumbs.length) {
			// alert('Error: number of banners must match number of thumbnails.');
			var err = new Error(); 
			err.name = 'pageBanner Error'; 
			err.message = 'Number of banners does not match the number of thumbnails.'; 
			try { throw(err); } catch(e) { alert(err.message); }
			return;
		}
		if(pageBanner.banners.length % pageBanner.numberOfBannerAreas != 0) {
			// alert('Error: number of banners must be multiples of number of banner areas.');
			var err = new Error(); 
			err.name = 'pageBanner Error'; 
			err.message = 'Number of banners must be multiples of number of banner areas.'; 
			try { throw(err); } catch(e) { alert(err.message); }
			return;
		}
		if(pageBanner.titles.length > 0 && pageBanner.banners.length != pageBanner.titles.length) {
			// alert('Error: number of titles must match number of banners.');
			var err = new Error(); 
			err.name = 'pageBanner Error'; 
			err.message = 'Number of titles does not match the number of banners.'; 
			try { throw(err); } catch(e) { alert(err.message); }
			return;
		}
		if(pageBanner.boolDownload) {
			if(pageBanner.downloads.length > 0 && pageBanner.banners.length != pageBanner.titles.length) {
				// alert('Error: number of titles must match number of banners.');
				var err = new Error(); 
				err.name = 'pageBanner Error'; 
				err.message = 'Number of download text does not match the number of banners.'; 
				try { throw(err); } catch(e) { alert(err.message); }
				return;
			} 
		}
		if(pageBanner.descriptions.length > 0 && pageBanner.banners.length != pageBanner.descriptions.length) {
			// alert('Error: number of descriptions must match number of banners.');
			var err = new Error(); 
			err.name = 'pageBanner Error'; 
			err.message = 'Number of descriptions does not match the number of banners.'; 
			try { throw(err); } catch(e) { alert(err.message); }
			return;
		}
		if(pageBanner.links.length > 0 && pageBanner.banners.length != pageBanner.links.length) {
			// alert('Error: number of links must match number of banners.');
			var err = new Error(); 
			err.name = 'pageBanner Error'; 
			err.message = 'Number of links does not match the number of banners.'; 
			try { throw(err); } catch(e) { alert(err.message); }
			return;
		}
		if(pageBanner.numberOfImages != 0) {
			if(pageBanner.numberOfImages > pageBanner.banners.length) {
				// alert('Error: number of banners must exceed number of images picked.');
				var err = new Error(); 
				err.name = 'pageBanner Error'; 
				err.message = 'Number of banners is less than number of images to be picked.'; 
				try { throw(err); } catch(e) { alert(err.message); }
				return;
			}
			var tempBanners = new Array(pageBanner.numberOfImages);
			var tempThumbs = new Array(pageBanner.numberOfImages);
			var tempTitles = new Array(pageBanner.numberOfImages);
			var tempDownloads = new Array(pageBanner.numberOfImages);
			var tempDescriptions = new Array(pageBanner.numberOfImages);
			var tempLinks = new Array(pageBanner.numberOfImages);
			for(var i=0; i < pageBanner.numberOfImages; i++) {
				var randomIndex = parseInt(Math.random() * pageBanner.banners.length);
				tempBanners[i] = pageBanner.banners[randomIndex];
				pageBanner.banners = pageBanner.banners.without(pageBanner.banners[randomIndex]);
				if($('pageBannerThumbs')) tempThumbs[i] = pageBanner.thumbs[randomIndex];
				pageBanner.thumbs = pageBanner.thumbs.without(pageBanner.thumbs[randomIndex]);
				if(pageBanner.titles.length > 0) tempTitles[i] = pageBanner.titles[randomIndex];
				pageBanner.titles = pageBanner.titles.without(pageBanner.titles[randomIndex]);
				if(pageBanner.boolDownload) {
					if(pageBanner.downloads.length > 0) {
						tempDownloads[i] = pageBanner.downloads[randomIndex];
						pageBanner.downloads = pageBanner.downloads.without(pageBanner.downloads[randomIndex]);
					} else {
						tempDownloads[i] = pageBanner.downloadText;
					}
				}
				if(pageBanner.descriptions.length > 0) tempDescriptions[i] = pageBanner.descriptions[randomIndex];
				pageBanner.descriptions = pageBanner.descriptions.without(pageBanner.descriptions[randomIndex]);
				if(pageBanner.links.length > 0) tempLinks[i] = pageBanner.links[randomIndex];
				pageBanner.links.splice(randomIndex,1);
			}
			pageBanner.banners = tempBanners;
			pageBanner.thumbs = tempThumbs;
			pageBanner.titles = tempTitles;
			pageBanner.downloads = tempDownloads;
			pageBanner.descriptions = tempDescriptions;
			pageBanner.links = tempLinks;
		}
		if($('pageBannerThumbs')) {
			if($('pageBannerThumbsUp') && $('pageBannerThumbsDown')) {
				$('pageBannerThumbsUp').observe('mouseenter', pageBannerThumbsUp_hover = function(e) {
					pageBanner.intervalThumbMove = setInterval(pageBanner.thumbsMoveUp, pageBanner.thumbsMoveDelay);
				});
				$('pageBannerThumbsUp').observe('mouseleave', pageBannerThumbsUp_out = function(e) {
					clearInterval(pageBanner.intervalThumbMove);
				});
				$('pageBannerThumbsDown').observe('mouseenter', pageBannerThumbsDown_hover = function(e) {
					pageBanner.intervalThumbMove = setInterval(pageBanner.thumbsMoveDown, pageBanner.thumbsMoveDelay);
				});
				$('pageBannerThumbsDown').observe('mouseleave', pageBannerThumbsDown_out = function(e) {
					clearInterval(pageBanner.intervalThumbMove);
				});
			} else if($('pageBannerThumbsDown') && !$('pageBannerThumbsUp')) {
				$('pageBannerThumbsDown').observe('click', pageBannerThumbsDown_click = function(e) {
					pageBanner.thumbsRepeatDown();
				});
			}
		}
		var areaIndex = '';
		if(pageBanner.numberOfBannerAreas>1) {
			areaIndex = 1;
			pageBanner.currentBannerArea = 0;
		}
		for(var i=0; i < pageBanner.banners.length; i++) {
			var imageIndex = i;
			if(areaIndex !== '') {
				areaIndex = (areaIndex + 1) % pageBanner.numberOfBannerAreas;
				imageIndex = Math.floor(i / pageBanner.numberOfBannerAreas);
			}
			var imageKey = areaIndex + '_' + imageIndex;
			var banner;
			if(pageBanner.boolVertMiddle) {
				banner = new Element('table', { 'id':'pageBannerImg'+imageKey }).addClassName('banner').hide().insert(new Element('tbody').insert(new Element('tr').insert(new Element('td').insert(new Element('img', { 'src':pageBanner.banners[i], 'alt':'' })))));
			} else {
				banner = new Element('div', { 'class':'banner', 'id':'pageBannerImg'+imageKey }).hide().insert(new Element('div').addClassName('bannerInner').insert(new Element('img', { 'src':pageBanner.banners[i], 'alt':'' })));
			}
			if(pageBanner.slideshow) {
				if(imageIndex==0) {
					$('pageBanner'+areaIndex).update(banner);
					$(banner).setStyle({'zIndex':'2'}).show();
				} else if(imageIndex==1) {
					$('pageBanner'+areaIndex).insert(banner);
					$(banner).setStyle({'zIndex':'1'}).show();
				} else {
					$('pageBanner'+areaIndex).insert(banner);
					$(banner).setStyle({'zIndex':'0'});
				}
				if($('pageBannerTitles'+areaIndex) && pageBanner.titles.length > 0) {
					var title = pageBanner.titles[i];
					if(pageBanner.links.length > 0) {
						title = '<a>' + title + '</a>';
					}
					var bannerTitle = new Element('div', { 'class':'bannerTitle', 'id':'pageBannerTitle'+imageKey }).hide().insert(new Element('div').addClassName('bannerTitleInner').update(title));
					if(imageIndex==0) {
						$('pageBannerTitles'+areaIndex).update(bannerTitle);
						$(bannerTitle).show();
					} else {
						$('pageBannerTitles'+areaIndex).insert(bannerTitle);
					}
					if(pageBanner.links.length > 0) {
						$(bannerTitle).down('a').writeAttribute('href',pageBanner.links[i]);
					}
				}
				if($('pageBannerDownloads'+areaIndex) && pageBanner.boolDownload) {
					var download;
					if(pageBanner.downloads.length > 0) {
						download = pageBanner.downloads[i];
						if(pageBanner.downloads.length > 0) {
							download = '<a>' + download + '</a>';
						}
					} else {
						download = '<a>' + pageBanner.downloadText + '</a>';
					}
					var bannerDownload = new Element('div', { 'class':'bannerDownload', 'id':'pageBannerDownload'+imageKey }).hide().insert(new Element('div').addClassName('bannerDownloadInner').update(download));
					if(imageIndex==0) {
						$('pageBannerDownloads'+areaIndex).update(bannerDownload);
						$(bannerDownload).show();
					} else {
						$('pageBannerDownloads'+areaIndex).insert(bannerDownload);
					}
					if(pageBanner.banners.length > 0) {
						$(bannerDownload).down('a').writeAttribute('href',pageBanner.banners[i]);
					}
				}
				if($('pageBannerDescriptions'+areaIndex) && pageBanner.descriptions.length > 0) {
					var bannerDescription = new Element('div', { 'class':'bannerDescription', 'id':'pageBannerDescription'+imageKey }).hide().insert(new Element('div').addClassName('bannerDescriptionInner').update(pageBanner.descriptions[i]));
					if(imageIndex==0) {
						$('pageBannerDescriptions'+areaIndex).update(bannerDescription);
						$(bannerDescription).show();
					} else {
						$('pageBannerDescriptions'+areaIndex).insert(bannerDescription);
					}
				}
			} else {
				if(imageIndex==0) $('pageBanner'+areaIndex).update(banner);
				else $('pageBanner'+areaIndex).insert(banner);
				$(banner).show();
			}
			if(pageBanner.boolNumberIndex && $('pageBannerNumberIndices')) {
				var numberIndex = new Element('a', { 'href':'javascript:void(0);', 'id':'pageBannerNumberIndex'+'_'+i }).update(i+1).observe('click', function(e) {
					var index = parseInt($(this).identify().substring(22));
					pageBanner.goto(index);
				});
				if(i==0) {
					$(numberIndex).addClassName('current');
					$('pageBannerNumberIndices').update(numberIndex);
				} else {
					$('pageBannerNumberIndices').insert(numberIndex);
				}
			}
		}
		if(!pageBanner.boolNumberIndex && pageBanner.numberOfBannerAreas == 1 && $('pageBannerThumbs')) {
			for(var i=0; i < pageBanner.thumbs.length; i++) {
				var thumb = new Element('img', { 'src':pageBanner.thumbs[i], 'alt':'' });
				if(i==0) {
					$('pageBannerThumbs').update(thumb);
				} else {
					$('pageBannerThumbs').insert(thumb);
				}
				if(pageBanner.slideshow) {
					if(i!=0) $(thumb).setOpacity(pageBanner.thumbOpacity);
					if(pageBanner.boolHover) {
						$(thumb).observe('mouseenter', function(e) { $(e).element().addClassName('hover'); });
						$(thumb).observe('mouseleave', function(e) { $(e).element().removeClassName('hover'); });
					}
					$(thumb).wrap('div').addClassName('pageBannerThumbInner').wrap('div', { 'id':'pageBannerThumb'+'_'+i, 'class':'pageBannerThumb' }).observe('click', function(e) {
						var index = parseInt($(this).identify().substring(16));
						pageBanner.goto(index);
					});
					if(i==0) {
						$(thumb).up('.pageBannerThumb').addClassName('current');
					}
				}
				if(pageBanner.boolThumbTitle) {
					$(thumb).up('.pageBannerThumbInner').insert(new Element('div').addClassName('pageBannerThumbTitle').update(pageBanner.titles[i]));
				}
				if(pageBanner.boolThumbDescription) {
					$(thumb).up('.pageBannerThumbInner').insert(new Element('div').addClassName('pageBannerThumbDescription').update(pageBanner.descriptions[i]));
				}
			}
			if($('pageBannerThumbsHScroll')) {
				if($('pageBannerThumbs').getWidth() - parseInt($('pageBannerThumbs').down('.pageBannerThumb').getStyle('marginLeft')) - parseInt($('pageBannerThumbs').down('.pageBannerThumb').getStyle('marginRight')) < $('pageBannerThumbs').up('.pageBannerThumbsArea').getWidth()) {
					$('pageBannerThumbsHScroll').hide();
				}
				var h_handle = new Element('div').addClassName('handle');
				$('pageBannerThumbsHScroll').insert(h_handle);
				var h_scroll = new Control.Slider($(h_handle), $('pageBannerThumbsHScroll'), {
					axis: 'horizontal',
					onSlide: function(value) {
						$('pageBannerThumbs').setStyle({'left': -value*($('pageBannerThumbs').getWidth()-$('pageBannerThumbs').up('.pageBannerThumbsArea').getWidth())+'px'});
					},
					onChange: function(value) {
						$('pageBannerThumbs').setStyle({'left': -value*($('pageBannerThumbs').getWidth()-$('pageBannerThumbs').up('.pageBannerThumbsArea').getWidth())+'px'});
					}
				});
			}
			if($('pageBannerThumbsVScroll')) {
				if($('pageBannerThumbs').getHeight() - parseInt($('pageBannerThumbs').down('.pageBannerThumb').getStyle('marginTop')) - parseInt($('pageBannerThumbs').down('.pageBannerThumb').getStyle('marginBottom')) < $('pageBannerThumbs').up('.pageBannerThumbsArea').getHeight()) {
					$('pageBannerThumbsVScroll').hide();
				}
				var v_handle = new Element('div').addClassName('handle');
				$('pageBannerThumbsVScroll').insert(v_handle);
				var v_scroll = new Control.Slider($(v_handle), $('pageBannerThumbsVScroll'), {
					axis: 'vertical',
					onSlide: function(value) {
						$('pageBannerThumbs').setStyle({'top': -value*($('pageBannerThumbs').getHeight()-$('pageBannerThumbs').up('.pageBannerThumbsArea').getHeight())+'px'});
					},
					onChange: function(value) {

						$('pageBannerThumbs').setStyle({'top': -value*($('pageBannerThumbs').getHeight()-$('pageBannerThumbs').up('.pageBannerThumbsArea').getHeight())+'px'});
					}
				});
			}
		}
		if(pageBanner.slideshow) {
			if($('pageBannerPlay')) $('pageBannerPlay').observe('click', function(e) { pageBanner.play(); });
			if($('pageBannerPause')) $('pageBannerPause').observe('click', function(e) { pageBanner.pause(); });
			if(pageBanner.boolAutoPlay) pageBanner.play();
		}
	},
	thumbsMoveUp: function() {
		var marginTop = parseInt($('pageBannerThumbs').getStyle('marginTop'));
		if(parseInt(marginTop) * -1 > 0) {
			$('pageBannerThumbs').setStyle({'marginTop': marginTop + 2 + 'px' });
		}
	},
	thumbsMoveDown: function() {
		var marginTop = parseInt($('pageBannerThumbs').getStyle('marginTop'));
		if(parseInt(marginTop) * -1 < $('pageBannerThumbs').getHeight() - $('pageBannerThumbs').up().getHeight()) {
			$('pageBannerThumbs').setStyle({'marginTop': marginTop - 2 + 'px' });
		}
	},
	thumbsRepeatUp: function() {
		if(typeof Effect != 'object') return;
		if($('pageBannerThumbsCanvas').getHeight() < $('pageBannerThumbs').getHeight()) {
			var marginTop = parseInt($('pageBannerThumbs').getStyle('marginTop'));
			var repeatElement = $('pageBannerThumbs').select('.pageBannerThumb').last();
			var shiftValue = $('pageBannerThumbs').down('.pageBannerThumb').getHeight() + parseInt($('pageBannerThumbs').down('.pageBannerThumb').getStyle('marginTop')) + parseInt($('pageBannerThumbs').down('.pageBannerThumb').getStyle('marginBottom'));
			new Effect.Move($('pageBannerThumbs'), {
				duration: 0.5,
				x: 0,
				y: shiftValue,
				mode: 'relative',
				queue: { 'position':'end','scope':'pageThumbScrollDown' },
				beforeStart: function() {
					$('pageBannerThumbs').setStyle({'top':-shiftValue+'px'}).insert({'top':repeatElement.remove()});
				}
			});
		}
	},
	thumbsRepeatDown: function() {
		if(typeof Effect != 'object') return;
		if($('pageBannerThumbsCanvas').getHeight() < $('pageBannerThumbs').getHeight()) {
			var marginTop = parseInt($('pageBannerThumbs').getStyle('marginTop'));
			new Effect.Move($('pageBannerThumbs'), {
				duration: 0.5,
				x: 0,
				y: -($('pageBannerThumbs').down('.pageBannerThumb').getHeight() + parseInt($('pageBannerThumbs').down('.pageBannerThumb').getStyle('marginTop')) + parseInt($('pageBannerThumbs').down('.pageBannerThumb').getStyle('marginBottom'))),
				mode: 'relative',
				queue: { 'position':'end','scope':'pageThumbScrollDown' },
				afterFinish: function() {
					$('pageBannerThumbs').insert($('pageBannerThumbs').down('.pageBannerThumb').remove()).setStyle({'top':0});
				}
			});
		}
	},
	pause: function() {
		if(pageBanner.slideshow) {
			if($('pageBannerPause')) $('pageBannerPause').hide();
			if($('pageBannerPlay')) $('pageBannerPlay').show();
			clearInterval(pageBanner.bannerInterval);
		}
	},
	play: function() {
		if(pageBanner.slideshow) {
			if($('pageBannerPlay')) $('pageBannerPlay').hide();
			if($('pageBannerPause')) $('pageBannerPause').show();
			if(pageBanner.banners.length > pageBanner.numberOfBannerAreas) {
				pageBanner.bannerInterval = setInterval("pageBanner.next()",pageBanner.bannerSlideTimer);
			}
		}
	},
	next: function() {
		if(typeof Effect != 'object') return;
		if(pageBanner.slideshow) {
			if(pageBanner.boolEffectTracker) { return; }
			pageBanner.boolEffectTracker = true;
			var imageIndex = pageBanner.currentBanner;
			var imageKey = pageBanner.currentBannerArea + '_' + pageBanner.currentBanner;
			if(pageBanner.boolNumberIndex && $('pageBannerNumberIndices')) {
				$('pageBannerNumberIndex'+imageKey).removeClassName('current');
			}
			if(!pageBanner.boolNumberIndex && $('pageBannerThumbs')) {
				$('pageBannerThumb'+imageKey).removeClassName('current');
				new Effect.Fade( $('pageBannerThumb'+imageKey).down('img'), { duration: pageBanner.thumbnailFadeTimer, to:pageBanner.thumbOpacity } );
			}
			if($('pageBannerTitles'+pageBanner.currentBannerArea)) new Effect.Fade( $('pageBannerTitle'+imageKey), { duration: pageBanner.thumbnailFadeTimer } );
			if($('pageBannerDescriptions'+pageBanner.currentBannerArea)) new Effect.Fade( $('pageBannerDescription'+imageKey), { duration: pageBanner.thumbnailFadeTimer } );
			new Effect.Fade( $('pageBannerImg'+imageKey), {
				duration: pageBanner.bannerFadeTimer,
				queue: { 'position':'end', 'scope':'pageBanner' },

				afterFinish: function() {
					if($('pageBannerThumbsCanvas') && $('pageBannerThumb'+imageKey) && $('pageBannerThumb'+imageKey).cumulativeOffset().top - $('pageBannerThumbs').cumulativeOffset().top + $('pageBannerThumb'+imageKey).getHeight() == $('pageBannerThumbsCanvas').getHeight()) {
						pageBanner.thumbsRepeatDown();
					}
					$('pageBannerImg'+imageKey).setStyle({'zIndex':'0'}).hide();
					imageIndex++;
					imageKey = pageBanner.currentBannerArea + '_' + imageIndex;
					if(!$('pageBannerImg'+imageKey)) {
						imageIndex = 0;
						imageKey = pageBanner.currentBannerArea + '_' + imageIndex;
					}
					if($('pageBannerTitles'+pageBanner.currentBannerArea)) new Effect.Appear( $('pageBannerTitle'+imageKey), { duration: pageBanner.thumbnailFadeTimer } );
					if($('pageBannerDescriptions'+pageBanner.currentBannerArea)) new Effect.Appear( $('pageBannerDescription'+imageKey), { duration: pageBanner.thumbnailFadeTimer } );
					if($('pageBannerImg'+imageKey)) {
						$('pageBannerImg'+imageKey).setStyle({'zIndex':'2'});
					}
					if($('pageBannerImg'+pageBanner.currentBannerArea+'_'+(imageIndex+1))) {
						$('pageBannerImg'+pageBanner.currentBannerArea+'_'+(imageIndex+1)).setStyle({'zIndex':'1'}).show();
					} else {
						$('pageBannerImg'+pageBanner.currentBannerArea+'_'+'0').setStyle({'zIndex':'1'}).show();
					}
					if(pageBanner.boolNumberIndex && $('pageBannerNumberIndices')) {
						$('pageBannerNumberIndex'+imageKey).addClassName('current');
					}
					if(!pageBanner.boolNumberIndex && $('pageBannerThumbs')) {
						$('pageBannerThumb'+imageKey).addClassName('current');
						new Effect.Appear($('pageBannerThumb'+imageKey).down('img'), { 'duration':pageBanner.thumbnailFadeTimer, afterFinish: function() {
							pageBanner.boolEffectTracker = false;
						} });
					} else {
						pageBanner.boolEffectTracker = false;
					}
					if(pageBanner.currentBannerArea!=='') {
						pageBanner.currentBannerArea = (pageBanner.currentBannerArea + 1) % pageBanner.numberOfBannerAreas;
						if(pageBanner.currentBannerArea == 0) {
							pageBanner.currentBanner = imageIndex;
						}
					} else {
						pageBanner.currentBanner = imageIndex;
					}
				}
			} );
		}
	},
	goto: function(n) {
		if(pageBanner.numberOfBannerAreas != 1) return;
		if(typeof Effect != 'object') return;
		if(pageBanner.slideshow) {
			if(pageBanner.boolEffectTracker) { return; }
			if(pageBanner.currentBanner == n) { return; }
			pageBanner.boolEffectTracker = true;
			pageBanner.pause();
			var i = pageBanner.currentBanner;
			if(pageBanner.boolNumberIndex && $('pageBannerNumberIndices')) {
				$('pageBannerNumberIndex'+'_'+i).removeClassName('current');
			}
			if(!pageBanner.boolNumberIndex && $('pageBannerThumbs')) {
				$('pageBannerThumb'+'_'+i).removeClassName('current');
				new Effect.Fade( $('pageBannerThumb'+'_'+i).down('img'), { duration: pageBanner.thumbnailFadeTimer, to:pageBanner.thumbOpacity } );
			}
			if($('pageBannerTitles')) new Effect.Fade( $('pageBannerTitle'+'_'+i), { duration: pageBanner.thumbnailFadeTimer } );
			if($('pageBannerDescriptions')) new Effect.Fade( $('pageBannerDescription'+'_'+i), { duration: pageBanner.thumbnailFadeTimer } );
			
			if($('pageBannerImg'+'_'+(i+1))) {
				$('pageBannerImg'+'_'+(i+1)).setStyle({'zIndex':'0'}).hide();
			} else {
				$('pageBannerImg'+'_'+'0').setStyle({'zIndex':'0'}).hide();
			}
			if($('pageBannerImg'+'_'+n)) {
				$('pageBannerImg'+'_'+n).setStyle({'zIndex':'1'}).show();
			} else {
				var err = new Error(); 
				err.name = 'pageBanner Error'; 
				err.message = 'Cannot locate specified banner image.'; 
				throw(err);
				return;
			}
			new Effect.Fade( $('pageBannerImg'+'_'+i), {
				duration: pageBanner.gotobannerFadeTimer,
				queue: { 'position':'end', 'scope':'pageBanner' },
				afterFinish: function() {
					$('pageBannerImg'+'_'+i).setStyle({'zIndex':'0'}).hide();
					pageBanner.currentBanner = n;
					if($('pageBannerTitles')) new Effect.Appear( $('pageBannerTitle'+'_'+n), { duration: pageBanner.thumbnailFadeTimer } );
					if($('pageBannerDescriptions')) new Effect.Appear( $('pageBannerDescription'+'_'+n), { duration: pageBanner.thumbnailFadeTimer } );
					if($('pageBannerImg'+'_'+n)) {
						$('pageBannerImg'+'_'+n).setStyle({'zIndex':'2'});
					}
					if($('pageBannerImg'+'_'+(n+1))) {
						$('pageBannerImg'+'_'+(n+1)).setStyle({'zIndex':'1'}).show();
					} else {
						$('pageBannerImg'+'_'+'0').setStyle({'zIndex':'1'}).show();
					}
					if(pageBanner.boolNumberIndex && $('pageBannerNumberIndices')) {
						$('pageBannerNumberIndex'+'_'+n).addClassName('current');
					}
					if(!pageBanner.boolNumberIndex && $('pageBannerThumbs')) {
						$('pageBannerThumb'+'_'+n).addClassName('current');
						new Effect.Appear($('pageBannerThumb'+'_'+n).down('img'), { 'duration':pageBanner.thumbnailFadeTimer, afterFinish: function() {
							pageBanner.boolEffectTracker = false;
							if(pageBanner.boolAutoPlay) pageBanner.play();
						} });
					} else {
						pageBanner.boolEffectTracker = false;
						if(pageBanner.boolAutoPlay) pageBanner.play();
					}
				}
			} );
		}
	},
	prev: function() {
		var n = pageBanner.currentBanner - 1;
		if(n < 0) {
			n = pageBanner.banners.length - 1;
		}
		pageBanner.goto(n);
	}
};

