
jQuery(function(){
	initPopups();
	initIntroPopup();
	jQuery('div.gallery').vvGalleryScroll({
		holderList: 'div.gallery-inner',
		btnPrev: 'a.link-prev',
		btnNext: 'a.link-next',
		circleSlide: false
	});
	initArticleGallery({
		_gallery: 'div.article-gallery',
		_slideBox: 'ul.gallery-list',
		_next: 'a.link-next',
		_prev: 'a.link-prev',
		_imageHi: 'a.image-hi',
		_imageLow: 'a.image-low',
		_patch: 'images/',
		_speedAnimation: 300
	});
	initArticleGallery({
		_gallery: 'div.intro-gallery',
		_slideBox: 'ul.gallery-list',
		_next: 'a.link-next',
		_prev: 'a.link-prev',
		_imageHi: 'a.image-hi',
		_imageLow: 'a.image-low',
		_patch: 'images/',
		_speedAnimation: 300
	});
	initPrint();
});

// initArticleGallery
function initArticleGallery(options){
    jQuery(options._gallery).each(function() {
        var _this = jQuery(this),
			_next = jQuery(options._next, _this),
			_prev = jQuery(options._prev, _this),
			_imageHi = jQuery(options._imageHi, _this),
			_imageLow = jQuery(options._imageLow, _this),
			_patch = options._patch,
			_speedAnimation = options._speedAnimation,
			_slideBox = jQuery(options._slideBox, _this),
			_slideBoxEl = jQuery('>li', _slideBox),
			_step = _slideBoxEl.eq(0).outerWidth(),
			_index = 0;

        _slideBoxEl.eq(_index).addClass('active');

        if (jQuery.browser.msie && jQuery.browser.version < 9) {
            _slideBoxEl.hide();
            _slideBoxEl.eq(_index).show();
        } else {
            _slideBoxEl.css({
                opacity: 0,
                zIndex: 1
            });
            _slideBoxEl.eq(_index).css({
                opacity: 1,
                zIndex: 2
            });
        }

        var displayProductID = jQuery('#displayProductID').val();
        _imageHi.attr('href', '/layouts/Daloon/Daloon-Downloadable-Image.ashx?displayProduct=' + displayProductID + '&index=' + _index);
        _imageLow.attr('href', '/layouts/Daloon/Daloon-Downloadable-Image.ashx?displayProduct=' + displayProductID + '&index=' + _index + "&low=1");

        _prev.click(function() {
            if (_index > 0) _index--;
            else _index = _slideBoxEl.length - 1;
            slideEl(_index);
            return false;
        });

        _next.click(function() {
            if (_index < _slideBoxEl.length - 1) _index++;
            else _index = 0;
            slideEl(_index);
            return false;
        });

        function slideEl(_index) {
            if (jQuery.browser.msie && jQuery.browser.version < 9) {
                _slideBoxEl.hide().css({
                    zIndex: 1
                });
                _slideBoxEl.eq(_index).show().css({
                    zIndex: 2
                });
            } else {
                _slideBoxEl.stop().animate({ opacity: 0 }, _speedAnimation).css({
                    zIndex: 1
                });
                _slideBoxEl.eq(_index).stop().animate({ opacity: 1 }, _speedAnimation).css({
                    zIndex: 2
                });
            }

            _slideBoxEl.removeClass('active').eq(_index).addClass('active');
            _imageHi.attr('href', '/layouts/Daloon/Daloon-Downloadable-Image.ashx?displayProduct=' + displayProductID + '&index=' + _index);
            _imageLow.attr('href', '/layouts/Daloon/Daloon-Downloadable-Image.ashx?displayProduct=' + displayProductID + '&index=' + _index + "&low=1");
        }
    })
}

// initIntroPopup
function initIntroPopup(){
	var _zIndex = 1000;
	var _fadeSpeed = 350;
	var _faderOpacity = 0.65;
	var _faderBackground = '#000';
	var _faderId = 'lightbox-overlay';
	var _closeLink = 'a.btn-close, a.close, a.cancel';
	var _fader;
	var _lightbox = jQuery('#intro-lighbox');
	var _page = jQuery(document);
	var _minWidth = jQuery('body > div:eq(0)').outerWidth();
	var _scroll = false;
	
	// init popup fader
	_fader = jQuery('#'+_faderId);
	if(!_fader.length) {
		_fader = jQuery('<div />');
		_fader.attr('id',_faderId);
		jQuery('body').append(_fader);
	}
	_fader.css({
		opacity:_faderOpacity,
		backgroundColor:_faderBackground,
		position:'absolute',
		overflow:'hidden',
		display:'none',
		top:0,
		left:0,
		zIndex:_zIndex
	});
	
	// IE6 iframe fix
	if(jQuery.browser.msie && jQuery.browser.version < 7) {
		if(!_fader.children().length) {
			var _frame = jQuery('<iframe src="javascript:false" frameborder="0" scrolling="no" />');
			_frame.css({
				opacity:0,
				width:'100%',
				height:'100%'
			});
			var _frameOverlay = jQuery('<div>');
			_frameOverlay.css({
				top:0,
				left:0,
				zIndex:1,
				opacity:0,
				background:'#000',
				position:'absolute',
				width:'100%',
				height:'100%'
			});
			_fader.empty().append(_frame).append(_frameOverlay);
		}
	}
	
	// lightbox positioning function
	function positionLightbox() {
		if(_lightbox) {
			var _windowHeight = jQuery(window).height();
			var _windowWidth = jQuery(window).width();
			var _lightboxWidth = _lightbox.outerWidth();
			var _lightboxHeight = _lightbox.outerHeight();
			var _pageHeight = _page.height();
			
			if (_windowWidth < _minWidth) _fader.css('width',_minWidth);
				else _fader.css('width','100%');
			if (_windowHeight < _pageHeight) _fader.css('height',_pageHeight);
				else _fader.css('height',_windowHeight);
			
			_lightbox.css({
				position:'absolute',
				zIndex:(_zIndex+1)
			});
			
			// vertical position
			if (_windowHeight > _lightboxHeight) {
				if (jQuery.browser.msie && jQuery.browser.version < 7) {
					_lightbox.css({
						position:'absolute',
						top: parseInt(jQuery(window).scrollTop()) + (_windowHeight - _lightboxHeight) / 2
					});
				} else {
					_lightbox.css({
						position:'fixed',
						top: (_windowHeight - _lightboxHeight) / 2
					});
				}
			} else {
				var _faderHeight = _fader.height();
				if(_faderHeight < _lightboxHeight) _fader.css('height',_lightboxHeight);
				if (!_scroll) {
					if (_faderHeight - _lightboxHeight > parseInt(jQuery(window).scrollTop())) {
						_faderHeight = parseInt(jQuery(window).scrollTop())
						_scroll = _faderHeight;
					} else {
						_scroll = _faderHeight - _lightboxHeight;
					}
				}
				_lightbox.css({
					position:'absolute',
					top: _scroll
				});
			}
			
			// horizontal position
			if (_fader.width() > _lightbox.outerWidth()) _lightbox.css({left:(_fader.width() - _lightbox.outerWidth()) / 2});
			else _lightbox.css({left: 0});
		}
	}
	if(_lightbox.length > 0){
		toggleState(true)
	}
	// show/hide lightbox
	function toggleState(_state) {
		if(!_lightbox) return;
		if(_state) {
			_fader.fadeIn(_fadeSpeed,function(){
				_lightbox.fadeIn(_fadeSpeed);
			});
			_scroll = false;
			positionLightbox();
		} else {
			_lightbox.fadeOut(_fadeSpeed,function(){
				_fader.fadeOut(_fadeSpeed);
				_scroll = false;
			});
		}
	}
	
	// popup actions
	_lightbox.find(_closeLink).click(function(){
		toggleState(false);
		return false;
	});
	
	// event handlers
	jQuery(window).resize(positionLightbox);
	jQuery(window).scroll(positionLightbox);
}

// popups function
function initPopups() {
	var _zIndex = 1000;
	var _fadeSpeed = 350;
	var _faderOpacity = 0.65;
	var _faderBackground = '#000';
	var _faderId = 'lightbox-overlay';
	var _closeLink = 'a.btn-close, a.close, a.cancel';
	var _fader;
	var _lightbox = null;
	var _ajaxClass = 'ajax-load';
	var _openers = jQuery('a.open-popup');
	var _page = jQuery(document);
	var _minWidth = jQuery('body > div:eq(0)').outerWidth();
	var _scroll = false;

	// init popup fader
	_fader = jQuery('#'+_faderId);
	if(!_fader.length) {
		_fader = jQuery('<div />');
		_fader.attr('id',_faderId);
		jQuery('body').append(_fader);
	}
	_fader.css({
		opacity:_faderOpacity,
		backgroundColor:_faderBackground,
		position:'absolute',
		overflow:'hidden',
		display:'none',
		top:0,
		left:0,
		zIndex:_zIndex
	});

	// IE6 iframe fix
	if(jQuery.browser.msie && jQuery.browser.version < 7) {
		if(!_fader.children().length) {
			var _frame = jQuery('<iframe src="javascript:false" frameborder="0" scrolling="no" />');
			_frame.css({
				opacity:0,
				width:'100%',
				height:'100%'
			});
			var _frameOverlay = jQuery('<div>');
			_frameOverlay.css({
				top:0,
				left:0,
				zIndex:1,
				opacity:0,
				background:'#000',
				position:'absolute',
				width:'100%',
				height:'100%'
			});
			_fader.empty().append(_frame).append(_frameOverlay);
		}
	}

	// lightbox positioning function
	function positionLightbox() {
		if(_lightbox) {
			var _windowHeight = jQuery(window).height();
			var _windowWidth = jQuery(window).width();
			var _lightboxWidth = _lightbox.outerWidth();
			var _lightboxHeight = _lightbox.outerHeight();
			var _pageHeight = _page.height();

			if (_windowWidth < _minWidth) _fader.css('width',_minWidth);
				else _fader.css('width','100%');
			if (_windowHeight < _pageHeight) _fader.css('height',_pageHeight);
				else _fader.css('height',_windowHeight);

			_lightbox.css({
				position:'absolute',
				zIndex:(_zIndex+1)
			});

			// vertical position
			if (_windowHeight > _lightboxHeight) {
				if (jQuery.browser.msie && jQuery.browser.version < 7) {
					_lightbox.css({
						position:'absolute',
						top: parseInt(jQuery(window).scrollTop()) + (_windowHeight - _lightboxHeight) / 2
					});
				} else {
					_lightbox.css({
						position:'fixed',
						top: (_windowHeight - _lightboxHeight) / 2
					});
				}
			} else {
				var _faderHeight = _fader.height();
				if(_faderHeight < _lightboxHeight) _fader.css('height',_lightboxHeight);
				if (!_scroll) {
					if (_faderHeight - _lightboxHeight > parseInt(jQuery(window).scrollTop())) {
						_faderHeight = parseInt(jQuery(window).scrollTop())
						_scroll = _faderHeight;
					} else {
						_scroll = _faderHeight - _lightboxHeight;
					}
				}
				
				if (_scroll < 0)
				    _scroll = 0;
				_lightbox.css({
					position:'absolute',
					top: _scroll
				});
			}

			// horizontal position
			if (_fader.width() > _lightbox.outerWidth()) _lightbox.css({left:(_fader.width() - _lightbox.outerWidth()) / 2});
			else _lightbox.css({left: 0});
		}
	}

	// show/hide lightbox
	function toggleState(_state) {
		if(!_lightbox) return;
		if(_state) {
			_fader.fadeIn(_fadeSpeed,function(){
				_lightbox.fadeIn(_fadeSpeed);
			});
			_scroll = false;
			positionLightbox();
		} else {
			_lightbox.fadeOut(_fadeSpeed,function(){
				_fader.fadeOut(_fadeSpeed);
				_scroll = false;
			});
			jQuery('html').removeClass('print-active');
			jQuery('.product-info').removeClass('print-active-box');
		}
	}

	// popup actions
	function initPopupActions(_obj) {
		if(!_obj.get(0).jsInit) {
			_obj.get(0).jsInit = true;
			// close link
			_obj.find(_closeLink).click(function(){
				_lightbox = _obj;
				toggleState(false);
				return false;
			});
		}
	}

	// lightbox openers
	_openers.each(function() {
	    var _opener = jQuery(this);
	    var _target = _opener.attr('href');

	    // popup load type - ajax or static
	    if (_opener.hasClass(_ajaxClass)) {
	        _opener.click(function() {
	            // ajax load
	            if (jQuery('div[rel*="' + _target + '"]').length == 0) {
	                jQuery.ajax({
	                    url: _target,
	                    type: "POST",
	                    dataType: "html",
	                    success: function(msg) {
	                        // append loaded popup
	                        _lightbox = jQuery(msg);
	                        _lightbox.find('img').load(positionLightbox)
	                        _lightbox.attr('rel', _target).hide().css({
	                            position: 'absolute',
	                            zIndex: (_zIndex + 1),
	                            top: -9999,
	                            left: -9999
	                        });
	                        jQuery('body').append(_lightbox);

	                        // init js for lightbox
	                        initPopupActions(_lightbox);

	                        // show lightbox
	                        toggleState(true);
	                    },
	                    error: function(msg) {
	                        alert('AJAX error!');
	                        return false;
	                    }
	                });
	            } else {
	                _lightbox = jQuery('div[rel*="' + _target + '"]');
	                toggleState(true);
	            }
	            return false;
	        });
	    } else {
	        if (jQuery(_target).length) {
	            // init actions for popup
	            var _popup = jQuery(_target);
	            initPopupActions(_popup);
	            // open popup
	            _opener.click(function() {
	                if (_lightbox) {
	                    _lightbox.fadeOut(_fadeSpeed, function() {
	                        _lightbox = _popup.hide();
	                        toggleState(true);
	                    })
	                } else {
	                    _lightbox = _popup.hide();
	                    toggleState(true);
	                }
	                return false;
	            });
	        }
	    }
	});

	// event handlers
	jQuery(window).resize(positionLightbox);
	jQuery(window).scroll(positionLightbox);
	jQuery(document).keydown(function (e) {
		if (!e) evt = window.event;
		if (e.keyCode == 27) {
			toggleState(false);
		}
	})
	_fader.click(function(){
		if(!_fader.is(':animated')) toggleState(false);
		return false;
	})
}

jQuery.fn.vvGalleryScroll = function(_options){
	// defaults options	
	var _options = jQuery.extend({
		btnPrev: 'a.link-prev',
		btnNext: 'a.link-next',
		holderList: 'div',
		scrollElParent: '>ul',
		scrollEl: '>li',
		thumbs: false,
		thumbsCreate: false,
		thumbsSelector: 'li',
		duration : 700,
		step: false,
		pause: false,
		counter: false,
		event: 'click',
		circleSlide: true,
		disableClass: 'disable',
		autoSlide:false,
		onBeforeChange: null,
		onChange: null
	},_options);

	return this.each(function(){
		var _this = this;

		var _holderBlock = jQuery(_options.holderList,_this);
		var _moover = jQuery(_options.scrollElParent,_holderBlock).css('position','relative');
		var _liWidth = jQuery(_options.scrollEl,_moover).outerWidth(true);
		var _gWidth = _holderBlock.width();
		var _liSum = jQuery(_options.scrollEl,_moover).length * _liWidth;
		var _thumbs = _options.thumbs ? (jQuery(_options.thumbs,_this).length ? jQuery(_options.thumbs,_this): false) : false;
		var _step = 0, _t = null, _mM=0;
		var _pause =  _options.pause ? jQuery(_options.pause,_this) : false;
		var _play = _options.play ? jQuery(_options.play,_this) : false;
		var _a = 0;
		if(_options.thumbsCreate){
			var _html = '<ul>';
			for(var i=0; i<jQuery(_options.scrollEl,_moover).length; i++) {
				_html+='<li><a href="#">'+(i+1)+'</a></li>';
			};
			_html += '</ul>';
			_thumbs.html(_html);
			_thumbs = _thumbs.find(_options.thumbsSelector);
		}
		if(_thumbs) _thumbs.removeClass('active').eq(_a).addClass('active');
//step
		if(typeof(_options.step)=='number') _step = _options.step;
		else if (!_options.step) _step = _gWidth; else _step = _options.step*_liWidth;
		if(!_options.circleSlide){
			if(_mM == 0) jQuery(_options.btnPrev,_this).addClass(_options.disableClass);
			else if(_mM ==_liSum-_gWidth) jQuery(_options.btnNext,_this).addClass(_options.disableClass);
		};
//counter
		function counter(){
		    if (_options.counter && jQuery(_options.counter, _this).length) {
		        var _counter = jQuery(_options.counter, _this);
				if(!_options.step){
				    jQuery(_options.counter, _this).find('span:first').text(_a + 1);
				    jQuery(_options.counter, _this).find('span:last').text(jQuery(_options.scrollEl, _moover).length);
				}else{
					//
				};
			};
		};
		counter();
//prev btn
		if(jQuery(_options.btnPrev, _this)){
			jQuery(_options.btnPrev, _this).bind(_options.event, function(){
				if(!jQuery(this).hasClass(_options.disableClass)){
					jQuery(_options.btnNext,_this).removeClass(_options.disableClass);
					if(_mM - _step<0) (_mM!=0) ? _mM=0 : (_options.circleSlide ? _mM = _liSum - _gWidth : jQuery(_options.btnPrev,_this).addClass(_options.disableClass));
					else _mM -= _step;
					if(_a!= 0) _a--;
					else _a =jQuery(_options.scrollEl,_moover).length-1;
					_this.rotate(_mM);
				}
				return false;
			});
		};
//next btn
		if(jQuery(_options.btnNext, _this)){
			jQuery(_options.btnNext, _this).bind(_options.event, function(){
				if(!jQuery(this).hasClass(_options.disableClass)){
					jQuery(_options.btnPrev,_this).removeClass(_options.disableClass);
					if(_mM + _step >_liSum - _gWidth) (_mM!= _liSum - _gWidth) ? (_mM = _liSum - _gWidth) : (_options.circleSlide ? _mM = 0 : jQuery(_options.btnNext,_this).addClass(_options.disableClass));
					else _mM += _step;
					if(_a!= jQuery(_options.scrollEl,_moover).length-1) _a++;
					else _a =0;
					_this.rotate(_mM);
				}
				return false;
			});
		};
//animate
		_this.rotate = function(_mM){
			if(_t) clearTimeout(_t);
			if (jQuery.isFunction(_options.onBeforeChange)) {
				_options.onBeforeChange.apply(_this);
			}
			if(!_options.circleSlide){
				if(_mM == 0) jQuery(_options.btnPrev,_this).addClass(_options.disableClass);
				else if(_mM ==_liSum-_gWidth) jQuery(_options.btnNext,_this).addClass(_options.disableClass);
			};
			counter();
			if(_thumbs) _thumbs.removeClass('active').eq(_a).addClass('active');
			_moover.animate({left: -_mM},{duration: _options.duration, queue: false, complete: function(){
				if (jQuery.isFunction(_options.onChange)) {
					_options.onChange.apply(_this);
				}
				_this.autoslide();
			}});
		};
//autoslide
		_this.autoslide = function(){
			if(_options.autoSlide && _liSum >= _gWidth){
				if(_t) clearTimeout(_t);
				_t = setTimeout(function(){
					jQuery(_options.btnPrev,_this).removeClass(_options.disableClass);
					if(_mM + _step >_liSum - _gWidth) (_mM!= _liSum - _gWidth) ? (_mM = _liSum - _gWidth) : (_options.circleSlide ? _mM = 0 : jQuery(_options.btnNext,_this).addClass(_options.disableClass));
					else _mM += _step;
					if(_a!= jQuery(_options.scrollEl,_moover).length-1) _a++;
					else _a =0;
					_this.rotate(_mM);
				}, _options.autoSlide);
			};
		};
		_this.autoslide();
//disable btns next/prev if need
		if (_liSum <= _gWidth) {
			jQuery(_options.btnPrev,_this).addClass(_options.disableClass).unbind(_options.event).click(function(){return false;});
			jQuery(_options.btnNext,_this).addClass(_options.disableClass).unbind(_options.event).click(function(){return false;});
		};
//thumbs
		if(_thumbs){
			_thumbs.click(function(){
				var _ind = _thumbs.index(this);
				_a = _ind;
				_thumbs.removeClass('active').eq(_a).addClass('active');
				_mM = _step*_ind;
				_this.rotate(_mM);
				return false;
			});
		}
	//play|pause
		if(_pause && _pause.length){
			_pause.click(function(){
				_play.removeClass('active');
				jQuery(this).addClass('active');
				if(_t) clearTimeout(_t);
				return false;
			});
		};
		if(_play && _play.length){
			_play.click(function(){
				_pause.removeClass('active');
				jQuery(this).addClass('active');
				_this.autoslide();
				return false;
			});
		};
	});
};

// initPrint
function initPrint(){
	var _btn = jQuery('.product-info a.initPrint');
	
	_btn.click(function(){
		var _this = jQuery(this);
		jQuery('html').addClass('print-active');
		_this.parents('.product-info').addClass('print-active-box');
		window.print();
		return false
	})
}
