$(function(){
	$('a.with-popup').each(function(i){
		$(this).objlightbox({
			closer:'a.btn-close',
			fadeSpeed:300,
			IE:true
		});
	});
	$('div.promobox').galleryCircle({
		holderList: 'div.overflower',
		easing: 'swing',
		switchTime: 3000,
		duration : 700
	});
});

//lightbox
$.fn.objlightbox = function(options){return new objlightbox($(this).eq(0),options)}
function objlightbox(link, options) {this.init(link,options)}
objlightbox.prototype = {
	init:function(link,options){
		var el = this;
		//options
		el.options = $.extend({
			fadeSpeed:400,
			closer:'a.close',
			wrapper:'#wrapper',
			IE:false,
			zIndex:1000
		},options);	
		//popup & default css styles
		if ($.browser.msie && el.options.IE) el.popup = $(link.attr('href')).css({visibility:'hidden'})
		else el.popup = $(link.attr('href')).css({opacity:0,visibility:'hidden'});
		if (el.options.zIndex) el.popup.css({zIndex : el.options.zIndex});
		el.closer = $(el.popup.find(el.options.closer));
		el.popup.visible = false;
		objlightbox.prototype.activePopup = false;
		if (!objlightbox.prototype.firstRun) {
			objlightbox.prototype.firstRun = 'done'
			if ($.browser.msie && $.browser.version < 7) objlightbox.prototype.selects = $('select',document);
			//create fader
			if (!$('#fader').length) {
				$('body').append('<div id="fader"></div>');
				objlightbox.prototype.fader = $('#fader');
				objlightbox.prototype.fader.css({position:'absolute',top:0,left:0,background:'#000',opacity:0,display:'none'});	
				if (el.options.zIndex) objlightbox.prototype.fader.css({zIndex : el.options.zIndex-1});
			}
			//fader click event
			objlightbox.prototype.fader.click(function(){
				if (objlightbox.prototype.activePopup == false) el.hideFader()
				else objlightbox.prototype.activePopup.hidePopup(function(){el.hideFader()});
				return false;
			});
			//esc event
			$(document).keydown(function (e) {
				if (e.keyCode == 27) {
					if (objlightbox.prototype.activePopup == false) el.hideFader()
					else objlightbox.prototype.activePopup.hidePopup(function(){el.hideFader()});
					return false;
				}
			});
			//minWidth
			objlightbox.prototype.minWidth = $('body').css('min-width');
			if (objlightbox.prototype.minWidth == '0px' || typeof(objlightbox.prototype.minWidth) == 'undefined') {
				if (el.options.wrapper) {
					objlightbox.prototype.wrapper = $(el.options.wrapper);
					objlightbox.prototype.minWidth = $(el.options.wrapper).outerWidth();
				}
			}
			objlightbox.prototype.minWidth = parseInt(objlightbox.prototype.minWidth);
		}
		if ($.browser.msie && $.browser.version < 7) {
			el.popupSelects = $('select',el.popup);
			objlightbox.prototype.selects = objlightbox.prototype.selects.not(el.popupSelects);
		}
		//open event
		link.click(function(){
			if (objlightbox.prototype.activePopup == el) {return false;}
			if (objlightbox.prototype.activePopup) {
				objlightbox.prototype.activePopup.hidePopup(function(){
					el.showPopup()
					el.positioning(true);
				});
			} else {
				el.showFader(function(){el.showPopup()});
				el.positioning(true);
			} 
			return false;
		});
		//close event
		el.closer.click(function(){
			el.hidePopup(function(){el.hideFader()});
			return false;
		});
		//resize event
		$(window).resize(function(){
			if (el.popup.visible) el.positioning(false);
		});
	},
	showPopup:function(){
		var el = this;
		el.popup.visible = true;
		objlightbox.prototype.activePopup = el;
		if ($.browser.msie && el.options.IE) el.popup.css({visibility:'visible'})
		else el.popup.stop().css({'visibility':'visible'}).animate({opacity:1},el.options.fadeSpeed)
	},
	hidePopup:function(callback){
		var el = this;
		if ($.browser.msie && el.options.IE) {
			el.popup.css({left:'-9999px',top:'-9999px',visibility:'hidden'});
			el.popup.visible = false;
			objlightbox.prototype.activePopup = false;
			if ($.isFunction(callback)) callback();
		} else {
			el.popup.stop().animate({opacity:0},el.options.fadeSpeed,function(){
				el.popup.css({left:'-9999px',top:'-9999px',visibility:'hidden'});
				el.popup.visible = false;
				objlightbox.prototype.activePopup = false;
				if ($.isFunction(callback)) callback();
			});
		}
	},
	showFader:function(callback){
		var el = this;
		el.fader.stop().css({display:'block'}).animate({opacity:0.5},el.options.fadeSpeed,function(){
			if ($.isFunction(callback)) callback();
		});
		if ($.browser.msie && $.browser.version < 7) objlightbox.prototype.selects.css({'visibility': 'hidden'});
	},
	hideFader:function(){
		var el = this;
		el.fader.stop().animate({opacity:0},el.options.fadeSpeed,function(){
			el.fader.css({display:'none'});
			if ($.browser.msie && $.browser.version < 7) objlightbox.prototype.selects.css({'visibility': 'visible'});
		});
	},
	positioning:function(openFlag){
		var el = this;
		//x offset
		var windowW = $(window).width();
		var popupW = el.popup.outerWidth();
		if (windowW < objlightbox.prototype.minWidth) {
			el.popup.css({left:objlightbox.prototype.minWidth/2-popupW/2})
			el.fader.css({width:objlightbox.prototype.minWidth});
		} else {
			 el.popup.css({left:windowW/2-popupW/2});
			 el.fader.css({width:windowW})
		}
		//y offset
		var docH = $(document).height();
		if (openFlag) {
			var windowH = $(window).height();
			var popupH = el.popup.outerHeight();
			if (popupH < windowH) el.popup.css({top:windowH/2-popupH/2+$(window).scrollTop()});
			else el.popup.css({top:0});
		}
		el.fader.css({height:docH});
	}
}

/*--- gallery function ---*/
jQuery.fn.galleryCircle = function(_options){
	// defaults options
	var _options = jQuery.extend({
		btPrev: 'a.prev',
		btNext: 'a.next',
		holderList: '>div',
		scrollElParent: '>ul',
		scrollEl: '>li',
		numHolder: false,
		numCreate: false,
		step: false,
		innerMargin: 0,
		curPage: false,
		onClick: null,
		easing: 'swing',
		switchTime: false,
		duration : 1500
	},_options);

	return this.each(function(){
		var _this = jQuery(this);
		var _next = jQuery(_options.btNext, _this).length ? jQuery(_options.btNext, _this) : false;
		var _prev = jQuery(_options.btPrev, _this).length ? jQuery(_options.btPrev, _this) : false;
		var _holderList = jQuery(_options.holderList, _this);
		var _scrollElParent = jQuery(_options.scrollElParent, _holderList);
		var _scrollEl = jQuery(_options.scrollEl, _scrollElParent);
		var _numHolder = false ;
		if (_options.numHolder) _numHolder = jQuery(_options.numHolder, _this).length ? jQuery(_options.numHolder, _this) : false;
		var _step, _t = null;
		var _widthSum = 0;
		_scrollEl.each(function(){_widthSum += jQuery(this).outerWidth(true);})
		var _startPosition = _scrollEl.index(_scrollEl.filter('.active'));
		if (_startPosition==-1) _startPosition=0;
		_scrollEl.removeClass('active');
		var _easing = _options.easing;

		if (!_options.step) _step = _holderList.innerWidth();
		var _margin = _widthSum;
		_scrollElParent.append(_scrollEl.clone(true));
		_scrollElParent.prepend(_scrollEl.clone(true));

		var _offsetStartPosition =0;
		_offsetStartPosition = culcOffset(_startPosition);

		_scrollElParent.css('marginLeft', (-_margin+_options.innerMargin-_offsetStartPosition));

		//auto rotation
		if (_options.switchTime) {
			_t = setTimeout(function(){
				nextSlides();
			},_options.switchTime);
		}
		
		//button next "click"
		if (_next) {
			_next.click(function(){
				if (!_scrollElParent.is(':animated')) {
					if (jQuery.isFunction(_options.onClick)) _options.onClick.apply(_this);
					nextSlides();
				}
				return false;
			});
		}

		//button prev "click"
		if (_prev) {
			_prev.click(function(){
				if (!_scrollElParent.is(':animated')) {
					if (jQuery.isFunction(_options.onClick)) _options.onClick.apply(_this);
					prevSlides();
				}
				return false;
			});
		}

		//curent position
		function getCurElIndex(){
			var _curMargin = parseInt(_scrollElParent.css('marginLeft')) + _widthSum - _options.innerMargin;
			for(i=0; i < _scrollEl.length; i++){
				if (_curMargin == 0) return i;
				if (_curMargin <= _options.innerMargin) _curMargin += _scrollEl.eq(i).innerWidth();
				else _curMargin -= _scrollEl.eq(i).innerWidth();
				if (_curMargin == _options.innerMargin) return i+1;
			}
		}

		// offset of gallery if when activ element not first at start 
		function culcOffset(_ind){
			var _tmpcounter=0;
			var _pos=0;
			while (_tmpcounter < _ind){
				_pos += _scrollEl.eq(_tmpcounter).outerWidth(true);
				_tmpcounter++;
			};
			return _pos;
		}

		//go next slide
		function nextSlides(){
			if (_t) clearTimeout(_t);
			if (_options.step) {
				_curElIndex = getCurElIndex();
				_step = _scrollEl.eq(_curElIndex).innerWidth();
			};
			_margin = -parseInt(_scrollElParent.css('marginLeft'));
			_margin += _step;
			
			_scrollElParent.animate({'marginLeft':(-_margin+_options.innerMargin)}, {duration:_options.duration, easing: _easing, complete:function(){
				if (_margin >= _widthSum*2) {
					_margin = _widthSum + (_margin - _widthSum*2);
				}
				_scrollElParent.css({'marginLeft':-_margin+_options.innerMargin});
				jQuery.fn.galleryCircle.numListActive(_numHolder, _scrollEl);

				//autoslide
				if (_options.switchTime) {
					_t = setTimeout(function(){
						nextSlides();
					},_options.switchTime)
				}
			}});
		}

		//go prev slide
		function prevSlides(){
			if (_t) clearTimeout(_t);
			if (_options.step) {
				_curElIndex = getCurElIndex();
				if (_curElIndex == 0) _curElIndex= _scrollEl.length;
				_step = _scrollEl.eq(_curElIndex-1).innerWidth();
			};
			_margin = -parseInt(_scrollElParent.css('marginLeft'));
			_margin -= _step;
			_scrollElParent.animate({'marginLeft':(-_margin+_options.innerMargin)}, {duration:_options.duration, easing: _easing, complete:function(){
				if (_margin < _widthSum) {
					_margin = _widthSum*2 - (_widthSum - _margin);
				}
				_scrollElParent.css({'marginLeft':-_margin+_options.innerMargin});
				jQuery.fn.galleryCircle.numListActive(_numHolder, _scrollEl);

				//autoslide
				if (_options.switchTime) {
					_t = setTimeout(function(){
						nextSlides();
					},_options.switchTime)
				}
			}});
		}

		// Number list Create
		jQuery.fn.galleryCircle.numListCreate = function(_numHolder, _scrollEl){
			var _numListElC = '';
			for(var i=0; i<_scrollEl.length; i++){
				_numListElC += '<li><a href="">'+(i+1)+'</a></li>';
			}
			jQuery(_numHolder).html('<ul>'+_numListElC+'</ul>');
		};

		// Number list Activate
		jQuery.fn.galleryCircle.numListActive = function(_numHolder, _scrollEl){
			_curElIndex = getCurElIndex();
			if (jQuery(_options.curPage, _this).length && _options.curPage) jQuery(_options.curPage, _this).text('Pagina '+(getCurElIndex()+1)+'/'+_scrollEl.length);
			if (_numHolder) {
				jQuery('a',_numHolder).removeClass('active');
				jQuery('a',_numHolder).eq(_curElIndex).addClass('active');
			}
		};

		//click on control elemens
		function numClick() {
			jQuery(_options.numHolder, _this).find('a').click(function(){
				if (_t) clearTimeout(_t);
				var _aList = jQuery(_options.numHolder, _this).find('a');
				var _index = _aList.index(jQuery(this));
				_margin = _widthSum + _index * _scrollEl.outerWidth(true);
				_scrollElParent.animate({'marginLeft':(-_margin+_options.innerMargin)}, {duration:_options.duration, easing: _easing, complete:function(){
					if (_margin >= _widthSum*2) {
						_margin = _widthSum + (_margin - _widthSum*2);
					}
					_scrollElParent.css({'marginLeft':-_margin+_options.innerMargin});
					_aList.removeClass('active').eq(_index).addClass('active');

					//autoslide
					if (_options.switchTime) {
						_t = setTimeout(function(){
							nextSlides();
						},_options.switchTime)
					}
				}});
				return false;
			});
		};

		// init creating num list
		if (_options.numCreate) jQuery.fn.galleryCircle.numListCreate(_numHolder, _scrollEl);

		// pagination first init (example Page 2/6)
		if (jQuery(_options.curPage, _this).length && _options.curPage) jQuery(_options.curPage, _this).text('Pagina '+(getCurElIndex()+1)+'/'+_scrollEl.length);

		// init activate num list item and init numClick()
		if (_options.numHolder) {
			jQuery.fn.galleryCircle.numListActive(_numHolder, _scrollEl);
			numClick();
		}
	});
}

var transparentImage = "http://www.advantagebfs.com/web-new/wp-content/themes/advantagebfs/images/none.gif";

function fixTrans()
{
	if (typeof document.body.style.maxHeight == 'undefined') {

	var imgs = document.getElementsByTagName("img");
	
	for (i = 0; i < imgs.length; i++)
	{	
		if (imgs[i].src.indexOf(transparentImage) != -1)
		{
			return;
		}

		if (imgs[i].src.indexOf(".png") != -1)
			{
				var src = imgs[i].src;
				imgs[i].src = transparentImage;
				imgs[i].runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
				imgs[i].style.display = "block";
			}
		}	
	}
}

if (document.all && !window.opera)
	attachEvent("onload", fixTrans);
