var message = {
	title	: 'message_title_ajax',
	content : 'message_content_ajax',
	field	: 'message_ajax',
	close	: 'message_close_ajax',
	login	: 'message_login_ajax',
	action	: 'message_action_ajax'
}
var action = {
	vote	: 'votar',
	comment	: 'comentar',
	report	: 'denunciar',
	post	: 'excluir posts',
	author	: 'adicionar autor',
	card	: 'adicionar cartão'
}

var controlCard = new Object();
controlCard = {
	delPost : function(post, card, element, recursive) {
		var ahref = $A(element.parentNode.getElementsByTagName('a'));
		var spans = $A(element.parentNode.getElementsByTagName('span'));
		var nome = $(element).previous(0).innerHTML.strip();
		var data = spans[0].innerHTML;

		if(this.confirmDel(nome, data)) {
			UtilControls.setBox(message.field);
			$(message.title).update('Excluir post');

			new Ajax.Request(UtilControls.getBaseURL() + '/cartao/post/', {
				method:		'post',
				postBody: 'acao=delete&post=' + post + '&card=' + card,
				onLoading : function() {
					$(message.content).update('Aguarde excluindo o post selecionado!');
					UtilControls.modal(true);
				},
				onComplete : function(req){
					var json = req.responseText.evalJSON();
					$(message.content).update(json.innerHTML);
					if(json.result) {
						UtilControls.modal(false, 1500);
						if(recursive == '1') {
							var total = $(element).up(1).nextSiblings().length;
							if(total > 0) {
								var current = null;
								var nextPost = true;
								var classe, images;
								var i = 0;
								do {
									current = $(element).up(1).next(i);
									classe = current.className;
									images = $A(current.getElementsByTagName('img')).length;
									if(images == 1) {
										new Effect.Fade(current);
									} else {
										nextPost = false;
									}

									i++;

									if(i == total){
										nextPost = false;
									}

								} while(nextPost);
							}
						}
						new Effect.Fade($(element.up(1)));
					} else {
						if(UtilControls.redirect(json)) {
							$(message.title).update('Login do sistema');
							$(message.action).update(action.post);
							$(message.content).update($(message.login).cloneNode(true).innerHTML);
						} else {
							UtilControls.modal(false, 2500);
						}
					}
				},
				onFailure : function(){
					alert('Ops! um erro bizarro ocorreu na transação AJAX!');
				}
			});
		}
	},

	confirmDel : function(nome, data) {
		var text   = 'Você tem certeza que deseja excluir o comentário de\n\n"' + nome + '"\n\npostado em\n\n"' + data + '"\n\n';
		var result = confirm(text);
	    return result;
	},

	result : function() {
		var box = $('result_box');

		if(box) {
			var element = box.cloneNode(true);
			$(message.title).update('Resultado parcial');
			$(message.content).setStyle({background:'#3A3A3A'});
			$(message.content).update(element);
		} else {
			$(message.title).update('Login do sistema');
			$(message.action).update(action.vote);
			$(message.content).update($(message.login).cloneNode(true).innerHTML);
		}

		UtilControls.setBox(message.field);
		UtilControls.modal(true);
	},

	goGallery : function(id, category) {
		var form = $('jump_menu');
		if(category) {
			form.menu_categorias.value = id;
		} else {
			form.menu_estilo.value = id;
		}
		form.submit();
	},

	dataVote : new Array(),

	setVote : function(element, value) {
		var star = $(element).up(1).firstDescendant();
		var field = star.id.substr((star.id.indexOf('_') + 1));

		star.setStyle({width: (value * 20) + '%', zindex: 100});

		this.dataVote[field] = value;
	},

	sendVote : function(card) {
		var values = new Array();

		for(i=1; i<this.dataVote.length; i++) {
			if(typeof(this.dataVote[i]) != 'undefined') {
				values.push(i + '=' + this.dataVote[i]);
			}
		}

		var post = values.join('&');

		if(post) {
			var rank = $('rank_card');
			new Ajax.Request(UtilControls.getBaseURL() + '/cartao/vote/card/' + card, {
				method: 'post',
				postBody: post,
				onLoading : function() {
					$(message.content).update('Processando seu voto, por favor aguarde!');
					UtilControls.modal(true);
				},
				onComplete : function(req){
					var json = req.responseText.evalJSON();
					if(json.result) {
						// Atualiza o rating
						rank.update(json.rating);
					}
					if(UtilControls.redirect(json)) {
						$(message.title).update('Login do sistema');
						$(message.action).update(action.vote);
						$(message.content).update($(message.login).cloneNode(true).innerHTML);
					} else {
						$(message.content).update(json.innerHTML);
						UtilControls.modal(false, 2500);
					}
				},
				onFailure : function(){
					alert('Ops! um erro bizarro ocorreu na transação AJAX!');
				}
			});
		} else {
			alert('Você não votou em nenhuma categoria, tente novamente!');
		}
	},

	vote : function(card) {

		var box = $('voto_box');

		if(box) {
			var element = box.cloneNode(true);
			element.id = card + '_' + element.id;
			$(message.title).update('Votar na Logo');
			$(message.content).setStyle({background:'#1C3A57'});
			$(message.content).update(element.innerHTML);
		} else {
			$(message.title).update('Login do sistema');
			$(message.action).update(action.vote);
			$(message.content).update($(message.login).cloneNode(true).innerHTML);
		}

		UtilControls.setBox(message.field);
		UtilControls.modal(true, 2500);

	},

	resetVote : function(element) {
		var stars = $$('#' + $(element).up(4).id + ' li.current-rating');

		stars.each(function(star) {
			star.setStyle({width: '0%', zindex: 0});
		});

		this.dataVote = new Array();
	},

	addCard : function(card) {

		UtilControls.setBox(message.field);
		$(message.title).update('Logos favoritas');
		new Ajax.Request(UtilControls.getBaseURL() + '/cartao/addcard', {
			method:		'post',
			postBody: 'card=' + card,
			onLoading : function() {
				$(message.content).update('Adicionando logo ao seus favoritos, aguarde!');
				UtilControls.modal(true);
			},
			onComplete : function(req){
				var json = req.responseText.evalJSON();
				if(!json.result) {
					if(UtilControls.redirect(json)) {
						$(message.title).update('Login do sistema');
						$(message.action).update(action.card);
						$(message.content).update($(message.login).cloneNode(true).innerHTML);
					} else {
						$(message.content).update(json.innerHTML);
						UtilControls.modal(false, 2500);
					}
				} else {
					$(message.content).update(json.innerHTML);
					UtilControls.modal(false, 2500);
				}
			},
			onFailure : function(){
				alert('Ops! um erro bizarro ocorreu na transação AJAX!');
			}
		});
	},

	addAuthor : function(author) {
		UtilControls.setBox(message.field);
		$(message.title).update('Autores favoritos');

		new Ajax.Request(UtilControls.getBaseURL() + '/cartao/addAuthor', {
			method:		'post',
			postBody: 'author=' + author,
			onLoading : function() {
				$(message.content).update('Adicionando autor ao seus favoritos, aguarde!');
				UtilControls.modal(true);
			},
			onComplete : function(req){
				var json = req.responseText.evalJSON();
				if(!json.result) {
					if(UtilControls.redirect(json)) {
						$(message.title).update('Login do sistema');
						$(message.action).update(action.author);
						$(message.content).update($(message.login).cloneNode(true).innerHTML);
					} else {
						$(message.content).update(json.innerHTML);
						UtilControls.modal(false, 2500);
					}
				} else {
					$(message.content).update(json.innerHTML);
					UtilControls.modal(false, 2500);
				}
			},
			onFailure : function(){
				alert('Ops! um erro bizarro ocorreu na transação AJAX!');
			}
		});
	},

	addIrregularity : function(card) {
		var input	= 'desc_denounces';

		UtilControls.setBox(message.field);
		$(message.title).update('Denunciar logo');

		if($(input)) {
			var params	= 'acao=save&card=' + card + '&desc=' + $F(input);
			var load	= 'Aguarde, enviando a sua denúncia!';
		} else {
			var params	= 'acao=form&card=' + card;
			var load	= 'Aguarde, carregando o formulário!';
		}

		new Ajax.Request(UtilControls.getBaseURL() + '/cartao/addirregularity', {
			method:	'post',
			postBody: params,
			onLoading : function() {
				$(message.content).update(load);
				UtilControls.modal(true);
			},
			onComplete : function(req){
				var json = req.responseText.evalJSON();
				if(json.result) {
					if(typeof(json.box) != 'undefined') {
						$(message.content).update(json.box);
						$(input).focus();
					} else {
						$(message.content).update(json.innerHTML);
						UtilControls.modal(false, 2500);
					}
				} else {
					if(UtilControls.redirect(json)) {
						$(message.title).update('Login do sistema');
						$(message.action).update(action.report);
						$(message.content).update($(message.login).cloneNode(true).innerHTML);
					} else {
						$(message.content).update(json.innerHTML);
						UtilControls.modal(false, 2500);
					}
				}
			},
			onFailure : function(){
				alert('Ops! um erro bizarro ocorreu na transação AJAX!');
			}
		});
	},

	addComment : function(card, id_comentario) {
		var input	= 'desc_comentario';
		var comment = 'comentarios';

		UtilControls.setBox(message.field);
		$(message.title).update('Adicionar comentário');

		if($(input)) {
			var params	= 'acao=save&card=' + card + '&comment=' + $F(input) + '&id_comentario=' + id_comentario;
			var load	= 'Aguarde, enviando o seu comentário!';
		} else {
			var params	= 'acao=form&card=' + card + '&id_comentario=' + id_comentario;
			var load	= 'Aguarde, carregando o formulário!';
		}

		new Ajax.Request(UtilControls.getBaseURL() + '/cartao/post', {
			method:	'post',
			postBody: params,
			onLoading : function() {
				$(message.content).update(load);
				UtilControls.modal(true);
			},
			onComplete : function(req){
				var json = req.responseText.evalJSON();
				if(json.result) {
					if(typeof(json.box) != 'undefined') {
						$(message.content).update(json.box);
						$(input).focus();
					} else if(typeof(json.comment) != 'undefined') {
						if($A($(comment).getElementsByTagName('a')).length == 0){
							$(comment).update();
						}

					UtilControls.getBaseURL() + '/cartao/post'
					}
				} else {
					if(UtilControls.redirect(json)) {
						$(message.title).update('Login do sistema');
						$(message.action).update(action.comment);
						$(message.content).update($(message.login).cloneNode(true).innerHTML);
					} else {
						$(message.content).update(json.innerHTML);
						UtilControls.modal(false, 2500);
					}
				}
			},
			onFailure : function(){
				alert('Ops! um erro bizarro ocorreu na transação AJAX!');
			}
		});
	},

	frente_verso : function() {
		var verso  = 'card_verso';
		var frente = 'card_frente';
		if($(verso) != null){
			if($(verso).style.display == 'none'){
				$(verso).style.display = 'block';
				$(frente).style.display = 'none';
			}else {
				$(verso).style.display = 'none';
				$(frente).style.display = 'block';
			}
		}
	},

	close : function() {
		$(message.content).setStyle({background:'#FFFFFF'});
		$(message.content).update();
		UtilControls.modal(false);
	}
}