// page init
$(document).ready(function(){
	initFormValidation();
	initCycleGallery();
});
// form validation
function initFormValidation() {
	var _errorClass = 'mark';
	var _regEmail = /^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{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 = /^[69]{2}[0-9]{8}$/;
	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.validate-form').each(function(){
	$('.validate-form 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) {
					$(this).find('div.row3 > span').eq(0).addClass('error-chk');
					_flag=true;
				}
			});

			// error class adding
			function addError(_obj) {
				var ter = _obj.attr('id');
				var errLab = _form.find('label[for='+ter+']');
				errLab.addClass(_errorClass);
				_flag=true;
			}
			return _flag;
		}

		// catch form submit event
		_form.submit(function(){
			_form.find('span.error-box').hide();
			if(checkFields()) {
				_form.find('span.error-box').show();
				
				return false;
			}
			_form.find('input.submit').addClass('thanks');
		});
	});
}
/* Gallery (slide-on-click, auto-slide-left) */
jQuery.fn.gallSlide = function(_options){
	// defaults options	
	var _options = jQuery.extend({
		duration: 700,
		autoSlide: 5000
	},_options);

	return this.each(function(){
		var _hold = $(this);
		var _speed = _options.duration;
		var _timer = _options.autoSlide;
		var _wrap = _hold.find('ul');
		var _el = _hold.find('ul > li');
		var _btnTabs = $('div.team-list li > a');
		var _count = _el.index(_el.filter(':last'));
		var _w = _el.outerWidth();
		var _wrapHolderW = Math.ceil(_wrap.parent().width()/_w);
		var _t;
		var _active = 0;
		function scrollEl(){
			_wrap.eq(0).animate({
				marginLeft: -(_w * _active) + "px"
			}, {queue:false, duration: _speed});
		}
		function runTimer(){
			_t = setInterval(function(){
				_active++;
				if (_active > (_count - _wrapHolderW + 1)) _active = 0;
				scrollEl();
			}, _timer);
		}
		runTimer();
		_btnTabs.mouseover(function(){
			if(_t) clearTimeout(_t);
			_active = _btnTabs.index($(this));
			scrollEl();
			runTimer();
			return false;
		});
	});
}

function initCycleGallery() {
	// settings
	var _autoSlide = true;
	var _activeClass = 'active';
	var _switchTime = 5000;
	var _speed = 450;

	$('div.gallery-slide').each(function(){
		// gallery options
		var _holder = $(this);
		var _btnTabs = $('div.team-list li > a');
		var _btnRight = _holder.find('a.next');
		var _slidesHolder = _holder.find('div.holder');
		var _slider = _slidesHolder.find('>ul');
		var _slides = _slider.children();
		var _slidesCount = _slides.length;
		var _slideWidth = _slides.eq(0).outerWidth(true);
		var _visibleCount = Math.round(_slidesHolder.width() / _slideWidth);
		var _currentIndex = 0;
		var _sumWidth = _slidesCount*_slideWidth;
		var _animating = false;
		var _timer;
		var _popup = $('ul.popup-holder div.popup');
		var _teamList = $('div.team-list');
		var _teamListClosed = $('div.team-list-closed');
		var _hTL = _teamList.outerHeight(true);
		_teamListClosed.hide().css({
			height: _hTL,
			marginTop: -_hTL
		})
		
		_popup.hide();
		function changPopup(_num){
			_popup.eq(_num).slideDown(500);
			var _close = _popup.eq(_num).find('a.close');
			_close.click(function(){
				_popup.eq(_num).slideUp(500, function(){
					_slider.children().css({opacity:1});
					autoSlide();
					_teamListClosed.hide();
				});
				return false;
			})
		}
		// gallery init
		_slider.append(_slides.clone()).append(_slides.clone());
		_slider.css({marginLeft:-_sumWidth});
		
		_btnTabs.mouseover(function(){
			if(_timer) clearTimeout(_timer);
			_currentIndex = _btnTabs.index($(this));
			switchSlide();
			autoSlide();
		}).click(function(){
			if(_timer) clearTimeout(_timer);
			_currentIndex = _btnTabs.index($(this));
			_teamListClosed.show();
			changPopup(_currentIndex);
			_btnTabs.parent().removeClass('active').eq(_currentIndex).addClass('active');
			_slider.children().css({opacity:0.5}).eq(_currentIndex+_slidesCount).css({opacity:1});
			return false;
		});
		
		
		// gallery animation
		function prevSlide() {
			if(_animating) return;
			_currentIndex--;
			switchSlide();
		}
		function nextSlide() {
			if(_animating) return;
			_currentIndex++;
			switchSlide();
		}

		function switchSlide() {
			_animating = true;
			_slider.animate({marginLeft:-_sumWidth-(_currentIndex-1)*_slideWidth},{duration:_speed, queue:false,complete:function(){
				if((_currentIndex-1) == _slidesCount || (_currentIndex-1) == -_slidesCount) {
					_currentIndex = 0;
					_slider.css({marginLeft:-_sumWidth});
				}
				_animating = false;
			}});
			autoSlide();
		}
		function autoSlide() {
			if(!_autoSlide) return;
			if(_timer) clearTimeout(_timer);
			_timer = setTimeout(nextSlide,_switchTime);
		}
		autoSlide();
	});
}