var KisGeneral = {
	/**
	 * Função para dar um replace All em strings
	 *
	 * @param string (string): String com o texto a ser substituido
	 * @param token (string): Texto que deve ser procurado para ser substituido
	 * @param newtoken (string): Texto de substituição
	 *
	 * @return string: Nova string substituida
	 */
	replaceAll : function(string, token, newtoken) {
		if(string!="") {
			while (string.indexOf(token) != -1) {
		 		string = string.replace(token, newtoken);
			}
		}
		return string;
	}
};


var ieVersion = function() {
	var version = 999; // we assume a sane browser
	if (navigator.appVersion.indexOf("MSIE") != -1) {
		// bah, IE again, lets downgrade version number
		version = parseFloat(navigator.appVersion.split("MSIE")[1]);
		return version;
	} else {
		return false;
	}
};


var common = {
	init : function() {
		var $ = jQuery;
		
		common.menu.init();
		common.reguaPreSite();
		common.openModal();
		common.enablePlaceholder();
		common.messages();
		common.hideCategoryPagination();
		common.removePaisForm();
		//common.comboEstado();
		//common.fixSubmenuVejaMaisIE();
			
		if($("body").hasClass("contacts-index-index")) {
			common.validaContato();
		}
		
		if($("body").hasClass("customer-account-create")) {
			common.validaCadastro();
		}
		
		if($("body").hasClass("cms-home")) {
			common.bannersRotativos.init();
			//common.homeBoxNossasLojas();
		}
		
		if($("body").hasClass("cms-home") && $(".banner-principal-video").is("*")) {
			common.bannerPrincipalVideo();
		}
		
		if($("body").hasClass("cms-home") && $(".sidebar .box-twitter").is("*")) {
			common.twitterWidget.init();
		}
	},
	
	homeBoxNossasLojas: function() {
		var $ = jQuery;
		var $nossasLojas = $("<div />");
		$nossasLojas.addClass("nossas-lojas");
		$nossasLojas.append("<h2>Nossas lojas</h2>");
		
		var $form = $("<form />");
		$form.addClass("box");
		$form.append("<p>Digite o seu CEP</p>");
		$form.append('<input type="text" name="cep" />');
		$form.append('<button type="submit">Buscar</button>');
		$form.append('<a href="#" class="nao-sei">Não sei meu CEP »</a>');
		$nossasLojas.append($form);
		
		$(".sidebar").append($nossasLojas);
	},
	
	bannersRotativos: {
		segundosParaATrocaDeBanner: 10,
		$container: null,
		$banners: null,
		$paginacao: null,
		bannerAlteradoPorClique: false,
		
		init: function() {
			var $ = jQuery;
			this.$container = $("#highlights .banners");
			this.$banners = this.$container.children("div");
			if(this.$banners.length>1) {
				this.setup();
			}
			this.$banners.eq(0).show();
		},
		
		setup: function() {
			var self = this;
			var $ = jQuery;
			var $paginacao = $("<span class=\"paginacao\" />");
			this.$banners.each(function(i) {
				$(this).addClass("highlight_principal_banner"+i);
				var $link = $("<a href=\"#banner" + i + "\">Banner " + (i+1) + "</a>");
				$link.data("banner_id", i);
				$(this).data("banner_id", i);
				
				$paginacao.append($link);
			});
			
			// Adiciona a paginacao ao container
			this.$container.prepend($paginacao);
			
			// Evento de clique de paginacao
			$paginacao.find("a").click(function(e) {
				e.preventDefault();
				self.bannerAlteradoPorClique = true;
				self.mudaBanner( self.$banners.eq($(this).data("banner_id")) );
			});
			$paginacao.find("a").eq(0).addClass("ativo");
			
			// Adiciona a paginacao ao objeto
			this.$paginacao = $paginacao;
			
			// Adiciona o timer de troca de banner
			window.setInterval(function() {
				if(self.bannerAlteradoPorClique==false) { 
					//alert("8 secs");
					var idBannerAtivo = self.$banners.filter(":visible").eq(0).data("banner_id");
					var $novoBanner = null;
					if(self.$banners.eq(idBannerAtivo+1).is("*")) {
						$novoBanner = self.$banners.eq(idBannerAtivo+1);
					} else {
						$novoBanner = self.$banners.eq(0);
					}
				
					self.mudaBanner($novoBanner);
				} else {
					self.bannerAlteradoPorClique = false;
				}
			}, (self.segundosParaATrocaDeBanner*1000));
			
			
		},
		
		mudaBanner: function($banner) {
			if(this.$banners.filter(":visible").eq(0).data("banner_id") == $banner.data("banner_id")) {
				return ;
			}
			this.$banners.filter(":visible").fadeOut(500);
			$banner.fadeIn(500);
			
			this.$paginacao.find("a").eq($banner.data("banner_id")).addClass("ativo");
			this.$paginacao.find("a").eq($banner.data("banner_id")).siblings().removeClass("ativo");
		}
	},
	
	twitterWidget: {
		init: function() {
			var $ = jQuery;
			var $wTwitter = $(".sidebar .box-twitter");
			
			var $lista = $("<ul />");
			
			
			var url = "/_ws_twitter.php";
			var html = "";
			$.getJSON(url, {}, function(data) {

				$.each(data, function(key, value) {
					html += "<li>";
					
					if(value.retweeted_status!=undefined) {
						html += "<img src=\"" + value.retweeted_status.user.profile_image_url + "\" >";
					} else {
						html += "<img src=\"" + value.user.profile_image_url + "\" >";
					}
					
					var newText = value.text;
					
					// Da replace nas URLS:
					if(value.entities.urls!=undefined) {
						$.each(value.entities.urls, function(urlKey, urlValue) {
							//alert(urlValue.display_url);
							newText = KisGeneral.replaceAll(newText, urlValue.url, "<a href=\"" + urlValue.expanded_url + "\" target=\"_blank\">" + urlValue.display_url + "</a>");
						});
					}
					
					// Da replace nos Users:
					if(value.entities.user_mentions!=undefined) {
						$.each(value.entities.user_mentions, function(userKey, userValue) {
							newText = KisGeneral.replaceAll(newText, "@"+userValue.screen_name, "<a href=\"http://twitter.com/"+userValue.screen_name + "\" target=\"_blank\">" + "@{REPLACEALL}"+userValue.screen_name + "</a>");
							newText = KisGeneral.replaceAll(newText, "{REPLACEALL}", "");
						});
					}
					
					// Da replace nas hashtags:
					if(value.entities.hashtags!=undefined) {
						$.each(value.entities.hashtags, function(hashKey, hashValue) {
							newText = KisGeneral.replaceAll(newText, "#"+hashValue.text, "<a href=\"http://twitter.com/#!/search?q=%23"+hashValue.text + "\" target=\"_blank\">" + "#{REPLACEALL}"+hashValue.text + "</a>");
							newText = KisGeneral.replaceAll(newText, "{REPLACEALL}", "");
						});
					}
					
					
					html += "<div class=\"texto box\">" + newText + "</div>";
					html += "</li>";
				});
				
				$lista.html(html);
				$wTwitter.append($lista);
				$wTwitter.addClass("carregado");
			});

		}
	},
	
	menu: {
		init: function() {
			this.events();
		},
		
		events: function() {
			var $ = jQuery;
			var $menuLink = $("#navigation .main-menu>li>a");
			var $submenus = $("#navigation .main-menu li .submenu");

			var ocultaSubmenu = function($submenu) {
				window.setTimeout(function() {
					if($submenu.data("over")==false) {
						$submenu.parents("li").find("a").removeClass("hover");
						$submenu.hide();
					}
				}, 10);
			};
			
			var mostraSubmenu = function($submenu) {
				var $liContainer = $submenu.parents("li");
				if($liContainer.hasClass("by_price")) {	return ; }
				
				var posLeft = $liContainer.position().left-39;
				$submenu.parents("li").find("a").addClass("hover");
				$submenu.css("opacity", 0);
				$submenu.show();
				
				if(posLeft<0) {
					posLeft = 0;
				}
				$submenu.css("margin-left", posLeft);
				$submenu.css("opacity", 1);
			};
			
			$menuLink.mouseenter(function() {
				var $submenu = $(this).parents("li").find(".submenu");
				if($submenu.is("*")) {
					mostraSubmenu($submenu);
					$submenu.data("over", true);
				}
			});
			
			$menuLink.mouseleave(function() {
				var $submenu = $(this).parents("li").find(".submenu");
				if($submenu.is("*")) {
					$submenu.data("over", false);
					ocultaSubmenu($submenu);
				}
			});
			
			$submenus.mouseenter(function() {
				$(this).data("over", true);
			});
			
			$submenus.mouseleave(function() {
				$(this).data("over", false);
				ocultaSubmenu($(this));
			});
		}
	},
	
	bannerPrincipalVideo: function() {
		var $ = jQuery;
		var $banner = $(".banner-principal-video").eq(0);
		var qtdeDeVideos = $banner.find("div.video").length;

		if(qtdeDeVideos>1) {
			var $botoesDosVideos = $("<div />");
			$botoesDosVideos.addClass("video-botoes");
			$banner.find(".wrapper-content").append($botoesDosVideos);
			
			var x = 0;
			for(x=0; x<qtdeDeVideos; x++) {
				var $a = $("<button>Vídeo " + (x+1) + "</button>");
				$a.data("video", x);
				$a.addClass("video"+(x+1));
				$botoesDosVideos.append($a);
			}
			
			// Guarda o iFrame em um campo data
			$banner.find(".video").each(function() {
				var iframe = $(this).find("iframe").clone();
				$(this).find("iframe").remove();
				$(this).data("yt", iframe);
			});
			
			// Adiciona o clique
			$botoesDosVideos.find("button").click(function() {
				$(this).siblings().removeClass("ativo");
				$(this).addClass("ativo");
				$(this).parents(".wrapper-content").find(".video").hide();
				$(this).parents(".wrapper-content").find(".video").find("iframe").remove();
				
				var $videoAtivar = $(this).parents(".wrapper-content").find(".video").eq($(this).data("video"));
				$videoAtivar.append($videoAtivar.data("yt"));
				$videoAtivar.show();
			});
			
			$botoesDosVideos.find("button").eq(0).click();
		} else {
			$banner.find(".video").show();
		}
		
	},
	
	reguaPreSite: function() {
		var $ = jQuery;
		var $regua = $("#header #reguaPreSite");
		if($regua.is("*")) {
			$("body").prepend($regua);
		}
	},
	
	validaCadastro: function() {
		var $ = jQuery;
		$("#taxvat").attr("maxlength", 11);
		$("#rg").attr("maxlength", 10);
		$("#zip").attr("maxlength", 8);
		$("#street_2").attr("maxlength", 5);
		$("#telefone1, #telefone2, #celular, #telephone").attr("maxlength", 11);
		
		// Somente números
		$("#taxvat, #zip, #street_2, #month, #day, #year, #telefone1, #telefone2, #celular, #telephone").keydown(function(evt) {
			var charCode = (evt.which) ? evt.which : evt.keyCode
			if (charCode > 31 && (charCode < 48 || charCode > 57)) {
				return false;
			}
		});
	},
	
	validaContato: function() {
		var $ = jQuery;
		if( $("#contactForm").is("*") ) {
			$("#contactForm").submit(function() {
				var $nome = $("input#name");
				var $email = $("input#email");
				var $tel_ddd = $("input#txt-ddd");
				var $tel = $("input#txt-telefone");
				var $categoria = $("input#category");
				var $assunto = $("input#subject");
				var $comentario = $("input#comment");
				var vazio = false;
				if( $nome.val()=="" || $email.val()=="" || $categoria.val()=="" || $assunto.val()=="" || $comentario.val()=="") {
					vazio = true;
				}
				
				if(vazio==true) {
					alert("Antes de enviar o contato, por favor preencha os campos marcados com asterisco");
					return false;
				}
				
				if($tel_ddd.val()=="") {
					$tel_ddd.val("00");
				}
				
				if($tel.val()=="") {
					$tel.val("0000-0000");
				}
			});
		}
	},
	
	openModal : function() {
		jQuery('a[rel='+ 'modalbox' + ']').live('click', function(e){
			jQuery( jQuery(this).attr('href') ).modal({closeClass: 'btn-close'})
			e.preventDefault();
		});
	},
	
	fixSubmenuVejaMaisIE: function() {
		var $ = jQuery;
//		console.log("DONE");
//		console.log($(".submenu .holder-menu"));
		$(".submenu .holder-menu").each(function() {
			var $ul = $(this).find("ul");
			//alert($ul.html());
			var $verTodos = $(this).find(".btn-all");
			//console.log($verTodos);
			//alert($ul.find("li").length);
			if($ul.find("li").length%2==0) {
				$ul.append("<li class=\"vazio\">&nbsp;</li>");
			}
			
			$ul.append("<li class=\"btn-all\"><a href=\""+$verTodos.attr("href")+"\">"+$verTodos.html()+"</a></li>");
			$verTodos.remove();
		});
	},
	
	comboEstado : function() {
		var $ = jQuery;
		if( $("#region").is("*") ) {
			var $reg = $("#region");
			var $cbo = $("<select />");
			$cbo.attr("id", "ac-cbo-region");
			$cbo.append("<option value=\"\">Selecione</option>");
			$cbo.append("<option value=\"AC\">Acre</option>");
			$cbo.append("<option value=\"AL\">Alagoas</option>");
			$cbo.append("<option value=\"AP\">Amapá</option>");
			$cbo.append("<option value=\"AM\">Amazonas</option>");
			$cbo.append("<option value=\"BA\">Bahia</option>");
			$cbo.append("<option value=\"CE\">Ceará</option>");
			$cbo.append("<option value=\"DF\">Distrito Federal</option>");
			$cbo.append("<option value=\"ES\">Espírito Santo</option>");
			$cbo.append("<option value=\"GO\">Goiás</option>");
			$cbo.append("<option value=\"MA\">Maranhão</option>");
			$cbo.append("<option value=\"MT\">Mato Grosso</option>");
			$cbo.append("<option value=\"MS\">Mato Grosso do Sul</option>");
			$cbo.append("<option value=\"MG\">Minas Gerais</option>");
			$cbo.append("<option value=\"PA\">Pará</option>");
			$cbo.append("<option value=\"PB\">Paraíba</option>");
			$cbo.append("<option value=\"PR\">Paraná</option>");
			$cbo.append("<option value=\"PE\">Pernambuco</option>");
			$cbo.append("<option value=\"PI\">Piauí</option>");
			$cbo.append("<option value=\"RJ\">Rio de Janeiro</option>");
			$cbo.append("<option value=\"RN\">Rio Grande do Norte</option>");
			$cbo.append("<option value=\"RS\">Rio Grande do Sul</option>");
			$cbo.append("<option value=\"RO\">Rondônia</option>");
			$cbo.append("<option value=\"RR\">Roraima</option>");
			$cbo.append("<option value=\"SC\">Santa Catarina</option>");
			$cbo.append("<option value=\"SP\">São Paulo</option>");
			$cbo.append("<option value=\"SE\">Sergipe</option>");
			$cbo.append("<option value=\"TO\">Tocantins</option>");
			
			if($reg.val()!="") {
				$cbo.find("option").each(function() {
					if($(this).val()==$reg.val()) {
						$(this).attr("selected",true);
					}
				});
			}
			
			
			
			$cbo.change(function() {
				$reg.val($(this).val());
			});
			$reg.hide();
			$reg.before($cbo);
		}
	},
	
	enablePlaceholder : function() {
		jQuery('input[placeholder], textarea[placeholder]').placeholder();
	},
	
	hideCategoryPagination : function() {
		var $ = jQuery;
		if( $("body").hasClass("catalog-category-view")==true ) {
			if( $(".cat-highlight").is("*")==true ) {
				$(".holder-pagination").hide();
			}
		}
	},
	
	removePaisForm : function() {
		var $ = jQuery;
		if( $("select#country").is("*") ) {
			$("select#country").parents(".field").hide();
		}
	},
	
	messages: function() {
		var $ = jQuery;
		var m = "";
		if($("ul.messages").is("*") && $("ul.messages").attr("id") != "cartao_excluido") {
			$("ul.messages").find("li>span").each(function() {
				m = "<p>" + $(this).html() + "</p>";
			});
			
			if( $("#ac-message").is("*") ) {
				$("#ac-message").remove();
			}
			
			var $acm = $("<div />");
			$acm.attr("id", "ac-message");
			$acm.html(m);
			$("ul.messages").remove();
			$("body").prepend($acm);
			
			$acm.css("opacity", 0);
			$acm.show();
			$acm.css("top", $acm.height()*-2);
			$acm.css("opacity", 1);
			$acm.width($acm.parent().width());
			$acm.css("margin-left", ($acm.width()/2)*-1 );
			
			var fromTop = 0;
			if($("body>#reguaPreSite").is("*")) {
				var $regua = $("body>#reguaPreSite");
				fromTop = $regua.height() + parseInt($regua.css("padding-top")) + parseInt($regua.css("margin-top")) + parseInt($regua.css("padding-bottom")) + parseInt($regua.css("margin-bottom")) + parseInt($regua.css("border-top-width")) + parseInt($regua.css("border-bottom-width"));
				
			}
			
			window.setTimeout(function() {
				$acm.animate({
					top: fromTop
				}, {duration: 1000, complete: function() {
					window.setTimeout(function() {
						$acm.animate({
							top: $acm.height()*-2
						}, {duration: 500, complete: function() {
							$(this).remove();
						}});
					}, 3000);
				}});
			}, 400);
		}
	}
};

jQuery(document).ready(function(){
	common.init();
});
