(function($) {
	$.fn.watermark = function(css, text) {
		return this.each(function() {
			var i = $(this), w = 1;
			(i.val() == text) && i.val('');
			i.focus(function() {
				(i.val() == text) && w && !(w = 0) && i.removeClass(css).data('w', 0).val('');
			})
			.blur(function() {
				(i.val() == '') && (w = 1) && i.addClass(css).data('w', 1).val(text);
			})
			.closest('form').submit(function() {
				(i.val() == text) && w && i.val('');
			});
			i.data('w_text', text);
			i.trigger('blur');
		});
	};
	$.fn.removeWatermark = function() {
		return this.each(function() {
			var i = $(this);
			i.removeData('w') || ((i.val() == i.data('w_text')) && i.val('')) || i.removeData('w_text');
		});
	};
})(jQuery);

var Seculus = {

	init: function() {
		Seculus.cacheItems();
		Seculus.markActiveMenu();
		Seculus.configureSubmenu();
		Seculus.configureFooter();

		var areas = [
			'_index',
			'_contact',
			'_products',
			'_productDetail',
			'_productsList',
			'_technicalAssistance',
			'_campaigns'
		];
		
		for (var area in areas) {
			if (Seculus.content.hasClass(areas[area])) {
				Seculus[areas[area]]();
				break;
			}
		}
	},

	cacheItems : function() {
		Seculus.menu = $('.menu ul');
		Seculus.content = $('.content');
	},

	markActiveMenu: function() {
		var pages = {
				'/estrutura'               : '/historia',
				'/diretrizes'              : '/historia',
				'/valores'                 : '/historia',
	 			'/responsabilidade-social' : '/historia',
				'/campanhas'               : '/noticias'
			},
			page = Seculus.getCurrentPage(),
			area = null, t;
			
		if (pages[page]) {
			area = pages[page];
		} else if (page.indexOf('/noticias') != -1) {
			page = area = '/noticias';
		} else if (page.indexOf('/campanhas') != -1) { 
			page = '/campanhas';
			area = '/noticias';
		} else if (page.indexOf('/estilo/') != -1) {
			area = '/relogios';
			t = page.split('/estilo');
			if (t.length > 1) {
				try { page = area + '/estilo/' + t[1].split('/')[1] + '/'; } catch(e) {}
			}
		} else if (page.indexOf('/detalhe/') != -1) {
			area = '/relogios';
			page = $('#more').attr('href');
		}
				
		if (area) {
			Seculus.selectMenu('.menu-item > a[href=' + area + ']');
		}
		
		Seculus.selectMenu('.menu-item a[href=' + page + ']');
	},

	configureSubmenu: function() {
		Seculus.menu.find('.menu-item').hover(Seculus.menuItemOver, Seculus.menuItemOut);
	},
	
	configureFooter: function() {
		var _assist    = $('.assist'),
			_assistBtn = _assist.find('.button'),
			_select    = _assist.find('select'),
			_button, _input;

		_select.change(function() {
			_assistBtn.focus();
		});
		
		_assistBtn.click(Seculus.getTechAssistBtnClick(_select));
		
		_button = $('#enviarNewsletter');
		_button.click(function() {
			$('#frmNewsletter').submit();
			return false;
		});
		
		_button = $('.refsearch .button');
		_input  = $('#reference');

		_button.bind('click', function() {
			var val = _input.val();
			if (val) {
				window.open('/relogios/detalhe/' + val, '_self');
			} else {
				alert('Você deve informar a referência.');
			}
			
			return false;
		});
		
		_input.keypress(Seculus.keyPressToClick(_button));

		$('#newsletter_email').watermark('watermark', 'informe seu e-mail');
		$('#reference').watermark('watermark', 'referência');
	},
	
	keyPressToClick: function(_button) {
		var _f = function(e) {
			if (e.keyCode == 13) {
				e.preventDefault();
				_button.trigger('click');
			}
		};
		
		return _f;
	},

	menuItemOver: function() {
		var li = $(this);
		li.find('a:first').addClass('menu-item-over');
	},

	menuItemOut: function() {
		var li = $(this),
			a  = li.find('a:first');
		a.attr('selected') == null && a.removeClass('menu-item-over');
	
		//var div = li.find('div.inner');
		//div.stop().clearQueue().css({height: 35}).animate({height: 0}, 80, function() { div.hide(); });
	},

	_index: function() {
		var v = parseInt(jQuery.browser.version),
			i = $('.base-img');
			
		if (!jQuery.browser.msie || v > 8) {
			$('.leve-seu-mundo').show().css({opacity: 0}).animate({'margin-left': 180, opacity: 1}, 1500);
		} else {
			$('.leve-seu-mundo').show().css({'margin-left': 180});
		}

		$('.style .item').each(function() {
			var link = $(this);
			link.data('img', '.img-prod-' + link.attr('href').split('/relogios/estilo/').join(''));
		}).hover(function() {
			var img = $($(this).data('img'));
			img.removeClass('hidden-img');
			i.hide();
		}, function() {
			var img = $($(this).data('img'));
			img.addClass('hidden-img');
			i.show();
		});
	},
	
	_productsList: function() {
		var list    = Seculus.content.find('.products-list'),
			current = Seculus.getCurrentPage(),
			_button = list.find('.search-box .button'),
			_input  = _button.parent().find('#searchReference'),
			ml      = $('.ml'),
			mr      = $('.mr'),
			prev    = $('.prev'),
			next    = $('.next');
			
		list.find('.list-head .switch-genre').each(function (i, e) {
			var link = $(e);
			(current.indexOf(link.attr('href')) != -1) && link.addClass('current');
		});
		
		$('.ie6 .content .products-list .list-head .grid .watch').hover(function() {
			$(this).find('.base').css({top: '143px'}).addClass('hover');
		}, function() {
			$(this).find('.base').css({top: '155px'}).removeClass('hover');			
		});
		
		_button.bind('click', function() {
			var val = _input.val();
			if (val == '') {
				alert('Você deve informar a referência.');
				return false;
			}
			
			window.open('/relogios/detalhe/' + val, '_self');
			return false;
		});
		
		_input.keypress(Seculus.keyPressToClick(_button));

		_input.watermark('watermark', 'referência');
		
		if (prev.length) {
			ml.attr('href', prev.find('a').attr('href'));
		} else {
			ml.addClass('aborted').removeAttr('href').find('span').remove();
		}
		
		if (next.length) {
			mr.attr('href', next.find('a').attr('href'));
		} else {
			mr.addClass('aborted').removeAttr('href').find('span').remove();
		}
	},
	
	_productDetail: function() {
		var box       = $('.box'),
			pos       = 0,
			steps     = box.find('li').length - 4,
			ml        = $('.ml'),
			mr        = $('.mr'),
			mls       = ml.find('span'),
			mrs       = mr.find('span'),
			inc       = 92,
			animating = false;
			
		$('.jqzoom').jqzoom();

		mls.fadeOut(1);

		ml.click(function() {
			if (animating) return false;
			
			mrs.fadeIn('fast');
			
			if (pos > 0) {
				pos--;
				animating = true;
				box.animate({'left': parseInt(box.css('left')) + inc}, 'fast', null, function() {
					if (pos == 0) mls.fadeOut('fast');
					animating = false;
				});
			}
			
			return false;
		});

		mr.click(function() {
			if (animating) return false;
			
			mls.fadeIn('fast');

			if (pos < steps) {
				pos++;
				animating = true;
				box.animate({'left': parseInt(box.css('left')) - inc}, 'fast', null, function()  {
					if (pos == steps) mrs.fadeOut('fast');
					animating = false;
				});
			}

			return false;
		});
	},
	
	_technicalAssistance: function() {
		var _area      = Seculus.content.find('.list-area'),
			_select    = _area.find('select'),
			_holder    = $('.tech-assist-texts'),
			ol         = _holder.find('ol');
			bt1        = $('.text-1'),
			bt2        = $('.text-2'),
			bt3        = $('.text-3'),
			backward   = $('#textBackward'),
			forward    = $('#textForward'),
			atm        = bt3.find('strong'),
			index      = 1,
			changeText = function() {
				switch (index) {
					case 1:
						backward.hide();
						forward.show();
						
						ol.attr('start', 1);
						atm.text('');
						bt1.show();
						bt2.hide();
						bt3.hide();
						break;

					case 2:
						backward.show();
						forward.show();
						
						ol.attr('start', 5);
						atm.text('');
						bt1.hide();
						bt2.show();
						bt3.hide();
						break;

					default:
						backward.show();
						forward.hide();

						ol.attr('start', 8);
						atm.text('Apenas para relógios com 5 ATM ou mais:');
						bt1.hide();
						bt2.hide();
						bt3.show();
						break;
				}
			};
			
		(_area.height() < 370) && _area.height(370);

		Seculus.selectMenu('.menu-item > a[href=/assistencia-tecnica]');
		
		_select.append($('.assist select option').clone());
		_select.change(function() {
			var v = _select.val();
			if (v) window.open('/assistencia-tecnica/' + v, '_self');
		});
		
		backward.click(function() {
			if (index > 1) index--;
			changeText();
			return false;
		});
		
		forward.click(function() {
			if (index < 3) index++;
			backward.show();
			changeText();
			return false;
		});
		
		Seculus.setTechAssistSelect(_select);
		
		changeText();

		_holder.removeClass('hidden');
	},
	
	_campaigns: function() {
		Seculus.content.find('a[rel=fancybox]').fancybox({overlayShow: true, titlePosition: 'over'});
	},
	
	_contact: function() {
		var _select  = $('.assist select'),
			_form    = Seculus.content.find('#contactForm'),
			_button  = _form.find('.button'),
			_name    = _form.find('#nome'),
			_email   = _form.find('#email'),
			_tel1    = _form.find('#telefone1'),
			_tel2    = _form.find('#telefone2'),
			_uf      = _form.find('#uf'),
			_subject = _form.find('#assunto'),
			_message = _form.find('#mensagem');
		
		_button.click(function() {
			_form.submit();
			return false;
		});
		
		_form.submit(function() {
			var _error      = 'Foram encontrados os seguintes erros no preenchimento do formulário: \r\n\r\n',
				_errorField = null,
				reg         = /^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/;
			
			if (_name.val() == '') {
				_error += 'Preencha corretamente o Nome.\r\n';
				(!_errorField) && (_errorField = _name);
			}
			
			if (_email.val() == '' || !reg.test(_email.val())) {
				_error += 'Preencha corretamente o E-mail.\r\n';
				(!_errorField) && (_errorField = _email);
			}

			if (_tel1.val() == '' || isNaN(_tel1.val()) || _tel1.val().length != 2) {
				_error += 'Preencha corretamente o DDD do Telefone.\r\n';
				(!_errorField) && (_errorField = _tel1);
			}
			
			if (_tel2.val() == '' || isNaN(_tel2.val()) || _tel2.val().length != 8) {
				_error += 'Preencha corretamente o do Telefone (somente números).\r\n';
				(!_errorField) && (_errorField = _tel2);
			}
			
			_uf.val(_uf.val().toUpperCase());
			if (_uf.val() != '' && _select.find('option[value=' + _uf.val() + ']').length == 0) {
				_error += 'Preencha corretamente o Estado.\r\n';
				(!_errorField) && (_errorField = _uf);
			}

			if (_subject.val() == '') {
				_error += 'Preencha corretamente o Assunto.\r\n';
				(!_errorField) && (_errorField = _subject);
			}

			if (_message.val() == '') {
				_error += 'Preencha corretamente a Mensagem.\r\n';
				(!_errorField) && (_errorField = _message);
			}
			
			if (_errorField != null) {
				alert(_error);
				_errorField.focus().select();
				return false;
			}

			return true;
		});
	},
	
	selectMenu: function(query) {
		var a = Seculus.menu.find(query),
			div = a.parent().find('.inner'),
			ul, w = 0;
			
		a.attr('selected', 1).addClass('menu-item-over');

		if (div.length) {
			ul  = div.find('ul');
			div.show();
			ul.find('li').each(function(i, e) { w += $(e).width(); });
			div.width(w + 4);
		}
	},
	
	setTechAssistSelect: function(_select) {
		var addr = location.href.split('/');
		addr	 = addr[addr.length - 1];
		(addr && addr != 'assistencia-tecnica') && _select.val(addr);
	},
	
	getTechAssistBtnClick: function(_select) {
		var _f = function() {
			var v = _select.val(), $this = $(this);
			if (v) {
				$this.attr('href', '/assistencia-tecnica/' + v);
				return true;
			}
			
			return false;
		};
		
		return _f;
	},

	getCurrentPage: function() { 
		var s = [], l = window.location.href.split('#')[0].split('?')[0].split('/');
		for (var i = 3; i < l.length; i++) {
			s.push(l[i]);
		}
	
		return '/' + s.join('/');
	}
}

$(Seculus.init);

function fechaSplashAmigos(){
	jQuery('#splash').hide();
}
