// init page
window.addEvent('domready', function() {
	initCufon();
	initTabs();
	initPopups();
	initDropDown();
	initLightbox();
	initHover();
	initOpenClose();
	initCrawlLine();
	
});
window.addEvent('load', function() {
	//initInputs();
	initSlideShow();
	initPrintButtons();
	initFormValidation();
	initAccordion();
	initAsideDrop();
});

function initAsideDrop(){
	var _t_time = 10;
	var hover_class = 'hover1';
	var _box = $("accordion2");
	var count = 0;
	var correction = 0;
	if(Browser.Engine.gecko){
		correction++;
	}
	var body = $$('body')[0];
	if (_box) {
		var els = $(_box).getElements("li");
		els.each(function(el, i){
			els_drop = el.getElements("li");
			els_drop.each(function(els_d, j){
				if (els_d.getElements("div.drop").length>0) {
					count++;
					var drop = els_d.getElement("div.drop");
					drop.setStyles({display:'block'});
					var left_pos = drop.getStyle('left');
					drop.setStyles({display:'none'});
					var div = new Element('div', {id: 'drop'+ count});
					div.set('html', drop.innerHTML);
					div.set('class', 'droppable');
					body.grab(div);
					drop.dispose();
					var drop = $('drop'+ count);
					var _t;
					els_d.addEvent('mouseenter', function(){
						if(_t) clearTimeout(_t);
						els_d.addClass(hover_class);
						drop.setStyles({
							display:'block',
							top: els_d.getPosition().y+correction,
							left: els_d.getPosition().x+parseInt(left_pos)
						});
					});
					els_d.addEvent('mouseleave', function(){
						_t = setTimeout(function(){
							els_d.removeClass(hover_class);
							drop.setStyles({
								display:'none'
							});
						}, _t_time);
					});
					drop.addEvent('mouseenter', function(){
						if(_t) clearTimeout(_t);
					});
					drop.addEvent('mouseleave', function(){
						_t = setTimeout(function(){
							els_d.removeClass(hover_class);
							drop.setStyles({
								display:'none'
							});
						}, _t_time);
					});
				}
			}), this;
		}, this);
	}
}

/* Accord */
var boxes = [];
var triggers = [];
var active = false;
function initAccordion() {
	if(typeof(Accordion)=='function'){
		var _box = $("accordion");
		if (_box)
		{
			var els = $(_box).getElements("li");
			els.each(function(el, i) {
				if (el.getElements("div.aside-slide").length)
				{
					boxes.push(el.getElements("div")[0]);
					triggers.push(el.getElements("a")[0]);
					if (el.className.indexOf("active") != -1)
					{
						active = boxes.length-1;
					}
				}
			}, this);
			if (boxes.length && triggers.length)
			{
				var accordion = new Accordion(triggers, boxes, {
					opacity: false,
					display: active,
					onActive: function(toggler, element){
						if (toggler.parentNode.className.indexOf("active") == -1)
						{
							toggler.parentNode.className += " active";
						}
					},
					onBackground: function(toggler, element){
						toggler.parentNode.className = toggler.parentNode.className.replace("active", "");
					}
				}, _box);
			}
		}
		if($$(".aside .open").length){
			//$$(".open").addEvent('click',function(){
			//	return false;
			//});
		}
	}
	
}

// cufon init
function initCufon() {
	Cufon.replace('.logo-holder .logo', { fontFamily: 'Weiss LT' });
	Cufon.replace('.logo-holder .slogan', { fontFamily: 'TheSansSemiLight-Caps' });
	Cufon.replace('.tabs>ul>li>a', { fontFamily: 'TheSansSemiLight-Caps', hover: true });
	Cufon.replace('.testimonials q', { fontFamily: 'Weiss LT' });
	Cufon.replace('.testimonials cite', { fontFamily: 'TheSansSemiLight-Caps' });
	Cufon.replace('.testimonials em', { fontFamily: 'TheSansSemiLight-Italic' });
	Cufon.replace('.visual .tools ul li', { fontFamily: 'ScalaSans-Bold' });
	Cufon.replace('.content-heading h2', { fontFamily: 'Perpetua Std' });
	Cufon.replace('.tabs-wrap .tabset li a', { fontFamily: 'ScalaSans-Bold', hover: true });

	Cufon.replace('.stay-box h2,.stay-box-small h2,.side-box-t h3', { fontFamily: 'Perpetua Std' });
	Cufon.replace('.tab-block .tabset li a', { fontFamily: 'ScalaSans-Bold', hover: true });
	Cufon.replace('.tabholder-inner .tabset li a', { fontFamily: 'ScalaSans-Bold', hover: true });
	Cufon.replace('.aside h3', { fontFamily: 'Weiss LT' });
	Cufon.replace('.resource .title', { fontFamily: 'TheSansSemiLight-Italic' });
	Cufon.replace('.resource strong', { fontFamily: 'Weiss LT' });
	Cufon.replace('.resource .info', { fontFamily: 'TheSansSemiLight-Caps' });
	Cufon.replace('.partner .info', { fontFamily: 'TheSansSemiLight-Caps' });
	Cufon.replace('.partner .title', { fontFamily: 'Weiss LT' });
	Cufon.replace('.partner .reason', { fontFamily: 'TheSansSemiLight-Italic' });
	Cufon.replace('.partner .reason span', { fontFamily: 'TheSansSemiLight-Caps' });
	Cufon.replace('.sub-heading h2', { fontFamily: 'Weiss LT' });
	Cufon.replace('.sub-heading h2 span', { fontFamily: 'TheSansSemiLight-Italic' });
	Cufon.replace('.features h3', { fontFamily: 'Weiss LT' });
	Cufon.replace('#content.inner .sub-customize a.misc', { fontFamily: 'Perpetua Std' });
}

// hover for IE
function hoverForIE6(_list, _class) {
	var _hoverClass = 'hover';
	if(_class) _hoverClass = _class;
	if(typeof(document.body.style.maxHeight) == 'undefined'){
		$$(_list).each(function(_el, i){
			_el.addEvent('mouseenter', function(){
				_el.addClass(_hoverClass);
			});
			_el.addEvent('mouseleave', function(){
				_el.removeClass(_hoverClass);
			});
		});
	}
}

// add hover class for IE6
function initHover() {
	hoverForIE6('ul li', 'hover');
	hoverForIE6('span.submit', 'submit-hover');
	hoverForIE6('input.reset', 'reset-hover');
	hoverForIE6('input', 'hover');
}

// print buttons init
function initPrintButtons() {
	var _body = $$('body')[0];
	var _links = $$('.print-popup a.print');
	_links.each(function(opener){
		var _bodyClass = opener.getAttribute('rel');
		opener.addEvent('click',function(){
			_body.removeAttribute('class');
			_body.addClass(_bodyClass);
			window.print();
			return false;
		});
	});
}

function sendBasicOneWayGet(href) {
  var req = new Request({
    url: href,
    method: 'get',
    noCache: true
  });
  req.send();
}

// open close function
function initOpenClose() {
	var _duration = 350;
	var _activeClass = 'expanded';
	var _removedClass = 'removed';
	var _slideBlocks = $$('div.open-close');

	_slideBlocks.each(function(_el, i) {
	  var _item = _el;
	  var _opener = _item.getElement('a.misc');
	  var _remover = _item.getElement('a.close');
	  var _slider = _item.getElement('div.toggle-block');
	  var myVerticalSlide = new Fx.Slide(_slider, { duration: _duration });

	  _opener.addEvent('click', function() {
	      if (_item.hasClass(_activeClass)) {
	        if (_remover.hasClass('removeMemberSection')) {
	          sendBasicOneWayGet(_opener.getProperty('href') + 'C');
	        }
	      _item.removeClass(_activeClass);
	      myVerticalSlide.slideOut();
	    } else {
	      if (_remover.hasClass('removeMemberSection')) {
	        sendBasicOneWayGet(_opener.getProperty('href') + 'E');
	      }
	      _item.addClass(_activeClass);
	      myVerticalSlide.slideIn();
	    }
	    return false;
	  });

	  _remover.addEvent('click', function() {
	    if (_remover.hasClass('removeMemberSection')) {
	      sendBasicOneWayGet(_remover.getProperty('href') + 'X');
	      _item.addClass(_removedClass);
	    }
	    var myVerticalSlide = new Fx.Slide(_item, { duration: _duration });
	    myVerticalSlide.slideOut();
	    return false;
	  });

	  if (_item.hasClass(_activeClass)) myVerticalSlide.show();
	  else myVerticalSlide.hide();
	  _slider.setStyles({ 'display': 'block' });
	});
}

// init cycle gallery
function initCrawlLine() {
	var _speed = 0.02;
	var _delayOfRestart = 2000;
	var _pauseClass = 'paused';

	$$('div.crawl-line').each(function(obj){
		// gallery options
		var _holder = obj;
		var _btnLeft = _holder.getElement('.link-prev');
		var _btnRight = _holder.getElement('.link-next');
		var _btnPause = _holder.getElement('.pause');
		var _slidesHolder = _holder.getElement('.crawl-holder');
		var _slider = _slidesHolder.getElement('.crawl-slider');
		var _slides = _slider.getElements('div.item');
		var _sumWidth = 0;
		var fxSlide;

		// gallery init
		_slides.each(function(obj){_sumWidth+=obj.getSize().x});
		_slider.innerHTML = _slider.innerHTML+_slider.innerHTML+_slider.innerHTML;
		_slider.setStyles({marginLeft:-_sumWidth})

		// gallery control
		var _k = 1;
		var _offset;
		var _direction = true; // default direction
		var _duration = _sumWidth / _speed;

		// pause button
		_btnPause.addEvent('click',function(){
			if(_holder.hasClass(_pauseClass)) {
				_holder.removeClass(_pauseClass);
				moveGallery(_direction);
			} else {
				_holder.addClass(_pauseClass);
				stopGallery();
			}
			return false;
		})

		var _pressedFlag = false;
		_btnLeft.addEvent('mousedown',function(){
			_pressedFlag = true;
			_direction = false;
			stopGallery();
			moveGallery(_direction);
			return false;
		});
		_btnRight.addEvent('mousedown',function(){
			_pressedFlag = true;
			_direction = true;
			stopGallery();
			moveGallery(_direction);
			return false;
		});
		_btnLeft.addEvent('mouseup',stopGallery);
		_btnRight.addEvent('mouseup',stopGallery);
		$$('body')[0].addEvent('mouseup',function(){
			if(_pressedFlag) stopGallery();
		})

		// restore running
		var _rTimer;
		_holder.addEvent('mouseenter',function(){
			if(_rTimer) clearTimeout(_rTimer);
		});
		_holder.addEvent('mouseout',function(){
			if(_rTimer) clearTimeout(_rTimer);
			if(!_holder.hasClass(_pauseClass)) {
				_rTimer = setTimeout(function(){
					moveGallery(true);
				},_delayOfRestart);
			}
		});

		// gallery animation
		function moveGallery(_direction) {
			if(_direction) {
				_offset = -_sumWidth*2;
				_k = (_sumWidth*2 + parseInt(_slider.getStyle('marginLeft')))/(_sumWidth*2);
			} else {
				_offset = 0;
				_k = 1-(_sumWidth*2 + parseInt(_slider.getStyle('marginLeft')))/(_sumWidth*2);
			}

			stopGallery();
			fxSlide = new Fx.Morph(_slider, {duration: _duration*_k, transition:'linear', onComplete:function(){
				_slider.setStyles({marginLeft:-_sumWidth});
				setTimeout(function(){moveGallery(_direction)},10);

			}});
			fxSlide.start({marginLeft:_offset});
		}
		function stopGallery() {
			if(fxSlide && typeof fxSlide.cancel === 'function') fxSlide.cancel();
		}
		moveGallery(_direction);
	});
}

// form validation
function initFormValidation() {
	var _errorClass = 'error';
	var _regEmail = /^[A-Z0-9\._%-]+@[A-Z0-9\.-]+\.[A-Z]{2,4}(?:[,;][A-Z0-9\._%-]+@[A-Z0-9\.-]+\.[A-Z]{2,4})*$/i;

	$$('form.validate-form').each(function(frm){
		var _form = frm;
		function checkFields() {
			var _flag = false;
			_form.getElements('.'+_errorClass).removeClass(_errorClass);

			// fields validation
			_form.getElements('input.required-email').each(function(item){
				if(!_regEmail.test(item.value)) addError(item);
			});
			_form.getElements('input.required, textarea.required').each(function(item){
				if(!item.value.length || item.value == item.getAttribute('alt')) addError(item);
			});

			// error class adding
			function addError(_obj) {
				_obj.getParent('.row').addClass(_errorClass);
				_flag=true;
			}
			return _flag;
		}

		// catch form submit event
		_form.addEvent('submit',function(){
			if(checkFields()) {
				return false;
			}
		});
	});
}

// clear inputs onfocus
function initInputs() {
	var _inputs = $$('input[type="text"],input[type="password"],textarea');
	_inputs.each(function(it){
		var _input = it;
		var _val = _input.value;
		if(!_val.length) return;
		_input.setAttribute('alt',_val);
		if(_val.length) {
			_input.addEvent('focus', function(){
				if(_input.value == _val) _input.value = '';
			});
			_input.addEvent('blur', function(){
				if(!_input.value.length) _input.value = _val;
			});
		}
	});
}

// tabs init
function initTabs() {
	var _activeClass = 'active';

	$$("ul.tabset").each(function(_el, i){
		var _item = _el;
		var _links = _item.getElements("a.tab");
		var _tabs = [];

		_links.each(function(_opener, i){
			var _target = $(_opener.href.substring(_opener.href.indexOf('#')+1));
			if(!_target) return;
			_tabs.push(_target);

			// show/hide tabs
			if(_opener.hasClass(_activeClass)) _target.setStyles({'display':'block'});
			else _target.setStyles({'display':'none'});

			// switch tab
			_opener.addEvent('click', function(){
				_tabs.each(function(_tab, i){
					if(_tab == _target) _tab.setStyles({'display':'block'});
					else _tab.setStyles({'display':'none'});
				});
				_links.removeClass(_activeClass);
				_opener.addClass(_activeClass);
				return false;
			});
		});
	});

	// add arrows if needed
	$$('div.tabs-nav').each(function(obj,ind){
		var _hold = obj.getElement('.tabs-wrap');
		var _holdSise = _hold.getSize().x;
		var _slider = _hold.getElement('ul.tabset');
		var _slides = _slider.getElements('li');

		var _slidesWidth = 0;
		_slides.each(function(obj){
			_slidesWidth += obj.getSize().x+2;
		});

		if(_slidesWidth > _holdSise) {
			var _btnPrev = obj.getElement('.prev-arrow');
			var _btnNext = obj.getElement('.next-arrow');

			_btnPrev.setStyles({display:'block'});
			_btnNext.setStyles({display:'block'});

			var _nav = new scrollGallery(obj, {
				btPrev: 'a.prev-arrow',
				btNext: 'a.next-arrow',
				holder: 'div.tabs-wrap',
				mover: 'ul.tabset',
				scrollEl: 'li',
				duration : 300,
				autoSlide:false,
				effect: Fx.Transitions.Expo.easeOut
			})
		}
	});
}

// tabs hover funuction
function initDropDown() {
	var lis = $$('.tabs li')
	if(lis.length > 0) {
		for (var i=0; i<lis.length; i++) {
			if(lis[i].getElementsByTagName('div').length > 0) {
				lis[i].className += ' drop-item'
				lis[i].getElementsByTagName("a")[0].className += ' drop-item-a'

				$(lis[i]).addEvent('mouseenter',function() {
					this.className += ' hover';
					setTimeout(function(){Cufon.refresh('.tabs>ul>li>a')}, 10);
				}).addEvent('mouseleave',function() {
					this.className = this.className.replace('hover', '');
					setTimeout(function(){Cufon.refresh('.tabs>ul>li>a')}, 10);
				});
			}
		}
	}
}

// slideshow init
function initSlideShow() {
	// disable fade for IE browsers
	var _fadeSpeed = (navigator.appName.indexOf('Microsoft Internet Explorer')!=-1 ? 0 : 650);

	// top page slideshow
	$$('div.visual,div.partner,div.spfeatures').each(function(item){
		var gal = new fadeGallery(item,{
			activeClass: 'active',
			slides: 'div.slideset > div.slide',
			pager: 'ul.swicher li',
			autoSlide: true,
			switchTime: 10000,
			duration : _fadeSpeed
		});
	});

	// sidebar slideshow
	$$('div.sidebar-slideshow').each(function(item){
		var gal = new fadeGallery(item,{
			activeClass: 'active',
			slides: 'div.slidelist > div.slide',
			pager: 'ul.pager > li',
			autoSlide: true,
			switchTime: 10000,
			duration : _fadeSpeed
		});
	});
}

// fade gallery class
var fadeGallery = new Class({
	options: {
		pager: 'div.pagerlinks a.switcher',
		slides: 'ul.slideset > li',
		btnPrev: 'a.link-prev',
		btnNext: 'a.link-next',
		activeClass: 'active',
		autoSlide: false,
		switchTime: 3000,
		duration : 500
	},

	// create class
	initialize: function(element, options){
		this.setOptions(options);
		var _this = this;

		this.slideset = element.getElements(this.options.slides);
		this.btnPrev = element.getElement(this.options.btnPrev);
		this.btnNext = element.getElement(this.options.btnNext);
		this.slidesCount = this.slideset.length;
		this.pager = element.getElements(this.options.pager);
		this.autoRotation = this.options.autoSlide;
		this.activeClass = this.options.activeClass;
		this.switchTime = this.options.switchTime;

		// slides
		this.duration = this.options.duration;
		this.currentIndex = 0;
		this.oldIndex = 0;
		this.timer = false;

		// gallery init
		this.slideset.each(function(_slide, _index){
			if(_index != _this.currentIndex) _slide.removeClass(_this.activeClass).setStyles({display:'none',opacity:0});
			else _slide.addClass(_this.activeClass).setStyles({display:'block',opacity:1});
		});

		// init control
		if(this.btnPrev) {
			this.btnPrev.addEvent('click', function(){
				_this.prevSlide();
				return false;
			});
		}
		if(this.btnNext) {
			this.btnNext.addEvent('click', function(){
				_this.nextSlide();
				return false;
			});
		}
		if(this.pager.length) {
			this.pager.each(function(item,ind){
				item.addEvent('click', function(){
					_this.numSlide(ind);
					return false;
				});
			});
		}

		// start autoslide
		if (this.options.autoSlide) {
			this.autoSlide();
		}
	},
	refreshPagination:function(){
		var _this = this;
		if(this.pager.length) {
			this.pager.each(function(item,ind){
				if(ind == _this.currentIndex) item.addClass(_this.activeClass);
				else item.removeClass(_this.activeClass)
			});
		}
	},
	numSlide: function(ind){
		if(this.currentIndex != ind) {
			this.oldIndex = this.currentIndex;
			this.currentIndex = ind;
			this.switchSlide();
		}
	},
	nextSlide: function(){
		this.oldIndex = this.currentIndex;
		if(this.currentIndex < this.slidesCount-1) this.currentIndex++;
		else this.currentIndex = 0;
		this.switchSlide();
	},
	prevSlide: function(){
		this.oldIndex = this.currentIndex;
		this.currentIndex--;
		if (this.currentIndex < 0) this.currentIndex = this.slidesCount-1;
		this.switchSlide();
	},
	switchSlide:function(){
		var _oldSlide = this.slideset[this.oldIndex].removeClass(this.activeClass).setStyles({opacity:1,display:'block'});
		var _newSlide = this.slideset[this.currentIndex].addClass(this.activeClass).setStyles({opacity:0,display:'block'});

		// fade elements
		var fxFadeOut = new Fx.Morph(_oldSlide, {duration: this.duration, onComplete:function(){_oldSlide.setStyles({display:'none'})}});
		var fxFadeIn = new Fx.Morph(_newSlide, {duration: this.duration});
		fxFadeOut.start({opacity:0});
		fxFadeIn.start({opacity:1});
		this.autoSlide();
		this.refreshPagination();
	},
	autoSlide: function(){
		if(this.autoRotation) {
			var _this = this;
			if(this.timer) clearTimeout(this.timer);
			this.timer = setTimeout(function(){_this.nextSlide()}, this.switchTime);
		}
	},
	// add options and events
	Implements : [Options, Events]
});

// scroll gallery class
var scrollGallery = new Class({
	options: {
		btPrev: 'a.btn-prev',
		btNext: 'a.btn-next',
		holder: 'div',
		mover: '.slide',
		scrollEl: 'li',
		duration : 2000,
		autoSlide:false,
		effect: Fx.Transitions.Expo.easeOut
	},

	// create class
	initialize: function(element, options){
		this.setOptions(options);
		var _this = this;

		if (this.options.btNext)
				this.next = element.getElement(this.options.btNext);
			else this.next = false;
		if (this.options.btPrev)
				this.prev = element.getElement(this.options.btPrev);
			else this.prev = false;
		if (this.options.tabLinks)
				this.links = element.getElements(this.options.tabLinks);
			else this.links = false;

		this.holder = element.getElement(this.options.holder);
		this.mover = this.holder.getElements(this.options.mover)[0];
		this.scrollEl = this.holder.getElements(this.options.scrollEl);
		this.size = this.holder.getSize();
		this.step = this.size.x;

		this.animated = false;
		this.duration = this.options.duration;
		this.maxMargin = this.scrollEl.length * this.scrollEl[0].getSize().x - this.step;
		this.length = Math.floor(this.maxMargin/this.step)+1;
		this.current = 0;
		this.margin = 0;
		this.timer = false;

		this.mover.fx = new Fx.Tween(this.mover, {
			duration:_this.duration,
			transition: _this.options.effect,
			onStart: function(){
				_this.animated = true;
			},
			onComplete: function(){
				_this.animated = false;
			}
		});

		if (this.options.autoSlide) {
			this.autoSliding();
		}

		if (this.maxMargin%this.step == 0) this.length -= 1;

		this.mover.addEvent('mouseover', function(){
			if (_this.timer) clearInterval(_this.timer);
			return false;
		}).addEvent('mouseout', function(){

			//_this.autoSliding();
			return false;
		});

		if (this.next) {
			this.next.addEvent('click', function(){
				if (!_this.animated) {
					_this.nextSlide();
				}
				return false;
			});
		}
		if (this.prev) {
			this.prev.addEvent('click', function(){
				if (!_this.animated) {
					_this.prevSlide();
				}
				return false;
			});
		}
	},
	nextSlide: function(){
		this.current += 1;
		if (this.current > this.length) this.current = 0;
		this.margin = this.step*this.current;
		if (this.current >= this.length) this.margin = this.maxMargin;
		this.mover.fx.start('marginLeft', -(this.margin));
	},
	prevSlide: function(){
		this.current -= 1;
		if (this.current < 0) this.current = this.length;
		this.margin = this.step*this.current;
		if (this.current >= this.length) this.margin = this.maxMargin;
		this.mover.fx.start('marginLeft', -(this.margin));
	},
	autoSliding : function(){
		var _this = this;
		this.timer = setInterval(function(){_this.nextSlide()}, this.options.autoSlide);
	},

	// add options and events
	Implements : [Options, Events]
});

// popups function
function initLightbox() {
	var _zIndex = 1000;
	var _fadeSpeed = 350;
	var _faderOpacity = 0.55;
	var _faderBackground = '#000';
	var _faderId = 'lightbox-overlay';
	var _closeLink = 'a.close, input.cancel'
	var _closeButton = 'input.cancel';
	var _fader;
	var _lightbox = null;
	var _openers = $$('a.open-popup');
	var _page = $$('div')[0];
	var _minWidth = _page.getSize().x;

	// init popup fader
	var _body = $$('body')[0];
	_fader = document.createElement("DIV");
	_fader.id = _faderId;
	_body.grab(_fader);
	_fader = $(_faderId);
	_fader.setStyles({
		'backgroundColor':_faderBackground,
		'position':'absolute',
		'overflow':'hidden',
		'display':'none',
		'top':0,
		'left':0,
		'zIndex':_zIndex
	});
	_fader.setOpacity(_faderOpacity);

	// IE6 iframe fix
	if(document.uniqueID && document.compatMode && !window.XMLHttpRequest) {
		var _frame = document.createElement('IFRAME');
		_frame.src = 'javascript:false';
		_frame.frameborder = '0';
		_frame.scrolling = 'no';
		_frame.width = '100%';
		_frame.height = '100%';
		_frame.style.filter = "alpha(opacity=0)";
		_frame.style.zIndex = -1;
		_fader.grab(_frame);
	}

	// window height/width
	function getClientWidth(){return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth;}
	function getClientHeight(){return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;}

	// lightbox positioning function
	function positionLightbox() {
		if(_lightbox) {
			var _windowHeight = getClientHeight();
			var _windowWidth = getClientWidth();
			var _lightboxWidth = _lightbox.getSize().x;
			var _lightboxHeight = _lightbox.getSize().y;
			var _pageHeight = _page.getSize().y;

			if (_windowWidth < _minWidth) _fader.setStyle('width',_minWidth);
				else _fader.setStyle('width','100%');
			if (_windowHeight < _pageHeight) _fader.setStyle('height',_pageHeight);
				else _fader.setStyle('height',_windowHeight);

			_lightbox.setStyles({
				'position':'absolute',
				'zIndex':(_zIndex+1)
			});

			// vertical position
			if (_windowHeight > _lightboxHeight) {
				if(document.uniqueID && document.compatMode && !window.XMLHttpRequest) {
					_lightbox.setStyles({
						'position':'absolute',
						'top': document.documentElement.scrollTop + (_windowHeight - _lightboxHeight) / 2
					});
				} else {
					_lightbox.setStyles({
						'position':'fixed',
						'top': (_windowHeight - _lightboxHeight) / 2
					});
				}
			} else {
				_lightbox.setStyles({
					'position':'absolute',
					'top': 0
				});
				if(_fader.getSize().y < _lightboxHeight) _fader.setStyle('height',_lightboxHeight);
			}

			// horizontal position
			if (_fader.getSize().x > _lightbox.getSize().x) _lightbox.setStyles({'left':(_fader.getSize().x - _lightbox.getSize().x) / 2});
			else _lightbox.setStyles({'left': 0});
		}
	}

	// show/hide lightbox
	function toggleState(_state) {
		if(!_lightbox) return;
		if(_state) {
			var _faderFx = new Fx.Morph(_fader, {duration: _fadeSpeed, onComplete:function(){
				var _popupFx = new Fx.Morph(_lightbox, {duration: _fadeSpeed});
				_lightbox.setStyles({'display':'block','opacity':0});
				positionLightbox();
				_popupFx.start({'opacity':1});
			}});
			_fader.setStyles({'display':'block','opacity':0});
			_faderFx.start({'opacity':_faderOpacity});
		} else {
			var _popupFx = new Fx.Morph(_lightbox, {duration: _fadeSpeed, onComplete:function(){
				var _faderFx = new Fx.Morph(_fader, {duration: _fadeSpeed});
				_faderFx.start({'opacity':0});
			}});
			_popupFx.start({'opacity':0});
		}
	}

	// popup actions
	function initPopupActions(_obj) {
		if(!_obj.jsInit) {
			_obj.jsInit = true;
			// close link
			_obj.getElement(_closeLink).addEvent('click', function(){
				_lightbox = _obj;
				toggleState(false);
				return false;
		  });
		  if (_obj.getElement(_closeButton)) {
		    _obj.getElement(_closeButton).addEvent('click', function() {
		      _lightbox = _obj;
		      toggleState(false);
		      return false;
		    });
		  }
		}
	}

	// lightbox openers
	var didAddContent = false; // for some reason the add-content-popup button is being processed twice
	_openers.each(function(_el, i) {
	  var _opener = _el
	  var _target = _opener.href.substring(_opener.href.indexOf('#') + 1);
	  if (_target == 'add-content-popup') { if (didAddContent) return; else didAddContent = true; }
	  var _popup = $(_target);
	  if (_popup) {
	    // init actions for popup
	    initPopupActions(_popup);

	    // open popup
	    _opener.addEvent('click', function() {
	      if (_target == 'add-content-popup') {
	        prepareCustomContentLists();
	        window.location = '#';
	      }
	      _lightbox = _popup.setStyle('display', 'none');
	      toggleState(true);
	      /*if(_lightbox != _popup) {
	      _lightbox.fadeOut(_fadeSpeed,function(){
	      _lightbox = _popup.hide();
	      toggleState(true);
	      })
	      } else {
	      _lightbox = _popup.hide();
	      toggleState(true);
	      }*/
	      return false;
	    });
	  }
	});

	// event handlers
	window.addEvent('resize', function() {
		positionLightbox();
	});
	window.addEvent('scroll', function() {
		positionLightbox();
	});
	document.addEvent('keydown', function(e) {
		if (!e) evt = window.event;
		if (e.keyCode == 27) {
			toggleState(false);
		}
	});
	_fader.addEvent('click', function(){
		toggleState(false);
		return false;
	});
}

// show/hide stuff
function toggleBox(id) {
  var $e = $(id);
  if (!$e) return;
  if ($e.getStyle('display') == 'none')
    $e.setStyle('display', 'block');
  else
    $e.setStyle('display', 'none');
}

// popups init
function initPopups() {
	initPopup({
		popupClass:'drop',
		linkOpenClass:'opener',
		linkCloseClass:'close',
		openClass:'active',
		openEvent:'click'
	});
}
function initPopup(_popup) {
	if (!_popup.popupHolderTag) _popup.popupHolderTag = 'div';
	if (!_popup.popupTag) _popup.popupTag = 'div';
	if (!_popup.popupHolderClass) _popup.popupHolderClass = 'popup-holder';
	if (!_popup.popupClass) _popup.popupClass = 'popup';
	if (!_popup.linkOpenClass) _popup.linkOpenClass = 'open';
	if (!_popup.linkCloseClass) _popup.linkCloseClass = 'close';
	if (!_popup.openClass) _popup.openClass = 'active';
	if (!_popup.openEvent) _popup.openEvent = 'hover';

	var timer = [];
	var _popupHolderTag = document.getElementsByTagName(_popup.popupHolderTag);
	if (_popupHolderTag) {
		for (var i=0; i<_popupHolderTag.length; i++) {
			if (_popupHolderTag[i].className.indexOf(_popup.popupHolderClass) != -1) {
				var _popupLink = _popupHolderTag[i].getElementsByTagName('a');
				for (var j=0; j<_popupLink.length; j++) {
					_popupLink[j].parent = _popupHolderTag[i];
					if (_popupLink[j].className.indexOf(_popup.linkOpenClass) != -1) {
						if (_popup.openEvent == 'click') {
							_popupLink[j].onclick = function(){
								if (this.parent.className.indexOf(_popup.openClass) != -1) {
									this.parent.className = this.parent.className.replace(_popup.openClass,'');
								} else {
									this.parent.className += ' '+_popup.openClass;
								}
								return false;
							}
						} else {
							var _popupTag = _popupHolderTag[i].getElementsByTagName(_popup.popupTag);
							for (var k=0; k<_popupTag.length; k++) {
								if (_popupTag[k].className.indexOf(_popup.popupClass) != -1) {
									_popupTag[k].parent = _popupHolderTag[i];
									_popupTag[k].onmouseover = function(){
										if (timer[j]) clearTimeout(timer[j]);
										if (this.parent.className.indexOf(_popup.openClass) == -1) {
											this.parent.className += ' '+_popup.openClass;
										}
									}
									_popupTag[k].onmouseout = function(){
										var _this = this;
										timer[j] = setTimeout(function(){
											_this.parent.className = _this.parent.className.replace(_popup.openClass,'');
										},2);
									}
								}
							}
							_popupLink[j].onmouseover = function(){
								if (timer[j]) clearTimeout(timer[j]);
								if (this.parent.className.indexOf(_popup.openClass) == -1) {
									this.parent.className += ' '+_popup.openClass;
								}
							}
							_popupLink[j].onmouseout = function(){
								var _this = this;
								timer[j] = setTimeout(function(){
									_this.parent.className = _this.parent.className.replace(_popup.openClass,'');
								},2);
							}
						}
					} else if (_popupLink[j].className.indexOf(_popup.linkCloseClass) != -1) {
						_popupLink[j].onclick = function(){
							if (this.parent.className.indexOf(_popup.openClass) != -1) {
								this.parent.className = this.parent.className.replace(_popup.openClass,'');
							} else {
								this.parent.className += ' '+_popup.openClass;
							}
							return false;
						}
					}
				}
			}
		}
	}
}

function prepareCustomContentLists() {
  var allChecks = $$('input.add-content-chk');
  allChecks.each(function(el, i) { el.setProperty('checked', false); });
  var vizSections = $$('#custom-content-area .open-close');
  vizSections.each(function(el, i) {
    if (!el.hasClass('removed')) {
      var id = el.id.substr(11);
      var chk = $$('#chk-' + id);
      chk.setProperty('checked', true);
    }
  });
}

function updateCustomContent() {
  var checks = $$('input.add-content-chk:checked');
  var vizString = ',';
  checks.each(function(el, i) {
    vizString += el.value + ',';
  });
  var url = '/Members/UpdateContentState.aspx?visible=' + vizString + "&expanded=auto&redir=true";
  window.location = url;
}

//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2009 Aaron Newton <http://clientcide.com/>, Valerio Proietti <http://mad4milk.net> & the MooTools team <http://mootools.net/developers>, MIT Style License.

MooTools.More={version:"1.2.4.4",build:"6f6057dc645fdb7547689183b2311063bd653ddf"};Fx.Slide=new Class({Extends:Fx,options:{mode:"vertical",wrapper:false,hideOverflow:true},initialize:function(b,a){this.addEvent("complete",function(){this.open=(this.wrapper["offset"+this.layout.capitalize()]!=0);
if(this.open){this.wrapper.setStyle("height","");}if(this.open&&Browser.Engine.webkit419){this.element.dispose().inject(this.wrapper);}},true);this.element=this.subject=document.id(b);
this.parent(a);var d=this.element.retrieve("wrapper");var c=this.element.getStyles("margin","position","overflow");if(this.options.hideOverflow){c=$extend(c,{overflow:"hidden"});
}if(this.options.wrapper){d=document.id(this.options.wrapper).setStyles(c);}this.wrapper=d||new Element("div",{styles:c}).wraps(this.element);this.element.store("wrapper",this.wrapper).setStyle("margin",0);
this.now=[];this.open=true;},vertical:function(){this.margin="margin-top";this.layout="height";this.offset=this.element.offsetHeight;},horizontal:function(){this.margin="margin-left";
this.layout="width";this.offset=this.element.offsetWidth;},set:function(a){this.element.setStyle(this.margin,a[0]);this.wrapper.setStyle(this.layout,a[1]);
return this;},compute:function(c,b,a){return[0,1].map(function(d){return Fx.compute(c[d],b[d],a);});},start:function(b,e){if(!this.check(b,e)){return this;
}this[e||this.options.mode]();var d=this.element.getStyle(this.margin).toInt();var c=this.wrapper.getStyle(this.layout).toInt();var a=[[d,c],[0,this.offset]];
var g=[[d,c],[-this.offset,0]];var f;switch(b){case"in":f=a;break;case"out":f=g;break;case"toggle":f=(c==0)?a:g;}return this.parent(f[0],f[1]);},slideIn:function(a){return this.start("in",a);
},slideOut:function(a){return this.start("out",a);},hide:function(a){this[a||this.options.mode]();this.open=false;return this.set([-this.offset,0]);},show:function(a){this[a||this.options.mode]();
this.open=true;return this.set([0,this.offset]);},toggle:function(a){return this.start("toggle",a);}});Element.Properties.slide={set:function(b){var a=this.retrieve("slide");
if(a){a.cancel();}return this.eliminate("slide").store("slide:options",$extend({link:"cancel"},b));},get:function(a){if(a||!this.retrieve("slide")){if(a||!this.retrieve("slide:options")){this.set("slide",a);
}this.store("slide",new Fx.Slide(this,this.retrieve("slide:options")));}return this.retrieve("slide");}};Element.implement({slide:function(d,e){d=d||"toggle";
var b=this.get("slide"),a;switch(d){case"hide":b.hide(e);break;case"show":b.show(e);break;case"toggle":var c=this.retrieve("slide:flag",b.open);b[c?"slideOut":"slideIn"](e);
this.store("slide:flag",!c);a=true;break;default:b.start(d,e);}if(!a){this.eliminate("slide:flag");}return this;}});
