function validateExpression(str,exp) {
	var regex = {
		isNumeric: /^[0-9]+$/,
		isAlphabet: /^[A-Za-zá-úÁ=Ú.\s]+$/,
		isAlphanumeric: /^[0-9a-zA-Z]+$/,
		isFullText: /^^[0-9a-zA -]+[-!+=?]+$/,
		isDDD: /\d{2}/,
		isTelefone: /\d{4}-\d{4}/,
		emailExp: /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/,
		zipCode: /\d{5}-\d{3}?/,
		data: /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/(19|20)?\d{2}$/
	};
	return  (str.match(regex[exp])) ? true : false;
}
function alltrim(str) {
	return str.replace(/^\s+|\s+$/g, '');
}
function madeSelection(str){
	return ((str == "none" || str == "")) ? false : true;
}
$(document).ready(function(){
/***********************************/
/*validacao*/
/**********************************/

	
	$("#email").blur(function (){
		var $form = $(this);
		var email = $('#email').val();
		if(email != "" && validateExpression(email,'emailExp') ){
			$.ajax({
				type: "POST",
				url: "/verificaEmail/",
				data: ({
					email: $('#email').val()
				}),
				dataType: "html",
				success: function(callback){
					if(callback == "ok"){
						$("#email").removeClass("camposError");
						$(".errorEmail").fadeOut();
					}else if(callback == "nok"){
						$("#email").addClass("camposError");
						$("#email").focus();
						$(".errorEmail").fadeIn(300);
					}
				}
			})
		}
	})

	function enviarCadastro() {
		var $form = $("#form0cadastrar0passo1");
		$.ajax({
			type: "POST",
			url: "usuario/",
			data: $form.serialize(),
			success: function(callback){
				$form.submit();
			}
		})
	}
	function enviarCadastroLoja() {
		var $form = $("#form0cadastrar0passo2");
		$.ajax({
			type: "POST",
			url: "inserir/",
			data: $form.serialize(),
			success: function(callback){
				$form.submit();
			}
		})
	}
	$('#realizar0pagamento').click(function () {
		$('#fpagamento').submit();
	})
	
	
	
	function enviarEdicaoLoja() {
		var $form = $("#form0editar0loja");
		$.ajax({
			type: "POST",
			url: "/editarLoja/",
			data: $form.serialize(),
			success: function(callback){
				$form.submit();
				//alert(callback);
			}
		})
	}

/****************************************************************************************************************************************************************/
/***** cadastro produto *******/
/****************************************************************************************************************************************************************/
	$("#bt0cadastrarProduto").click(function (){
		var errosMSG = new Array(
			'Os campos com (*) s&atilde;o obrigat&oacute;rios ',
			'Escolha o prazo de encomenda, ou desabilite a op&ccedil;&atilde;o (Este produto &eacute; feito sob encomenda)'
		);
		var fieldsID = new Array('nomeProduto','descricao','categoriaProduto','preco','preco','quantidade','tags');//define um array com os ids dos campos que quer verificar
		var errors = new Array();
		var fieldValue = '';
		for(i = 0; i < fieldsID.length; i++) {
			var fieldID = fieldsID[i];
			campo = document.getElementById(fieldID);
			fieldValue = alltrim(campo.value);
			
			campo.value = fieldValue;			
			
			if (fieldValue.length == 0) { //Verifica se os campos estao vazios
				errors.push(errosMSG[0]);
				break;
			}
			
		}//end for
		if ($('#encomenda').is(':checked')){ 
			if( $("#prazoEncomenda").val() == ''){
				errors.push(errosMSG[1]);
			}
		}
		if(errors.length > 0) {
			$(window).scrollTop(100);
			var alertMSG = "<p>Desculpe, existem erros no preenchimento do formul&aacute;rio, veja:</p><ul>";
			for(i = 0; i < errors.length; i++) {
				alertMSG +=  "<li>"+errors[i]+"</li>";
			}
			alertMSG = alertMSG + "</ul>";
			$('.error').html(alertMSG);
			$('.error').fadeIn(300);
		} else {
			$('.error').fadeOut();
			$('#areaBotao').html('<img src="/imagens/bt0aguarde.gif">');
			enviarCadastroProduto();
			//alert('tudo ok');
		}//end if
		
	})
	
	function enviarCadastroProduto() {
		var $form = $("#form0cadastro0produto");
		$.ajax({
			type: "POST",
			url: "inserir/",
			data: $form.serialize(),
			success: function(callback){
				$form.submit();
				//console.log(callback);
			}
		})
	}
	$("#bt0termosdeuso").click(function (){
		$.ajax({
			type: "GET",
			url: "/termosdeuso/",
			success: function(callback){
				$("#termosdeusoTexto").fadeIn();
				$("#termosdeusoTexto").html(callback);
			}
		})
	})
/****************************************************************************************************************************************************************/

/****************************************************************************************************************************************************************/
	$("#bt0logar").click(function (){
		var $form = $("#fLogin");
		$.ajax({
			type: "POST",
			url: "/entrar/logando/",
			data: $form.serialize(),
			success: function(callback){
				if(callback == 1){
					location = ("/minhaconta/");
				}else{
					$("#message").html('<div class="miniError">Ops...Ocorreu um erro no seu login!</div>');
					$(".miniError").fadeIn();
				}
			}
		})
	})
	$("#emailLogin,#senhaLogin").keydown(function(e){
		if (e.keyCode == 13) $("#bt0logar").click();
	});
/*
	$("#bt0logar").click(function (){
		var $form = $("#fLogin");
		$.ajax({
			type: "POST",
			url: "/entrar/logando/",
			data: $form.serialize(),
			dataType: "json",
			success: function(callback){
				if(callback == 1){
					location = ("/minhaconta/");
				}
			}
		})
	})*/
/***********************************/
/*validacao do cadastro de usuario */
/**********************************/
	function cadastroPasso1() {
		//$('#msg').html('').removeClass('error');
		var errosMSG = new Array(
			'Nenhum campo pode ser deixado em branco',
			'O <strong>Nome</strong> pode conter apenas letras!',
			'A <strong>Data de Nascimento</strong> est&aacute; informado incorretamente veja exemplo ao lado',
			'O <strong>CEP</strong> digitado est&aacute; incorreto',
			'O campo <strong>E-mail</strong> esta inv&aacute;lido!',
			'Os emails n&atilde;o conferem',
			'Voc&ecirc; precisa obrigatoriamente aceitar os termos e condi&ccedil;&otilde;es do site',
			'<strong>Senhas</strong> n&atilde;o conferem',
			'<strong>Emails</strong> n&atilde;o conferem',
			'Um <strong>Estado</strong> precisa ser selecionado!',
			'Uma <strong>Cidade</strong> precisa ser selecionado!'
		);
		var fieldsID = new Array('nome','dataNascimento','endereco','cidade','estado','cep','email','emailConfirma','senha','senhaConfirma');//define um array com os ids dos campos que quer verificar
		var errors = new Array();
		var fieldValue = '';
		for(i = 0; i < fieldsID.length; i++) {
			var fieldID = fieldsID[i];
			campo = document.getElementById(fieldID);
			fieldValue = alltrim(campo.value);
			campo.value = fieldValue;			
			
			if (fieldValue.length == 0) { //Verifica se os campos estao vazios
				errors.push(errosMSG[0]);
				break;
			}

			switch(fieldID) {//Faz a verificacao especifica de cada campo
				case 'nome':
					fieldValue = fieldValue.replace(/\s/g,'');
					if(!validateExpression(fieldValue,'isAlphabet')) {
						errors.push(errosMSG[1]);
					}
					break;
				/*case 'dataNascimento':
					if(!validateExpression(fieldValue,'data')) {
						errors.push(errosMSG[2]);
					}
					break;*/
				case 'cep':
					if(!validateExpression(fieldValue,'zipCode')) {
						errors.push(errosMSG[3]);
					}
					break;
				case 'email':
					if(!validateExpression(fieldValue,'emailExp')) {
						errors.push(errosMSG[4]);
					}
					break;
				case 'emailConfirma':
					if (fieldValue != $('#emailConfirma').val()){
						errors.push(errosMSG[5]);
					}
					break;
				case 'estado':
					if(!madeSelection(fieldValue)) {
						errors.push(errosMSG[9]);
					}
					break;
				case 'cidade':
					if(!madeSelection(fieldValue)) {
						errors.push(errosMSG[10]);
					}
					break;
				default:
					break;
			}
		}//end for
		if ($('#aceitarTermos').is(':checked')){ 
			
		}else{
			errors.push(errosMSG[6]);
		}
		
		var email = alltrim($('#email').val());
		var emailConfirma = alltrim($('#emailConfirma').val());

		if( email != emailConfirma ){
			$('#emailConfirma').focus();
			errors.push(errosMSG[8]);
		}
		
		var senha = alltrim($('#senha').val());
		var senhaConfirma = alltrim($('#senhaConfirma').val());

		if( senha != senhaConfirma ){
			$('#senhaConfirma').focus();
			errors.push(errosMSG[7]);
		}

		if(errors.length > 0) {
			$(window).scrollTop(100);
			var alertMSG = "<p>Desculpe, existem erros no preenchimento do formul&aacute;rio, veja:</p><ul>";
			for(i = 0; i < errors.length; i++) {
				alertMSG +=  "<li>"+errors[i]+"</li>";
			}
			alertMSG = alertMSG + "</ul>";
			$('.error').html(alertMSG);
			$('.error').fadeIn(300);
		} else {
			$('.error').fadeOut();
			enviarCadastro();
		}//end if
	}
/***********************************/
/*validacao do cadastro de loja */
/**********************************/
	function cadastroLoja() {
		//$('#msg').html('').removeClass('error');
		var errosMSG = new Array(
			'Os campos com (*) s&atilde;o obrigatórios ',
			'O nome da loja pode conter apenas letras e numeros',
			'Escolha um plano',
			'Selecione pelo menos 1 forma de pagamento',
			'Insira seu email do PagSeguro'
		);
		var fieldsID = new Array('nomeLoja','descricao','ddd','telefone');//define um array com os ids dos campos que quer verificar
		var errors = new Array();
		var fieldValue = '';
		for(i = 0; i < fieldsID.length; i++) {
			var fieldID = fieldsID[i];
			campo = document.getElementById(fieldID);
			fieldValue = alltrim(campo.value);
			
			campo.value = fieldValue;			
			
			if (fieldValue.length == 0) { //Verifica se os campos estao vazios
				errors.push(errosMSG[0]);
				break;
			}
			
			switch(fieldID) {//Faz a verificacao especifica de cada campo
				case 'nomeLoja':
					fieldValue = fieldValue.replace(/\s/g,'');
					if(!validateExpression(fieldValue,'isAlphabet')) {
						errors.push(errosMSG[1]);
					}
					break;
				default:
					break;
			}
		}//end for
		if(errors.length > 0) {
			$(window).scrollTop(100);
			var alertMSG = "<p>Desculpe, existem erros no preenchimento do formul&aacute;rio, veja:</p><ul>";
			for(i = 0; i < errors.length; i++) {
				alertMSG +=  "<li>"+errors[i]+"</li>";
			}
			alertMSG = alertMSG + "</ul>";
			$('.error').html(alertMSG);
			$('.error').fadeIn(300);
		} else {
			$('.error').fadeOut();
			enviarCadastroLoja();
			//alert('tudo ok');
		}//end if
	}
function editarLoja() {
		//$('#msg').html('').removeClass('error');
		var errosMSG = new Array(
			'Os campos com (*) s&atilde;o obrigatórios ',
			'Selecione pelo menos 1 forma de pagamento',
			'Insira seu email do PagSeguro'
			);
		var fieldsID = new Array('descricao','ddd','telefone');//define um array com os ids dos campos que quer verificar
		var errors = new Array();
		var fieldValue = '';
		for(i = 0; i < fieldsID.length; i++) {
			var fieldID = fieldsID[i];
			campo = document.getElementById(fieldID);
			fieldValue = alltrim(campo.value);
			
			campo.value = fieldValue;
			
			if (fieldValue.length == 0) { //Verifica se os campos estao vazios
				errors.push(errosMSG[0]);
				break;
			}
			if( $('#formaPagamentPagseguro').is(':checked') ){
				//console.log('if :: 1')
				if( $('#emailPs').length == 0 ){
					errors.push(errosMSG[2]);
					//console.log('if :: 2')
				}
			}
			switch(fieldID) {//Faz a verificacao especifica de cada campo
				/*case 'descricao':
					fieldValue = fieldValue.replace(/\s/g,'');
					if(!validateExpression(fieldValue,'isAlphabet')) {
						errors.push(errosMSG[1]);
					}
				break;*/
				default:
					break;
			}
		}//end for
		if(errors.length > 0) {
			$(window).scrollTop(100);
			var alertMSG = "<p>Desculpe, existem erros no preenchimento do formul&aacute;rio, veja:</p><ul>";
			for(i = 0; i < errors.length; i++) {
				alertMSG +=  "<li>"+errors[i]+"</li>";
			}
			alertMSG = alertMSG + "</ul>";
			$('.error').html(alertMSG);
			$('.error').fadeIn(300);
		} else {
			$('.error').fadeOut();
			enviarEdicaoLoja();
			//alert('tudo ok');
		}//end if
	}

	$("#bt0cadastrarP1").click(function (){
		cadastroPasso1();
	})
	$("#bt0criarLoja").click(function (){
		cadastroLoja();
	})
	$("#bt0editarLoja").click(function (){
		editarLoja();

	})


})
