var ArtIdea = {
	initialize: function(){
		this.initHomeSlide();
		this.initValidateContact();
	},
	
	initHomeSlide: function(){
		$('#HomeSlide').slides({
			preload: true,
			preloadImage: 'img/loading.gif',
			play: 17000,
			pause: 2500,
			generatePagination: false,
			hoverPause: true
		});
	},
	
	initValidateContact: function(){
		var frmContact = $('#frmContact');
		if(frmContact.length){
			var txtNome = frmContact.find('#txtNome'),
				txtEmail = frmContact.find('#txtEmail'),
				txtEmpresa = frmContact.find('#txtEmpresa'),
				txtTelefone = frmContact.find('#txtTelefone'),
				txtMensagem = frmContact.find('#txtMensagem');
			
			/*
			AlertForm.alterText(txtNome, Msgs.inits.name);
			AlertForm.alterText(txtEmail, Msgs.inits.email);
			AlertForm.alterText(txtEmpresa, Msgs.inits.company);
			AlertForm.alterText(txtTelefone, Msgs.inits.phone);
			AlertForm.alterText(txtMensagem, Msgs.inits.message);
			*/
			
			txtTelefone.mask('(99) 9999-9999');
			
			//AlertForm.restrictField(txtTelefone, '[0-9\(\) -]');
			
			frmContact.submit(function(){
				if(!AlertForm.requireField(txtNome[0], Msgs.inits.name)){
					AlertForm.show(txtNome[0], Msgs.forms.name);
					return false;
				}
				if(!AlertForm.requireField(txtEmail[0], Msgs.inits.email)){
					AlertForm.show(txtEmail[0], Msgs.forms.email);
					return false;
				}
				if(!AlertForm.validEmail(txtEmail[0])){
					AlertForm.show(txtEmail[0], Msgs.forms.emailinvalid);
					return false;
				}
				/*if(!AlertForm.requireField(txtTelefone[0], Msgs.inits.phone)){
					AlertForm.show(txtTelefone[0], Msgs.forms.phone);
					return false;
					
				}
				if(!/^\(\d{2}\) \d{4}-\d{4}$/.test(txtTelefone.val())){
					AlertForm.show(txtTelefone[0], Msgs.forms.phoneinvalid);
					return false;
				}*/
				if(!AlertForm.requireField(txtMensagem[0], Msgs.inits.message)){
					AlertForm.show(txtMensagem[0], Msgs.forms.message);
					return false;
				}
				
				
			  $.post("enviaForm.php", { txtNome: $("#txtNome").val(), txtEmpresa: $("#txtEmpresa").val(), txtEmail: $("#txtEmail").val(), txtTelefone: $("#txtTelefone").val(), txtMensagem: $("#txtMensagem").val() },
			   function(data) {
				   if(data=="OK"){
				 	AlertBox.show('Sua mensagem foi enviada com sucesso. Em breve entraremos em contato. Obrigado');
				   }else{
					alert(data);   
				   }
			   });
					
				
				return false;
			});
		}
	}
};


var AlertForm = {
	vars: {
		layerClass: 'formValidatorLayer',
		timeHide: 3000,
		timeWait: null,
		reEmail: /^[a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i
	},
	initialize: function(options){
		$.extend(this.vars, options);
		this.layer = $('<div class="' + this.vars.layerClass + '"><p class="message"></p></div>').appendTo(document.body);
	},		
	show: function(element, message, offset){
		var elm = $(element);
		var offs = {x: 0, y: 0};
		$.extend(offs, offset);
		this.layer.css('width', 'auto');
		this.layer.find('p.message').html(message);
		this.layer.css({
			'top': elm.offset().top + elm.outerHeight() + offs.y + 4,
			'left': elm.offset().left + offs.x,
			'width': Math.max(0, Math.max(elm.outerWidth(), this.layer.width())) - 10
		});		
		
		var tag = elm[0].tagName;
		if(tag == 'INPUT' || tag == 'TEXTAREA'){
			elm[0].select();
			elm[0].focus();
		}
		
		this.layer.fadeTo(300, 1);
		this.layer.data('show', 1);
		
		var that = this;
		clearInterval(this.vars.timeWait);
		this.vars.timeWait = setInterval(function(){
			AlertForm.hide();
		}, this.vars.timeHide);
	},
	hide: function(){
		if(this.layer.data('show')){
			clearInterval(this.vars.timeWait);
			this.layer.stop().fadeTo(200, 0, function(){
				AlertForm.layer.css('top', -1500);
			});
			this.layer.data('show', 0);
		}
	},
	alterText: function(element, init){
		$(element).focus(function(){
			if($.trim($(this).val()) == init){
				$(this).val('');
			}
		}).blur(function(){
			if($.trim($(this).val()) == ''){
				$(this).val(init);
			}
		});
	},
	restrictField: function(element, reText){
		$(element).keypress(function(e){
			var code = typeof(e.charCode) != 'undefined' ? e.charCode : e.keyCode,
				key = (code == 0) ? '' : String.fromCharCode(code),
				re = new RegExp(reText);
				
			if(key != '' && !re.test(key)) {
				return false;
			}
		});
	},
	requireField: function(element, init){
		if(element && ($.trim(element.value).length == 0 || $.trim(element.value) == init))
			return false;
		return true;
	},
	requireCheck: function(element){
		if(element && element.checked == false)
			return false;
		return true;
	},
	validEmail: function(element){
		return this.vars.reEmail.test(element.value);
	}
};


var AlertBox = {
	vars: {
		layerClass: 'alertBoxLayer',
		overlayClass: 'alertBoxOverlay',
		timeHide: 2000,
		timeWait: null,
		onShow: function(){},
		onHide: function(){}
	},
	jelems: {
	},	
	initialize: function(options){
		$.extend(this.vars, options);
		
		this.jelems.overlay = $('<div class="' + this.vars.overlayClass + '"></div>').appendTo(document.body);
		this.jelems.layer = $('<div class="' + this.vars.layerClass + '"><a href="javascript:void(0);" class="closeBtn" title="close">X</a><p class="message"></p></div>').insertAfter(this.jelems.overlay).css('opacity', 0);
		this.jelems.closeBtn = this.jelems.layer.find('.closeBtn').click(function(){
			AlertBox.hide();
			return false;
		});
		
		$(window).resize(AlertBox.resize).scroll(AlertBox.scroll);
	},
	show: function(message, callback){
		var winW = $(window).width(),
			winH = $(window).height();
		
		this.jelems.layer.find('p.message').html(message);
		this.jelems.layer.css({
			position: 'fixed',
			top: Math.max(0, (winH - this.jelems.layer.outerHeight())/2),
			left: Math.max(0, (winW - this.jelems.layer.outerWidth())/2)
		});
		
		this.vars.onShow();
		this.hide();
		this.jelems.overlay.css({
			opacity: 0,
			top: 0,
			left: 0,
			width: $(document.body).outerWidth(),
			height: $(document.body).outerHeight()
		}).fadeTo(300, 0.3);
		
		this.jelems.layer.fadeTo(300, 1).data('show', 1);
	},
	hide: function(){
		if(this.jelems.layer.data('show')){
			clearInterval(this.vars.timeWait);
			this.jelems.overlay.fadeTo(300, 0);
			this.jelems.layer.data('show', 0).stop().fadeTo(300, 0, function(){
				AlertBox.jelems.layer.css('top', -15000);
				AlertBox.jelems.overlay.css('top', -15000);
				
				AlertBox.vars.onHide();
			});
		}
	},
	resize: function(){
		if(AlertBox.jelems.layer.data('show')){
			var winW = $(window).width(),
				winH = $(window).height()
				elmW = AlertBox.jelems.layer.outerWidth(),
				elmH = AlertBox.jelems.layer.outerHeight();
				
			AlertBox.jelems.layer.css({
				position: 'fixed',
				top: Math.max(0, (winH - elmH)/2),
				left: Math.max(0, (winW - elmW)/2)
			});
			
			AlertBox.jelems.overlay.css({
				top: 0,
				left: 0,
				width: $(document.body).outerWidth(),
				height: $(document.body).outerHeight()

			});
		}
	},
	scroll: function(){
		if(AlertBox.jelems.layer.data('show')){
			var winW = $(window).width(),
				winH = $(window).height()
				elmW = AlertBox.jelems.layer.outerWidth(),
				elmH = AlertBox.jelems.layer.outerHeight(),
				scrollTop = $(window).scrollTop();
				
			if(elmH > winH){
				AlertBox.jelems.layer.css({
					position: 'absolute',
					top: scrollTop,
					left: Math.max(0, (winW - elmW)/2)
				});
			
				return;
			}else{
				AlertBox.resize();
			}
		}
	}
};


jQuery(document).ready(function(){
	AlertForm.initialize();
	AlertBox.initialize();
	ArtIdea.initialize();
});
