/*--- tabs ---*/
function initTabs(){
	var _speed = 500;
	$('ul.tabset').each(function(){
		var btn_h = $(this);
		var box_hold = (btn_h.attr('title') && btn_h.attr('title').length > 1)?($(btn_h.attr('title'))):(false);
		btn_h.removeAttr('title');
		var _btn = $(this).find('a.tab');
		var _a = (_btn.index(_btn.filter('.active:eq(0)')) != -1)?(_btn.index(_btn.filter('.active:eq(0)'))):(0);
		for(var i = 0; i < _btn.length; i++){
			_btn.eq(i).data('box', $(_btn.eq(i).attr('hash')));
			_btn.eq(i).data('box').css({display:'none', opacity: 0}).removeClass('active');
		}
		_btn.removeClass('active').eq(_a).addClass('active').data('box').css({opacity:1, display:'block'}).addClass('active');
		_btn.click(function(){
			changeTab(_btn.index(this));
			return false;
		});
		function changeTab(_ind){
			if(_ind != _a){
				_btn.eq(_a).removeClass('active');
				_btn.eq(_ind).addClass('active');
				if(box_hold) box_hold.stop().height(box_hold.height());
				_btn.eq(_a).data('box').stop().removeClass('active').animate({opacity:0}, _speed, function(){ $(this).hide();});
				_btn.eq(_ind).data('box').stop().show().addClass('active').animate({opacity:1}, _speed);
				if(box_hold) box_hold.animate({height: _btn.eq(_ind).data('box').outerHeight()}, _speed/2, function(){ $(this).height('auto');});
				_a = _ind;
			}
		}
	});
}
/*---- clear inputs ---*/
function clearInputs(){
	$('input:text, input:password, textarea').each(function(){
		var _el = $(this);
		_el.data('val', _el.val());
		_el.bind('focus', function(){
			if(_el.val() == _el.data('val')) _el.val('');
		}).bind('blur', function(){
			if(_el.val() == '') _el.val(_el.data('val'));
		});
	});
}
/*--- popup function ---*/
function initPopup(){
	if($('#fader').length == 0) $('body').append('<div id="fader"></div>');
	var _fader = $('#fader');
	_fader.hide();
	var _popup = false;
	$('a.with-popup').each(function(){
		var _el = this;
		if(_el.hash && _el.hash.length > 1){
			_el._popup = $(_el.hash);
			if(_el._popup.length){
				_el.onclick = function(){
					if(_el._popup){
						if(_popup) _popup.hide();
						_popup = _el._popup;
						showPopup();
					}
					return false;
				}
				_el._popup.find('a.close').click(function(){
					hidePopup();
					return false;
				});
			}
		}
	});
	_fader.click(function(){
		hidePopup();
		return false;
	});
	
	$(document).keydown(function(e){
		if(!e)evt = window.event;
		if(e.keyCode == 27) hidePopup();
	});
	/*--- ---*/
	function showPopup(){
		_popup.css({top: $(window).scrollTop()});
		if(_fader.is(':hidden')){
			_fader.css({
				opacity: 0,
				height: initH(),
				display:'block'
			});
			_fader.fadeTo(400, 0.5, function(){
				_show();
			});
		}
		else{
			_fader.height(initH());
			_show();
		}
	}
	/*--- ---*/
	function _show(){
		if(_popup){
			if($.browser.msie) _popup.show();
			else _popup.fadeIn(200, function(){
				if(initH() < _popup.outerHeight()+_popup.offset().top) _fader.height(_popup.outerHeight()+_popup.offset().top);
			});
			_popup.css({top: $(window).scrollTop()+ ($(window).height() - _popup.outerHeight())/2});
			if(initH() < _popup.outerHeight()+_popup.offset().top) _fader.height(_popup.outerHeight()+_popup.offset().top);
			initPopupGall();
		}
	}
	/*--- ---*/
	function hidePopup(){
		if(_popup){
			if($.browser.msie){
				_popup.hide();
				_fader.fadeOut(200);
				_popup = false;
			}
			else{
				_popup.fadeOut(400, function(){
					_fader.fadeOut(200);
					_popup = false;
				});
			}
		}
	}
	/*--- ---*/
	function initH(){
		var _h = $('#wrapper').outerHeight();
		if(_h < $(window).height()) _h = $(window).height();
		if(_h < $('body').height()) _h = $('body').height();
		return _h;
	}
}
/*--- popup gallery ----*/
function initPopupGall(){
	var fade_speed = 500; //in ms
	var move_speed = 600; //in ms
	$('#device-box').each(function(){
		if(!this.gall_f && this.offsetWidth > 0){
			this.gall_f = true;
			var _hold = $(this);
			var list_hold = _hold.find('div.gallery-box div.gallery > ul');
			var btn_prev = _hold.find('div.gallery-box a.btn-prev');
			var btn_next = _hold.find('div.gallery-box a.btn-next');
			var img_hold = _hold.find('div.img-box');
			var _btn = list_hold.find('a');
			var _a = (_btn.index(_btn.filter('.active:eq(0)')) != -1)?(_btn.index(_btn.filter('.active:eq(0)'))):(0);
			var hold_w = list_hold.parent().width();
			var list_w = list_hold.children().outerWidth(true)*list_hold.children().length;
			var _step = hold_w;
			var _m = 0;
			
			_btn.removeClass('active').eq(_a).addClass('active');
			_btn.eq(_a).data('img', $('<img src="'+_btn.eq(_a).attr('href')+'" alt="'+_btn.eq(_a).attr('rel')+'"/>'));
			_btn.eq(_a).data('img').addClass('active').css('opacity', 1).appendTo(img_hold);
			
			_btn.click(function(){
				changeEl(_btn.index(this));
				return false;
			});
			btn_prev.click(function(){
				moveList(false);
				return false;
			});
			btn_next.click(function(){
				moveList(true);
				return false;
			});
			
			var fade_f = true;
			function changeEl(_ind){
				if(fade_f && _ind != _a){
					fade_f = false;
					img_hold.stop().height(img_hold.height());
					_btn.eq(_a).removeClass('active');
					_btn.eq(_ind).addClass('active');
					_btn.eq(_a).data('img').removeClass('active').animate({opacity: 0}, {queue:false, duration: fade_speed});
					if(_btn.eq(_ind).data('img')){
						_btn.eq(_ind).data('img').addClass('active').animate({opacity: 1}, {queue:false, duration: fade_speed});
						img_hold.animate({height: _btn.eq(_ind).data('img').height()}, fade_speed/2, function(){ $(this).height('auto');});
						_a = _ind;
						fade_f = true;
					}
					else{
						_btn.eq(_ind).data('img', $('<img />'));
						_btn.eq(_ind).data('img').load(function(){
							_btn.eq(_ind).data('img').addClass('active').animate({opacity: 1}, {queue:false, duration: fade_speed});
							img_hold.animate({height: _btn.eq(_ind).data('img').height()}, fade_speed/2, function(){ $(this).height('auto');});
							_a = _ind;
							fade_f = true;
						});
						_btn.eq(_ind).data('img').css('opacity', 0);
						img_hold.append(_btn.eq(_ind).data('img'));
						_btn.eq(_ind).data('img').attr('src', _btn.eq(_ind).attr('href')).attr('alt', _btn.eq(_ind).attr('rel'));
					}
				}
			}
			function moveList(_f){
				if(_f){
					if(list_w - _m > hold_w) _m += _step;
					else _m = 0;
				}
				else{
					if(_m > 0) _m -= _step;
					else _m = Math.ceil((list_w - hold_w)/_step)*_step;
				}
				list_hold.animate({left:-_m},{queue:false, duration: move_speed});
			}
		}
	});
}
/*--- gallery ---*/
function initGall(){
	var move_speed = 600; //in ms
	var anim_speed = 400; //in ms
	$('div.carousel-box').each(function(){
		var _hold = $(this);
		var btn_prev = _hold.find('a.btn-prev');
		var btn_next = _hold.find('a.btn-next');
		var list_hold = _hold.find('div.carousel > ul');
		var _list = list_hold.children();
		var list_w = _list.outerWidth(true) * _list.length;
		var hold_w = list_hold.parent().width();
		var _step = _list.outerWidth()*3;
		var _m = 0;
		var move_f = true, anim_f = true, _a = -1;
		for(var i = 0; i < _list.length; i++){
			if(i%3==0) _list.eq(i).addClass('drop-left');
			else if(i%3==1) _list.eq(i).addClass('drop-center');
			else if(i%3==2) _list.eq(i).addClass('drop-right');
			
			_list.eq(i).data('box', _list.eq(i).children('div.small-box')).data('sub_box', _list.eq(i).children('div.enlarged-box'));
			_list.eq(i).data('sub_box').hide();
			if(!$.browser.msie) _list.eq(i).data('sub_box').css('opacity', 0);
		}
		
		btn_prev.click(function(){
			moveList(false);
			return false;
		});
		btn_next.click(function(){
			moveList(true);
			return false;
		});
		_list.mouseenter(function(){
			showEl(_list.index(this));
		}).mouseleave(function(){
			hideEl();
		});
		
		function moveList(_f){
			if(anim_f){
				move_f = false;
				if(_f){
					if(list_w - _m - 100 > hold_w) _m += _step;
					else _m = 0;
				}
				else{
					if(_m > 0) _m -= _step;
					else _m = Math.ceil((list_w - hold_w - 100)/_step)*_step;
				}
				list_hold.stop().animate({left:-_m}, move_speed, function(){ move_f = true;});
			}
		}
		function showEl(_ind){
			if(move_f){
				anim_f = false;
				_hold.addClass('carousel-hovered');
				_list.eq(_ind).addClass('active');
				if($.browser.msie){
					_list.eq(_ind).css('zIndex', 10);
					_list.eq(_ind).data('box').hide();
					_list.eq(_ind).data('sub_box').show();
				}
				else{
					_list.eq(_ind).data('box').stop().animate({opacity:0}, anim_speed, function(){ $(this).hide();});
					_list.eq(_ind).data('sub_box').stop().show().animate({opacity:1}, anim_speed);
				}
				_a = _ind;
			}
		}
		function hideEl(){
			if(_a != -1){
				if($.browser.msie){
					_list.eq(_a).data('sub_box').hide();
					_list.eq(_a).data('box').show();
					_hold.removeClass('carousel-hovered');
					_list.eq(_a).removeClass('active').css('zIndex', 1);
					anim_f = true;
				}
				else{
					_list.eq(_a).removeClass('active').addClass('sub-active');
					_list.eq(_a).data('sub_box').stop().animate({opacity:0}, anim_speed, function(){ $(this).hide();});
					_list.eq(_a).data('box').stop().show().animate({opacity:1}, anim_speed, function(){
						$(this).parent().removeClass('sub-active');
						if(_a == -1){
							_hold.removeClass('carousel-hovered');
							anim_f = true;
						}
					});
				}
				_a = -1;
			}
		}
	});
}
/*--- form validation ---*/
function formValidation(){
	var _emailReg = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	$('#signup-box form').each(function(){
		var _hold = $(this);
		var _fields = _hold.find('.must-valid');
		_hold.submit(function(){
			if(!_valid()) return false;
		});
		for(var i = 0; i < _fields.length; i++){
			_fields.eq(i).data('val', _fields.eq(i).val());
		}
		
		function _valid(){
			var _f = true;
			_fields.parents('div.row').removeClass('error');
			for(var i = 0; i < _fields.length; i++){
				if(_fields.eq(i).attr('tagName').toLowerCase() == 'select'){
					if(_fields.eq(i).val() == 'default'){
						_fields.eq(i).parents('div.row:eq(0)').addClass('error');
						_f = false;
					}
				}
				else if(_fields.eq(i).hasClass('email-field')){
					if(!_emailReg.test(_fields.eq(i).val()) || _fields.eq(i).val() == _fields.eq(i).data('val') || _fields.eq(i).val() == ''){
						_fields.eq(i).parents('div.row:eq(0)').addClass('error');
						_f = false;
					}
				}
				else{
					if(_fields.eq(i).val() == _fields.eq(i).data('val') || _fields.eq(i).val() == ''){
						_fields.eq(i).parents('div.row:eq(0)').addClass('error');
						_f = false;
					}
				}
			}
			return _f;
		}
	});
}
$(document).ready(function(){
	initTabs();
	clearInputs();
	initPopup();
	initPopupGall();
	initGall();
	formValidation();
});