/*--- popup function ---*/
function initPopup(){
	if($('#fader').length == 0) $('body').append('<div id="fader"></div>');
	var _fader = $('#fader');
	_fader.hide();
	var sel_list;
	var _popup = false;
	var popup_btn =$('a.with-popup'); 
	 $('a.with-popup').each(function(){
		var _el = this;
		_el._popup = false;
		_el.onclick = function(){
			if(_el._popup){
				_popup = _el._popup;
				showPopup();
			}
			else{
				for (var i = 0; i < popup_btn.length; i++) {
					if (popup_btn.get(i).title == _el.title && popup_btn.get(i)._popup) {
						_el._popup = popup_btn.get(i)._popup;
						break;
					}
				}
				if(_el._popup){
					_popup = _el._popup;
					showPopup();
				}
				else{
					$.ajax({
						url: _el.title,
						dataType:'html',
						success: function(_html){
							_el._popup = $(_html);
							_el._popup.css('display', 'none');
							$('body').append(_el._popup);
							_el._popup.find('.close, .btn-close, .btn-close2').click(function(){
								if($.browser.msie){
									_popup.hide();
									_fader.fadeOut(200, function(){
										if($.browser.version < 7) sel_list.css('visibility', 'visible');
									});
									_popup = false;
								}
								else{
									_popup.fadeOut(400, function(){
										_fader.fadeOut(200);
										_popup = false;
									});
								}
								$('div.optionsDivVisible').removeClass('optionsDivVisible').addClass('optionsDivInvisible');
								return false;
							});
							$('.popup-content-inner2').each(function(){
								if(!this._f){
									this._f = true;
									$(this).gallery({
										duration: 1000,
										effect: 'fade',
										fadeEl: 'ul.popup-gallery > li',
										switcher: '.visual-list a'
									});
								}
							});
							_popup = _el._popup;
							showPopup();
						}
					});
				}
			}
			return false;
		}
	});
	_fader.click(function(){
		if(_popup){
			if($.browser.msie){
				_popup.hide();
				_fader.fadeOut(200, function(){
					if($.browser.version < 7) sel_list.css('visibility', 'visible');
				});
				_popup = false;
			}
			else{
				_popup.fadeOut(400, function(){
					_fader.fadeOut(200);
					_popup = false;
				});
			}
			$('div.optionsDivVisible').removeClass('optionsDivVisible').addClass('optionsDivInvisible');
		}
		return false;
	});
	$(document).keydown(function(e){
		if(!e)evt = window.event;
		if(e.keyCode == 27 && _popup){
			if($.browser.msie){
				_popup.hide();
				_fader.fadeOut(200, function(){
					if($.browser.version < 7) sel_list.css('visibility', 'visible');
				});
				_popup = false;
			}
			else{
				_popup.fadeOut(400, function(){
					_fader.fadeOut(200);
					_popup = false;
				});
			}
			$('div.optionsDivVisible').removeClass('optionsDivVisible').addClass('optionsDivInvisible');
		}
	});
	 function showPopup(){
		_fader.css({
			opacity: 0,
			height: initH(),
			display:'block'
		});
		_popup.css({top: $(window).scrollTop()});
		if($.browser.msie && $.browser.version < 7){
			sel_list = $('#wrapper select:visible');
			sel_list.css('visibility', 'hidden');
		}
		_fader.fadeTo(400, 0.5, function(){
			if(_popup){
				if($.browser.msie) _popup.show();
				else _popup.fadeIn(200);
				_popup.css({top: $(window).scrollTop()+ ($(window).height() - _popup.outerHeight())/2});
				if(initH() < _popup.outerHeight()+_popup.offset().top) _fader.height(_popup.outerHeight()+_popup.offset().top);
				$('div.optionsDivVisible').removeClass('optionsDivVisible').addClass('optionsDivInvisible');
				initCustomForms();
			}
		});
		
	}
	function initH(){
		var _h = $('#wrapper').outerHeight()+$('#footer').outerHeight();
		if(_h < $(window).height()) _h = $(window).height();
		if(_h < $('body').height()) _h = $('body').height();
		return _h;
	}
}

/* Gallery */
jQuery.fn.gallery = function(_options){
	// defaults options	
	var _options = jQuery.extend({
		duration: 700,
		autoSlide: false,
		slideElement: 1,
		effect: false,
		fadeEl: 'ul',
		switcher: 'ul > li',
		disableBtn: false,
		next: 'a.link-next, a.btn-next, a.next',
		prev: 'a.link-prev, a.btn-prev, a.prev',
		circle: true
	},_options);

	return this.each(function(){
		var _hold = $(this);
		if (!_options.effect) var _speed = _options.duration;
		else var _speed = $.browser.msie ? 0 : _options.duration;
		var _timer = _options.autoSlide;
		var _sliderEl = _options.slideElement;
		var _wrap = _hold.find(_options.fadeEl);
		var _el = _hold.find(_options.switcher);
		var _next = _hold.find(_options.next);
		var _prev = _hold.find(_options.prev);
		var _count = _el.index(_el.filter(':last'));
		var _w = _el.outerWidth(true);
		var _wrapHolderW = Math.ceil(_wrap.parent().width()/_w);
		if (((_wrapHolderW-1)*_w + _w/2) > _wrap.parent().width()) _wrapHolderW--;
		if (_timer) var _t;
		var _active = _el.index(_el.filter('.active:eq(0)'));
		if (_active < 0) _active = 0;
		var _last = _active;
		if (!_options.effect) var rew = _count - _wrapHolderW + 1;
		else var rew = _count;
		
		if (!_options.effect) _wrap.css({marginLeft: -(_w * _active)});
		else {
			_wrap.css({opacity: 0}).removeClass('active').eq(_active).addClass('active').css({opacity: 1}).css('opacity', 'auto');
			_el.removeClass('active').eq(_active).addClass('active');
		}
		if (_options.disableBtn) {
			if (_count < _wrapHolderW) _next.addClass(_options.disableBtn);
			_prev.addClass(_options.disableBtn);
		}
		
		function fadeElement(){
			_wrap.eq(_last).animate({opacity:0}, {queue:false, duration: _speed});
			_wrap.removeClass('active').eq(_active).addClass('active').animate({
				opacity:1
			}, {queue:false, duration: _speed, complete: function(){
				$(this).css('opacity','auto');
			}});
			_el.removeClass('active').eq(_active).addClass('active');
			_last = _active;
		}
		function scrollEl(){
			_wrap.animate({marginLeft: -(_w * _active)}, {queue:false, duration: _speed});
		}
		function toPrepare(){
			if ((_active == rew) && _options.circle) _active = -_sliderEl;
			for (var i = 0; i < _sliderEl; i++){
				_active++;
				if (_active > rew) {
					_active--;
					if (_options.disableBtn &&(_count > _wrapHolderW)) _next.addClass(_options.disableBtn);
				}
			};
			if (_active == rew) if (_options.disableBtn &&(_count > _wrapHolderW)) _next.addClass(_options.disableBtn);
			if (!_options.effect) scrollEl();
			else fadeElement();
		}
		function runTimer(){
			_t = setInterval(function(){
				toPrepare();
			}, _timer);
		}
		_next.click(function(){
			if(_t) clearTimeout(_t);
			if (_options.disableBtn &&(_count > _wrapHolderW)) _prev.removeClass(_options.disableBtn);
			toPrepare();
			if (_timer) runTimer();
			return false;
		});
		_prev.click(function(){
			if(_t) clearTimeout(_t);
			if (_options.disableBtn &&(_count > _wrapHolderW)) _next.removeClass(_options.disableBtn);
			if ((_active == 0) && _options.circle) _active = rew + _sliderEl;
			for (var i = 0; i < _sliderEl; i++){
				_active--;
				if (_active < 0) {
					_active++;
					if (_options.disableBtn &&(_count > _wrapHolderW)) _prev.addClass(_options.disableBtn);
				}
			};
			if (_active == 0) if (_options.disableBtn &&(_count > _wrapHolderW)) _prev.addClass(_options.disableBtn);
			if (!_options.effect) scrollEl();
			else fadeElement();
			if (_timer) runTimer();
			return false;
		});
		if (_options.effect) _el.click(function(){
			_active = _el.index($(this));
			if(_t) clearTimeout(_t);
			fadeElement();
			if (_timer) runTimer();
			return false;
		});
		if (_timer) runTimer();
	});
}

function initValidation(){
	var _errorClass = 'incorrect';
	var _regEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var _regEmails = /^([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4})+([, ]+[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4})*$/;
	var _regPhone = /^[0-9\-\ \()]+$/;
	var _regNum = /^[0-9]+$/;
	var _regDay = /^(([0]{1}[1-9]{1})|([1-9]{1})|([1-2]{1}[0-9]{1})|([3]{1}[0-1]{1}))$/;
	var _regMon = /^(([0]{1}[1-9]{1})|([1-9]{1})|([1]{1}[0-2]{1}))$/;
	var _regYear = /^[19]{2}[0-9]{2}$/;
	
	$('form.request-form, form.some-form').each(function(){
		var _form = $(this);
		function checkFields() {
			
			var _flag = false;
			_form.find('.'+_errorClass).removeClass(_errorClass);

			// fields validation
			_form.find('input.required-email').each(function(){
				if(!_regEmail.test($(this).val())) addError($(this));
			});
			_form.find('input.required-day').each(function(){
				if(!_regDay.test($(this).val())) addError($(this));
			});
			_form.find('input.required-mon').each(function(){
				if(!_regMon.test($(this).val())) addError($(this));
			});
			_form.find('input.required-year').each(function(){
				if(!_regYear.test($(this).val())) addError($(this));
			});
			_form.find('textarea.required-many-emails').each(function(){
				if(!_regEmails.test($(this).val())) addError($(this));
			});
			_form.find('input.required-phone').each(function(){
				if(!_regPhone.test($(this).val())) addError($(this));
			});
			_form.find('input.required-num').each(function(){
				if(!_regNum.test($(this).val())) addError($(this));
			});
			_form.find('input.required, textarea.required').each(function(){
				if(!$(this).val().length || $(this).val() == $(this).attr('alt')) addError($(this));
			});
			_form.find('input.required-chek').each(function(){
				if (!$(this).is(':checked')) {
					$(this).parent('span').addClass('error-chk');
					_flag=true;
				}
			});
			_form.find('div.required-radio').each(function(){
				var _test = false;
				$(this).find('input[type=radio]').each(function(){
					if ($(this).is(':checked')) _test = true;
				});
				if (!_test) {
					_flag=true;
				}
			});

			// error class adding
			function addError(_obj) {
				_obj.parent('div').addClass(_errorClass);
				_flag=true;
			}
			return _flag;
		}

		// catch form submit event
		_form.submit(function(){
			if(checkFields()) {
				return false;
			}
		});
	});
}
$(document).ready(function(){
	$('#content .product-visual').each(function(){
		if(!this._f){
			this._f = true;
			$(this).gallery({
				duration: 1000,
				effect: 'fade',
				fadeEl: 'ul.product-visual-fade > li',
				switcher: '.swicher a'
			});
		}
	});
	initValidation();
	if($(".jqzoom").length){
		$(".jqzoom").jqzoom();
	}
	initPopup();
});
