// init page
window.addEvent('domready', function() {
	initPopups();
	initToolTip();
	initLightbox();
	initRadioCheck();
	initSqueezeBox();
	initAccordion();
});

function initAccordion(){
	var _acc = $$('.accordion');
	var _aClass = 'active';
	var _el = 'li';
	var _opener = 'a';
	var _slider = 'div'
	var _d = 500;
	_acc.each(function(obj){
		obj.el = obj.getElements(_el);
		obj.el.each(function(el, i){
			el.opener = el.getElements(_opener)[0];
			el.slider = el.getElements(_slider)[0];
			if(el.slider){
				if(!el.hasClass(_aClass)) el.slider.setStyles({'height':'0','display':'none'});
				el.anim = new Fx.Tween(el.slider,{property: 'height', duration: _d, link : 'cancel'});
				el.anim.addEvent('complete', function(w) {
					if(w.offsetHeight> 0) {
						w.setStyle('height','');
					}else{
						w.getElements(_el).each(function(e){e.removeClass(_aClass)});
						w.getElements(_slider).each(function(ul){
							ul.setStyles({'height':'0','display':'none'});
						});
					}
				});
			};
			el.opener.onclick = function(){
				var li = this.getParents(_el)[0];
				var slide = li.getElements(_slider)[0];
				var parent = li.getParents(_slider)[0];
				if(slide){
					if(li.hasClass(_aClass)){
						li.anim.start(0);
						li.removeClass(_aClass);
					}else{
						slide.setStyles({'height':'auto','display':'block'});
						li.h = slide.offsetHeight;
						slide.setStyles({'height':'0'});
						var _cur;
						parent.getElements(_el).each(function(w){
							if(w.getParent(_slider)==parent && w.hasClass(_aClass)){
								_cur = w;
							};
						});
						if(_cur){
							_cur.anim.start(0);
							_cur.removeClass(_aClass);
						}
						li.anim.start(li.h);
						li.addClass(_aClass);
					}
					return false;
				}else{
					//go by link
				}
			}
		})
	})
}

// radio highlight states
function initRadioCheck() {
	var _activeClass = 'checked';

	$$('.category-box').each(function(obj, ind){
		var _hold = obj;
		var _items = _hold.getElements('li');

		// refresh state
		function refreshStates() {
			_items.each(function(obj){
				var _item = obj;
				var _input = _item.getElement('input[type="radio"]');
				if(_input.checked) _item.addClass(_activeClass);
				else _item.removeClass(_activeClass);
			});
		}

		// items control
		_items.each(function(obj){
			var _item = obj;
			var _input = _item.getElement('input[type="radio"]');
			_input.addEvent('click',function(){
				refreshStates()
			})
		})
		refreshStates();
	})
}

// tooltip
function initToolTip() {
	$$('a.tooltip-link').addEvents({
		'mousemove': function(event) {
			var item = $(this);
			var rel = item.getProperty('rel');
			if(rel) {
				var tooltip = $(rel);
				if(tooltip) {
					tooltip.setStyles({
						'top': event.page.y - 100,
						'left': event.page.x - 365,
						'display': 'block'
					})
				}
			}
		},
		'mouseleave': function() {
			$$('.tooltip').setStyle('display', 'none');
		}
	})
}

// squeeze box
function initSqueezeBox() {
	/*
	if(SqueezeBox) {
		SqueezeBox.initialize();
		SqueezeBox.assign($$('a[rel=boxed]'));
	}
	*/
}

// light function
	var _zIndex ;
	var _fadeSpeed ;
	var _faderOpacity;
	var _faderBackground;
	var _faderId;
	var _closeLink;
	var _fader;
	var _lightbox;
	var _openers;
	var _page;
	var _minWidth;
	var _body;
function initLightbox() {
	

	 _zIndex = 1000;
	 _fadeSpeed = 350;
	 _faderOpacity = 0.35;
	 _faderBackground = '#000';
	 _faderId = 'lightbox-overlay';
	 _closeLink = 'span.btn-close, a.close, a.cancel';
	 _fader;
	 _lightbox = null;
	 _openers = $$('a.open-popup');
	 _page = $('wrapper');
	 _minWidth = 1002;
	 _body;
	
	// init popup fader
	 _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);
	}

	
	
		// lightbox openers
	_openers.each(function(_el, i){
		var _opener = _el
		var _target = _opener.href.substring(_opener.href.indexOf('#')+1);
	
		var _popup = $(_target);
		if(_popup) {
			// init actions for popup
			initPopupActions(_popup);

			// open popup
			_opener.addEvent('click', function(){
				_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();
	});
	document.addEvent('keydown', function(e) {
		if (!e) evt = window.event;
		if (e.keyCode == 27) {
			toggleState(false);
		}
	});
	_fader.addEvent('click', function(){
		toggleState(false);
		return false;
	});
	
}

// 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;
		//var top = document.documentElement.scrollTop + (_windowHeight - _lightboxHeight) / 2;
		
		if (_windowWidth < _minWidth) _fader.setStyle('width',_minWidth);
			else _fader.setStyle('width','100%');
		if (_windowHeight < _pageHeight) _fader.setStyle('height',_pageHeight);
			else _fader.setStyle('height',_windowHeight);
		
		//if (_lightboxHeight > _windowHeight) top = document.documentElement.scrollTop;
		// vertical position
		_lightbox.setStyles({
			'position':'absolute',
			'top': $(window).getScroll().y,
			'zIndex':(_zIndex+1)
		});
		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});
	}
}

function OpenPop(which){
	positionLightbox();
	_popup = $(which);
	_lightbox = _popup.setStyle('display','none');
	initPopupActions(_popup);
		toggleState(true);
	
}
// 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;
		});
	}
}








// popups init
function initPopups() {
	initPopup({
		openEvent:'hover'
	});
	initPopup({
		popupHolderClass:'popup-hover'
	});
}

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;
						}
					}
				}
			}
		}
	}
}
