var aActualPhoto = 0;
var aArrayPhotos = new Array();

//####################
// FORM CONTATO IMÓVEL
//####################
$(document).ready(function() {
	var validator = $("#frmContatoImovel").validate({
			onkeyup: false,
			onfocusout: false,
			onfocus: false,
			
			rules: {
				nomForm: { required: true },
				emlForm: { required: true },
				msgForm: { required: true }
			},
			
			//Error messages
			messages: {
				nomForm: { required: "Informe o nome!" },
				emlForm: { required: "Informe o e-mail!" },
				msgForm: { required: "Informa a mensagem!" }
			},
			
			//Where the errors are going to be placed
			//in the html
			errorPlacement: function(error, element) {
				
			},
			
			highlight: function(element, errorClass) {
				var aErrorMessage = validator.customMessage(element.name, "required");

				$(element).attr("title", aErrorMessage);
				setTooltip(element);
				
				$(element).addClass(errorClass);
			},
			
			unhighlight: function(element, errorClass) {
				$(element).attr("title", "");
				setTooltip(element);
				
				$(element).removeClass(errorClass);
			},

			
			//Before submiting, check the non-standard rules
			submitHandler: function(form) {
				var aVars = new Object();
				
				aVars.codCliente = $("#codClienteForm").val();
				aVars.codImovel  = $("#codImovelForm").val();
				
				aVars.nomForm = $("#nomForm").val();
				aVars.emlForm = $("#emlForm").val();
				aVars.telForm	= $("#telForm").val();
				aVars.cidForm	= $("#cidForm").val();
				aVars.estForm	= $("#estForm").val();
				aVars.msgForm	= $("#msgForm").val();
				
				//Faz POST via Ajax
				showQuickLoading("#boxMaisInformacoes", "enviando e-mail", true);
				
				$.post(
					"./lib/frm.imovel.mais_informacoes.php",
					aVars,
					function(data) {
						$("#nomForm").val("");
						$("#emlForm").val("");
						$("#telForm").val("");
						$("#cidForm").val("");
						$("#estForm").val("");
						$("#msgForm").val("");
						
						hideQuickLoading();
						
						switch (data["retorno"]) {
							case 0: alert("Ocorreu um erro desconhecido!");
											break;
							
							case 1: alert("Mensagem enviada com sucesso!");
											break;
						}
					},
					"json"
				);
				
				return false;
			}
	});
	
	$("#frmCadastroImovel").bind("invalid-form.validate", function() {
		alert("Existem campos inválidos no formulário!");
	});
});
//##################
//##################
function galeriaProxima() {
	$("#tbPhoto" + aArrayPhotos[aActualPhoto]).removeClass("selected");
	
	if (aActualPhoto == aArrayPhotos.length - 1) {
		aActualPhoto = 0;
	}
	else {
		aActualPhoto++;
	}
	
	$("#tbPhoto" + aArrayPhotos[aActualPhoto]).addClass("selected");
	
	galeriaLoad(aArrayPhotos[aActualPhoto]);
}

function galeriaAnterior() {
	$("#tbPhoto" + aArrayPhotos[aActualPhoto]).removeClass("selected");
	
	if (aActualPhoto == 0) {
		aActualPhoto = aArrayPhotos.length - 1;
	}
	else {
		aActualPhoto--;
	}
	
	$("#tbPhoto" + aArrayPhotos[aActualPhoto]).addClass("selected");
	
	galeriaLoad(aArrayPhotos[aActualPhoto]);
}

function galeriaLoad(pPhotoId) {
	if (pPhotoId || pPhotoId == 0) {
		$("#tbPhoto" + aArrayPhotos[aActualPhoto]).removeClass("selected");
		
		for (var i = 0; i < aArrayPhotos.length; i++) {
			if (aArrayPhotos[i] == pPhotoId) {
				aActualPhoto = i;
				break;
			}
		}
		
		$("#tbPhoto" + aArrayPhotos[aActualPhoto]).addClass("selected");
	}
	
	$("#ftAmpliacao" + aOldPhotoId).fadeOut(defaultSpeed, function() {
		$("#ftAmpliacao" + pPhotoId).fadeIn(defaultSpeed);
	});
	
	
	aOldPhotoId = pPhotoId;
	
	atualizaLegenda();
}

function atualizaLegenda() {
	$("#boxLegenda").html((aActualPhoto + 1) + " / " + aPhotoCount);
}

//######################
// Fumções de Calendário
//######################
var aArrayCalendario = new Array();
var aDataAtual = new Date();

function toogleData(aData) {
	var aMes = aData.getMonth();
	var aAno = aData.getFullYear();
	var aDia = aData.getDate() - 1;
	
	aArrayCalendario[aAno][aMes][aDia] = (aArrayCalendario[aAno][aMes][aDia]) ? false : true;
	
	desenhaCalendario(aDataAtual);
}

function avancaData() {
	var aMes = aDataAtual.getMonth();
	var aAno = aDataAtual.getFullYear();
	
	aDataAtual.setYear((aMes == 11) ? aAno + 1 : aAno);
	aDataAtual.setMonth((aMes == 11) ? 0 : aMes + 1);
	aDataAtual.setDate(1);
	
	desenhaCalendario(aDataAtual);
}

function retrocedeData() {
	var aMes = aDataAtual.getMonth();
	var aAno = aDataAtual.getFullYear();
	
	aDataAtual.setYear((aMes == 0) ? aAno - 1 : aAno);
	aDataAtual.setMonth((aMes == 0) ? 11 : aMes - 1);
	aDataAtual.setDate(1);
	
	desenhaCalendario(aDataAtual);
}

function desenhaCalendario(aData) {
	var aMes = aData.getMonth();
	var aAno = aData.getFullYear();
	
	geraAno(aAno);
		
	//Verifica se o mês é Janeiro, para criar o ano anterior
	if (aMes == 0) {
		geraAno(aAno - 1);
	}
	
	//Verifica se o mês é Dezembro, para criar o ano seguinte
	if (aMes == 11) {
		geraAno(aAno + 1);
	}
	
	//Cria os Objetos Dates pra utilizar
	var aDataAnterior = new Date();
	var aDataProxima = new Date();
	
	aDataAnterior.setYear((aMes == 0) ? aAno - 1 : aAno);
	aDataAnterior.setMonth((aMes == 0) ? 11 : aMes - 1);
	aDataAnterior.setDate(1);
	
	aDataProxima.setYear((aMes == 11) ? aAno + 1 : aAno);
	aDataProxima.setMonth((aMes == 11) ? 0 : aMes + 1);
	aDataProxima.setDate(1);
	
	aData.setDate(1);
	
	//Gera calendário	
	var aCodigo = "";
	
	//Desenha primeiro mês, anterior ao solicitado
	aCodigo += geraCodigo(aDataAnterior, 1);
	
	//Desenha terceiro mês, próximo ao solicitado
	aCodigo += geraCodigo(aDataProxima, 3);
	
	//Desenha o mês solicitado
	aCodigo += geraCodigo(aData, 2);
	
	aCodigo += '<div class="clear"></div>';
	
	$("#calendarioBody").html(aCodigo);
	
	aDataAtual = aData;
}

function geraCodigo(aData, aBoxNumber) {
	var aRetorno = "";
	var aMes = aData.getMonth();
	var aAno = aData.getFullYear();
	
	if (aBoxNumber == 1) aRetorno = '<div class="mes mesLeft">';
	else if (aBoxNumber == 2) aRetorno = '<div class="mes mesMiddle">';
	else aRetorno = '<div class="mes mesRight">';
	
	if (aMes == 0) aRetorno  += '<div class="title">JANEIRO > ' + aAno + '</div>';
	if (aMes == 1) aRetorno  += '<div class="title">FEVEREIRO > ' + aAno + '</div>';
	if (aMes == 2) aRetorno  += '<div class="title">MARÇO > ' + aAno + '</div>';
	if (aMes == 3) aRetorno  += '<div class="title">ABRIL > ' + aAno + '</div>';
	if (aMes == 4) aRetorno  += '<div class="title">MAIO > ' + aAno + '</div>';
	if (aMes == 5) aRetorno  += '<div class="title">JUNHO > ' + aAno + '</div>';
	if (aMes == 6) aRetorno  += '<div class="title">JULHO > ' + aAno + '</div>';
	if (aMes == 7) aRetorno  += '<div class="title">AGOSTO > ' + aAno + '</div>';
	if (aMes == 8) aRetorno  += '<div class="title">SETEMBRO > ' + aAno + '</div>';
	if (aMes == 9) aRetorno  += '<div class="title">OUTUBRO > ' + aAno + '</div>';
	if (aMes == 10) aRetorno += '<div class="title">NOVEMBRO > ' + aAno + '</div>';
	if (aMes == 11) aRetorno += '<div class="title">DEZEMBRO > ' + aAno + '</div>';
	
	aRetorno += '<div class="semana"><ul><li>D</li><li>S</li><li>T</li><li>Q</li><li>Q</li><li>S</li><li>S</li></ul></div>';
	aRetorno += '<div class="dias"><ul>';
	
	var aDiaDaSemana = aData.getDay();
	var aLinha = 1;
	var aLinhaCount = 0;
	var aLinhaCountAux = 1;
	
	//Escreve dias iniciais vazios se existir
	for (var i = 0; i < aDiaDaSemana; i++) {
		aRetorno += '<li class="' + geraDia(i, aLinha) + '"> </li>';
		aLinhaCount++;
	}
	
	//Começa a escrever dias. Escreve os que restaram na primeira linha.
	for (var i = 1; i <= aArrayCalendario[aAno][aMes].length; i++) {
		var aEvents = 'onMouseDown="return false;"';
		
		if (aArrayCalendario[aAno][aMes][i - 1]) {
			aRetorno += '<li class="selected diaDesativado" ' + aEvents + '>' + i + '</li>';
		}
		else {
			aRetorno += '<li class="' + geraDia(aLinhaCount, aLinha) + ' diaDesativado" ' + aEvents + '>' + i + '</li>';
		}
		
		aLinhaCount++;
		
		if (aLinhaCount == 7) {
			aLinha = (aLinha == 1) ? 2 : 1;
			aLinhaCount = 0;
			aLinhaCountAux++;
		}
	}
	
	//Escreve dias que faltam
	for (aLinhaCount; aLinhaCount < 7; aLinhaCount++) {
		aRetorno += '<li class="' + geraDia(aLinhaCount, aLinha) + '"> </li>';
	}
	
	//Escreve última linha se precisar
	if (aLinhaCountAux == 5) {
		aLinha = (aLinha == 1) ? 2 : 1;
		
		for (var i = 0; i < 7; i++) {
			aRetorno += '<li class="' + geraDia(i, aLinha) + '"> </li>';
		}
	}
	
	//Finaliza tags
	aRetorno += '</ul></div></div>';
	
	return aRetorno;
}

function geraDia(aDiaDaSemana, aLinha) {
	switch(aDiaDaSemana) {
		case 0: return "line" + aLinha + "light";
		case 1: return "line" + aLinha + "dark";
		case 2: return "line" + aLinha + "light";
		case 3: return "line" + aLinha + "dark";
		case 4: return "line" + aLinha + "light";
		case 5: return "line" + aLinha + "dark";
		case 6: return "line" + aLinha + "light";
	}
}

function geraAno(aAno) {
	//Verifica se existe o ano no Array, senão cria
	if (!aArrayCalendario[aAno]) {
		aArrayCalendario[aAno] = new Array();
		aArrayCalendario[aAno][0] = new Array(31);
		aArrayCalendario[aAno][1] = (aAno % 4 == 0) ? new Array(29) : new Array(28);
		aArrayCalendario[aAno][2] = new Array(31);
		aArrayCalendario[aAno][3] = new Array(30);
		aArrayCalendario[aAno][4] = new Array(31);
		aArrayCalendario[aAno][5] = new Array(30);
		aArrayCalendario[aAno][6] = new Array(30);
		aArrayCalendario[aAno][7] = new Array(31);
		aArrayCalendario[aAno][8] = new Array(30);
		aArrayCalendario[aAno][9] = new Array(31);
		aArrayCalendario[aAno][10] = new Array(30);
		aArrayCalendario[aAno][11] = new Array(31);
	}
}
//##################
//##################
