function toTop(e)
{
	$("html, body").animate({scrollTop: 0}, "normal");
}

function initShortcuts()
{
	$(document).keydown(function(e) {
		var s = "";
		if(e.keyCode == 39)	s = $("link[rel=next]")[0].href;
		if(e.keyCode == 37)	s = $("link[rel=prev]")[0].href;
		if(s!= "") location = s;
	});
}

function articleIndexHide(index)
{
	(index.innerHTML == '[mostrar]') ? $("#indice li[class!=first]").show("normal") : $("#indice li[class!=first]").slideUp('normal');
	index.innerHTML = (index.innerHTML == '[mostrar]') ? '[esconder]' : '[mostrar]';
}



function articleIndex()
{
	var titles = $('.article h2:not(.comment-header), .article h3');
	
	var titlesCopy = new Array();
	titles.each(function (){
		if(!$(this.parentNode).hasClass("attachments-list"))
			titlesCopy.push(this);}
	);
	titles = titlesCopy;
	if(titles.length < 2) return;
	var classIndice = (titles[0].innerHTML.length > 2) ? 'indice-vertical' : 'indice-horizontal';
	
	var menu = '<ul id="indice" class="' + classIndice + '" >';
	if(classIndice == 'indice-vertical') menu += "<li class='first'>Índice <a style='cursor:pointer' onclick='articleIndexHide(this)'>[mostrar]</a></li>";
	var h2Count = 1;
	var h3Count = 1;
	
	
	for(var i=0; i<titles.length; i++)
	{
		var itemId = titles[i].id;
		var isH2 = titles[i].nodeName == "H2" ? true : false;
		if(isH2) h3Count = 1;
		
		//if(!isH2 && titles[i].innerHTML.length > 40) continue;
		var count = isH2 ? h2Count + ".": ((h2Count-1) + "." + h3Count + ".");
		titles[i].id =  makeLink(titles[i].innerHTML);
		if(titles[i].innerHTML.match(/^\s*\d+\)/)) count = "";
		menu += "<li " + (!isH2 ? "class='sub'" : "") +">" + count + " <a href='#" + titles[i].id + "'>" + titles[i].innerHTML + "</a></li>";
		if(!isH2) $(titles[i]).prepend('<a style="cursor:pointer" onclick="toTop()" class="toTop">topo</a>');
		isH2 ? h2Count++ : h3Count++;
	}
	//var div = document.createElement('div');
	//div.innerHTML = menu  + "</ul>";
	//titles[0].parentNode.insertBefore(div.firstChild, titles[0]);
	$($(titles[0].parentNode).find("br[clear=all]")[0]).replaceWith("<br clear='all' />" + menu + "</ul>");
	/*$("#indice li[class!=first] a").click( function (){
		$("#indice li[class=first] a")[0].innerHTML = "[mostrar]";
		$("#indice li[class!=first]").slideUp('normal'); });*/
	$("#indice li[class!=first]").hide();
}

function makeLink(str)
{
	return str.toLowerCase()
	.replace(/[àáâãª]/g, "a")
	.replace(/[éê]/g, "e")
	.replace(/[í]/g, "i")
	.replace(/[óôõº]/g, "o")
	.replace(/[ûúü]/g, "u")
	.replace(/[ç]/g, "c")
	.replace(/[^a-z0-9 -]/g, "")
	.replace(/[ -]+/g, "-");
}

function initMenu() {
  $('#menu ul').hide();
  
  var x = $('#menu .selected');
  if(x.length > 0)
  {
	  x = x[0].nextSibling;
	  if(x.nodeName == "#text") x = x.nextSibling;
	  $(x).show();
  }
  
  $('#menu li a').click(
    function() {
	
      var checkElement = $(this).next();
      if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
    	  return true;
        }
      if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
        $('#menu ul:visible').slideUp('normal');
        checkElement.slideDown('normal');
        $('#menu .selected').removeClass("selected");
        $(this).addClass("selected");
        return false;
        }
      }
    );
  }


function showLoginForm(e) {
	if ($(this).hasClass("open")){
		$(this).removeClass("open");
		$(this.parentNode).find(".formBody").slideUp("normal");
	}
	else {
		$(this).addClass("open");
		$(this.parentNode).find(".formBody").slideDown("normal");
	}
}

$(document).ready(function() {
	initShortcuts();
	initMenu();
	articleIndex();
	$("#Header .loginForm h2").click(showLoginForm);
	
	$(".ui-tabs-nav-item a").click(function(){	
		if($(this.parentNode).hasClass("ui-tabs-selected")) 
			location = $(this.href.replace(/.*?#/, "#") + " a")[0].href;
		}
	);
	
	//besteira
	$("li.Container, .articleListItem").hover(
		
		function(){var e = this; if(e.animating) return; e.animating = true; $(this).animate({width:"365px"},200, function(){e.animating = false;});},
		function(){$(this).animate({width:"345px"},200);}
	);
	
	$("#Controlls a").each(function(){this.href="javascript:void(0);"; $(this).click(toTop);});
	
});

FECAFForm = function (element, args)
{
	this.element = $(element);
	this.loadId = 0;
	this.participantsFieldSet = new Cnec.FieldGroupList(this.element.find(".participants")[0]);
	this.service = new Cnec.RemoteObject(args.endpoint, "FECAF");
	this.service.addMethod("loadGroup", Cnec.bindfn(this.onLoadGroup, this));
	this.service.addMethod("addGroup", Cnec.bindfn(this.onAddGroup, this));
	this.service.addMethod("updateGroup", Cnec.bindfn(this.onUpdateGroup, this));
	this.element.bind("submit", Cnec.bindfn(this.addGroup, this));
	this.element.find(".load").click(Cnec.bindfn(this.loadGroup, this));
	this.validate = Cnec.bindfn(Cnec.validateForm, element);
};

FECAFForm.prototype.viewToModel = function()
{
	var form = this.element[0];
	var group = {};
	group.name = form.groupName.value;
	group.music = form.music.value;
	group.contact = form.contact.value;
	group.email = form.email.value;
	group.password = form.password.value;
	if(form.name.length == null)
	{
		var participant = {};
		participant.name = form.name.value;
		participant.instruments = form.instruments.value;
		participant.school = form.school.value;
		participant.grade = form.grade.value;

		group.participants = [participant];
	}
	else
	{
		group.participants = [];
		for(var i = 0; i < form.name.length ;i++)
		{
			participant = {};
			participant.name = form.name[i].value;
			participant.instruments = form.instruments[i].value;
			participant.school = form.school[i].value;
			participant.grade = form.grade[i].value;
			group.participants.push(participant);
		}
	}
	return group;
}

FECAFForm.prototype.modelToView = function(group)
{
	var form = this.element[0];
	form.groupName.value = group.name;
	form.contact.value = group.contact;
	form.music.value = group.music;
	
	this.participantsFieldSet.element.find(".item:not(:first)").detach();
	var item =  this.participantsFieldSet.element.find(".item");
	for(var i = 0; i < group.participants.length; i++)
	{
		item.find("input[name=name]").val(group.participants[i].name);
		item.find("input[name=instruments]").val(group.participants[i].instruments);
		item.find("input[name=school]").val(group.participants[i].school);
		item.find("input[name=grade]").val(group.participants[i].grade);
		if((i+1) < group.participants.length)
			item = this.participantsFieldSet.add(item, true);
	}
}

FECAFForm.prototype.loadGroup = function(e)
{
	var form = this.element[0];
	var password = form.password.value;
	var email = form.email.value;
	this.service.loadGroup(email, password);
}

FECAFForm.prototype.addGroup = function(e)
{
	if(this.loadId == 0) 
	{
		alert("Agora só é possível a edição dos dados de um grupo cadastrado.\nInforme e-mail e senha para editar as informações do seu grupo.");
		return false;
	}
	if(!this.validate()) return false;
	var group = this.viewToModel();
	if(this.loadId != 0)
		this.service.updateGroup(this.loadId, group);
	else
		this.service.addGroup(group);
	return false;
}

FECAFForm.prototype.onLoadGroup = function(result)
{
	if(result == null)
	{
		alert("E-mail ou senha estão errados");
		return;
	}
	this.loadId = result.id;
	this.element.find(".submit input").val("Salvar");
	this.modelToView(result);
}

FECAFForm.prototype.onAddGroup = function(result)
{
	alert("Grupo cadastrado com sucesso!");
	location = "grupos-cadastrados";
}

FECAFForm.prototype.onUpdateGroup = function(result)
{
	alert("Grupo atualizado com sucesso!");
	location = "grupos-cadastrados";
}





