var cleader,
    csettings = {};

/* Tours became months. Dirty hook */
var toursMonthsHook = [
	{
		singular: 'март',
		genetative: 'марта',
		year: '2011'
	},
	{
		singular: 'апрель',
		genetative: 'апреля',
		year: '2011'
	},
	{
		singular: 'май',
		genetative: 'мая',
		year: '2011'
	},
	{
		singular: 'июнь',
		genetative: 'июня',
		year: '2011'
	},
	{
		singular: 'июль',
		genetative: 'июля',
		year: '2011'
	},
	{
		singular: 'август',
		genetative: 'августа',
		year: '2011'
	},
	{
		singular: 'сентябрь',
		genetative: 'сентября',
		year: '2011'
	},
	{
		singular: 'октябрь',
		genetative: 'октября',
		year: '2011'
	},
	{
		singular: 'ноябрь',
		genetative: 'ноября',
		year: '2011'
	},
	{
		singular: 'декабрь',
		genetative: 'декабря',
		year: '2011'
	},
	{
		singular: 'март 2011',
		genetative: 'марта',
		year: '2012'
	},
	{
		singular: 'апрель 2011',
		genetative: 'апреля',
		year: '2012'
	}
];
	
$(document).ready(function(){
	//validating form on first page;
	if($('.selector')[0]){
		$("#vote-submit").attr('src','img/vote-submit-disabled.gif');
		$("#vote-submit")[0].disabled=true;
		var amplua=$('#layout .tour');
		var m=0;
		var loginInput=$('#lm-login'); 
		var errorInLoginBlock=$('.submit .login-error');
		var userIsLoggedIn=!(errorInLoginBlock.find('p strong a').length);
		errorInLoginBlock.find('a').click(function(e){
			e.preventDefault();
			
			loginInput.focus();
		})
 		for(var i=0;i<amplua.length;i++){	
			player=$('li dl:not(input)',amplua[i]);
			for(var j=0;j<player.length;j++){
				if($("input:eq("+j+")",amplua[i]).attr('checked')==true){
					$(".player-block:eq("+j+")",amplua[i]).addClass('selected');			
					m+=1;
					if(m==4 && userIsLoggedIn){
						$("#vote-submit").removeAttr('disabled');
						$("#vote-submit").attr('src','img/vote-submit.gif');
					}
				}			
				player[j].onclick=(function(i,j){
					return function(){
						$("input[checked]",amplua[i]).removeAttr("checked");
						$(".selected",amplua[i]).removeClass('selected');
						
						var currentRadio = $("input:eq("+j+")",amplua[i]);
						
						if (!currentRadio.attr('disabled')) {
							$(".player-block:eq("+j+")",amplua[i]).addClass('selected');			
							currentRadio.attr('checked','checked');							
						}
								
						$("#vote-submit").attr('disabled','false');
						var t=0;
						for(var m=0;m<amplua.length;m++){
							if(!($("input[checked]",amplua[m])[0])){
								t+=1;
							}
						}
						if(t==0 && userIsLoggedIn){
							$("#vote-submit")
								.removeAttr('disabled')
								.attr('src','img/vote-submit.gif')
						}
						else{
							$("#vote-submit")[0].disabled=true;
							$("#vote-submit").attr('src','img/vote-submit-disabled.gif')
						}
					}
				})(i,j);
			}
		}
	}


	//Drawing charts on result page;
	
	var votechartsflag=$('.sizer')[0];
	if(votechartsflag){
		var vote_arr=[];
		var fixed_height=130;
		var votes=$('.votes');
		for(var i=0;i<votes.length;i++){
			vote_arr.push(votes[i].innerHTML.match(/\d*/gi)[0]);
		}
		var max_vote=Math.max.apply(Math,vote_arr);
		var onevote_height=fixed_height/max_vote;
		var sizer;
		for(var i=0;i<votes.length;i++){
			player_votes=votes[i].innerHTML.match(/\d*/gi)[0];
			$(".sizer:eq("+i+")").css("height",player_votes*onevote_height);
			$("small",votes[i])[0].innerHTML=votes_word(player_votes);
		}
	}
	
	//Calculating percents in tour results page;

	var votepercentflag=$('.percents')[0];
	if(votepercentflag){
		var amplua_block=$('.tour');
		for(var i=0;i<amplua_block.length;i++){
			vote_block=$('.votes',amplua_block[i]);
			var sum_votes=0;
			var vote_percent=0;
			var votes_arr=[];
			for(var j=0;j<vote_block.length;j++){
				vote_num=vote_block[j].innerHTML.match(/\d+/)[0];
				$("small",vote_block[j])[0].innerHTML=votes_word(vote_num);
				sum_votes+=eval(vote_num);
			}
			for(var j=0;j<vote_block.length;j++){
				vote_percent=Math.round(eval(vote_block[j].innerHTML.match(/\d+/)[0])*100/sum_votes);
				$('.percents',vote_block[j]).html(vote_percent+"%");
			}
		}

	}
	
	//Popups	
	//players_data array split: [0]-amplua; [1]-player_name; [2]-team_name; [3]-team_id; [4]-score;
	//[5]-round_id; [6]-player_id; [7]-rank; [8]-points(we add points in with js); 	
	if(typeof players_data!="undefined") {
		var players = players_data.split(";");
		var html_data = "";
		var goalkeepers = new Array(),
			backs = new Array(),
			halfbacks = new Array(),
			forwards = new Array(),
			goalkeepers_gr=new Array(),
			backs_gr=new Array(),
			halfbacks_gr=new Array(),
			forwards_gr=new Array();
		
		for(var cur=0;cur<players.length;cur++) {
			var t = players[cur].split(":",1);
			players[cur]+=":"+(6-eval(players[cur].split(":")[7]));	
			switch(players[cur].split(":",1).join(""))
			{
				case "1":
					goalkeepers.push(players[cur]);
					break;
				case "2":
					backs.push(players[cur]);
					break;
				case "3":
					halfbacks.push(players[cur]);
					break;
				case "4":
					forwards.push(players[cur]);
					break;
			}
		}
				
		group_amplua(goalkeepers,goalkeepers_gr);
		group_amplua(backs,backs_gr);
		group_amplua(halfbacks,halfbacks_gr);
		group_amplua(forwards,forwards_gr);
		
		goalkeepers.sort(sortPlayers);
		goalkeepers_gr.sort(sortPoints);
		backs.sort(sortPlayers);
		backs_gr.sort(sortPoints);
		halfbacks.sort(sortPlayers);
		halfbacks_gr.sort(sortPoints);
		forwards.sort(sortPlayers);
		forwards_gr.sort(sortPoints);
		
		$("#best-in-tour .close").click(function(){
			$('#fader').css("display", "none");
			$('#best-in-tour').css("display", "none");
			return false;
		});

		$("#current-leader .close").click(function(){
			$('#fader').css("display", "none");
			$('#current-leader').css("display", "none");
			return false;
		});

		$("#tours-goalkeepers").click(function(){insert_tourpopup(goalkeepers)});
		$("#tours-backs").click(function(){insert_tourpopup(backs)});
		$("#tours-halfbacks").click(function(){insert_tourpopup(halfbacks)});
		$("#tours-forwards").click(function(){insert_tourpopup(forwards)});
		
		$("#leaders-goalkeepers").click(function(){insert_leaderpopup(goalkeepers_gr,1)});
		$("#leaders-backs").click(function(){insert_leaderpopup(backs_gr,2)});
		$("#leaders-halfbacks").click(function(){insert_leaderpopup(halfbacks_gr,3)});
		$("#leaders-forwards").click(function(){insert_leaderpopup(forwards_gr,4)});
	}
	
	cleader = $('#current-leader');

	cleader.find('.go-back a').click(function(event){
		event.preventDefault();
		if(event.currentTarget.className.indexOf('inactive') == -1)
		{
			csettings.pagenum--;
			change_leaderpopup();
		}
	});
	
	cleader.find('.go-forward a').click(function(event){
		event.preventDefault();
		if(event.currentTarget.className.indexOf('inactive') == -1)
		{
			csettings.pagenum++;
			change_leaderpopup();
		}
	});

	var defaultValue = 'Логин';
	$('input[name=login]').focus(function(){
		if($(this).val() == defaultValue) $(this).val('').css({ color: '#111111' });
	}).blur(function(){
		var v = $(this).val().replace(/\s/g, '');
		if(v == '' || v == defaultValue.replace(/\s/g, '')) $(this).val(defaultValue).css({ color: '#808080' });
	}).trigger('blur');
	
	// Sharing results in social networks
	$('#voting-form').submit(function(event){
		event.preventDefault();
		
		var	thisForm = $(this),
			votingResults = $(this).serializeArray(),
			choosenGoalkeeper,
			choosenGoalkeeperClub,
			choosenBack,
			choosenBackClub,
			choosenHalfback,
			choosenHalfbackClub,
			choosenForward,
			choosenForwardClub,
			choosenPlayerContainer;
		
		// Send voting data to iframe
		var votingIframe = $('<iframe name="votingFrame" style="height:1px;width:1px;position:absolute;left:0;top:0;margin-left:-100px;"></iframe>');
		$(document.body).append(votingIframe);
		
		postToIframe(votingResults, thisForm.attr('action'), 'votingFrame');
		
		// Collect players data from DOM
		$.each( votingResults, function (index, value) {
			if (value.name == 'goalkeeper') {
				choosenPlayerContainer = $('.player-block.selected:has(input[name=goalkeeper])', thisForm);
				choosenGoalkeeper = swapNames($('img', choosenPlayerContainer).attr('alt'));
				choosenGoalkeeperClub = $.trim($('small', choosenPlayerContainer).text());
			}
			
			if (value.name == 'back') {
				choosenPlayerContainer = $('.player-block.selected:has(input[name=back])', thisForm);
				choosenBack = swapNames($('img', choosenPlayerContainer).attr('alt'));
				choosenBackClub = $.trim($('small', choosenPlayerContainer).text());
			}
			
			if (value.name == 'halfback') {
				choosenPlayerContainer = $('.player-block.selected:has(input[name=halfback])', thisForm);
				choosenHalfback = swapNames($('img', choosenPlayerContainer).attr('alt'));
				choosenHalfbackClub = $.trim($('small', choosenPlayerContainer).text());
			}
			
			if (value.name == 'forward') {
				choosenPlayerContainer = $('.player-block.selected:has(input[name=forward])', thisForm);
				choosenForward = swapNames($('img', choosenPlayerContainer).attr('alt'));
				choosenForwardClub = $.trim($('small', choosenPlayerContainer).text());
			}
		});
		
		var shareDesc = 'Мой выбор: вратарь ' + choosenGoalkeeper + ' (' + choosenGoalkeeperClub + '), защитник ' + choosenBack + ' (' + choosenBackClub + '), полузащитник ' + choosenHalfback + ' (' + choosenHalfbackClub + '), нападающий ' + choosenForward + ' (' + choosenForwardClub + ').',
			shareDescShort = choosenGoalkeeper + ', ' + choosenBack + ', ' + choosenHalfback + ', ' + choosenForward + '.';
		
		var	windowWidth = 600,
			windowHeight = 360,
			windowLeftPosition = (screen.width - windowWidth) / 2,
			windowTopPosition = (screen.height - windowHeight) / 3;
		
		windowLeftPosition = windowLeftPosition > 0 ? windowLeftPosition : 0;
		windowTopPosition = windowTopPosition > 0 ? windowTopPosition : 0;
		
		var shareWindowReference = window.open('/js/share-results.html?shareDesc=' + encodeURIComponent(shareDesc) + '&shareDescShort=' + encodeURIComponent(shareDescShort),'','toolbar=0,status=0,width=' + windowWidth + ',height=' + windowHeight + ',left=' + windowLeftPosition + ',top=' + windowTopPosition);
		
		// Look for window closing
		var shareWindowInterval = setInterval(function () {
			if (shareWindowReference.closed) {
				clearInterval(shareWindowInterval);
				location.reload();
			}
		}, 500);
	});

	return false;
});

function group_amplua(arr_in, arr_out){
	for(var i=0;i<arr_in.length;i++){
		var inArrNum = inArray(arr_in[i].split(":")[1],arr_out);
		if(inArrNum!=false)
		{
			var name = arr_out[inArrNum-1].split(":")[0],
			    team = arr_out[inArrNum-1].split(":")[1],
			    tname = arr_in[i].split(":")[2],
			    tcheck = new RegExp('(^|\/ )' + tname + '( \/|$)');
			if(team != arr_in[i].split(":")[2] && !tcheck.test(team)) team += ' / ' + tname;
			arr_out[inArrNum-1] = name+":"+team+":"+ (parseInt(arr_out[inArrNum-1].split(":")[2]) + parseInt(arr_in[i].split(":")[8]));	
		}
		else
		{
			arr_out.push(arr_in[i].split(":")[1]+":"+arr_in[i].split(":")[2]+":"+arr_in[i].split(":")[8]);
		}
	}

}

function inArray(val, arr){
	for(var i=0;i<arr.length;i++){
		if(arr[i].split(":")[0]==val){
			return i+1;
		}
	}
	return false;
}

function sortPlayers(a,b){
	     var a7 = a.split(':')[7];
             var b7 = b.split(':')[7];
	     var a5 = a.split(':')[5];
	     var b5 = b.split(':')[5];

	     
	     if(a5==b5){
		if (a7>b7){
			res=1;
		}else 
		{
			if(a7==b7){
				res=0;
			}
			else{
				res=-1;
			}
		}
	     }
	     else{
		res=a5-b5; 
	     }
	     
             return res;   
}





function sortPoints(a,b){
		return b.split(":")[2]-a.split(":")[2];
}


function closepopups(e){
	var e   = e || event;
	var kc  = e.which || e.keyCode || e.charCode;
	switch(kc){
		case 27:
		     $('#fader').css("display", "none");
		     $('#best-in-tour').css("display", "none");
		     $('#current-leader').css("display", "none");
		     break;
		     return false;
	}
	return true;
}

function insert_leaderpopup(position,amplua){
	$('#fader').css("display", "block");
	$('#current-leader').css("display", "block");
	document.onkeyup=function(e){
		return closepopups(e);
	}
	switch(amplua){
		case 1:
			$("#current-leader h3 span")[0].innerHTML='лучший вратарь';
			break;
		case 2:
			$("#current-leader h3 span")[0].innerHTML='лучший защитник';
			break;
		case 3:
			$("#current-leader h3 span")[0].innerHTML='лучший полузащитник';
			break;
		case 4:
			$("#current-leader h3 span")[0].innerHTML='лучший нападающий';
			break;
	}


	var popup_leader = $('#current-leader tr'),
	    lis = $('#current-leader .paging ul li');
	for(var i = 0, l = lis.length; i < l; i++){
		 lis.eq(i).html((1+i*20)+"-"+(i+1)*20);
	}

	for(var i = 0, l = Math.ceil(position.length / 20); i < l; i++)
	{
		lis.eq(i).html("<a href='javascript:void(0);'>"+(1+i*20)+"-"+(i+1)*20+"</a>");
		lis.eq(i).find('a')[0].onclick=(function(i){return function(){
			csettings.pagenum = i;
			csettings.popup_leader = popup_leader;
			csettings.position = position;
			change_leaderpopup();
		}})(i);
	}
	
	csettings.pagenum = 0;
	csettings.popup_leader = popup_leader;
	csettings.position = position;
	change_leaderpopup();
	return false;
}

function insert_tourpopup(position){
	var popup_tour=$("#popup-results li");
	$('#fader').css("display", "block");
	$('#best-in-tour').css("display", "block");
	document.onkeyup=function(e){
		return closepopups(e);
	}
	switch(position[0].split(":")[0]){
		case "1":
			$("#best-in-tour h3 span")[0].innerHTML='вратарь';
			break;
		case "2":
			$("#best-in-tour h3 span")[0].innerHTML='защитник';
			break;
		case "3":
			$("#best-in-tour h3 span")[0].innerHTML='полузащитник';
			break;
		case "4":
			$("#best-in-tour h3 span")[0].innerHTML='нападающий';
			break;
	}

	var tournum=position.length/5;
	for(var i=1;i<=tournum;i++){
		if( toursMonthsHook[i - 1] != undefined ) {
			$('#best-in-tour .paging li:eq(' + i + ')').html("<a href='javascript:void(0);'>" + toursMonthsHook[i - 1].singular + ' ' + toursMonthsHook[i - 1].year + "</a>");
		}
		$('#best-in-tour .paging li:eq('+i+') a')[0].onclick=(function(i){return function(){change_tourpopup(i,popup_tour,position);}})(i);
	}

	change_tourpopup(tournum,popup_tour,position);
	return false;
}

function change_tourpopup(tournum,popup_tour,position){
	var sum_votes=0;
	var vote_percent=0;
	var pl=0;
	var totaltours=position.length/5;
	
	if( toursMonthsHook[tournum - 1].genetative != undefined ) {
		$("#best-in-tour h3 strong").text( toursMonthsHook[tournum - 1].genetative );		
	}
	$("#best-in-tour .popup-header p span")[0].innerHTML=position[(tournum-1)*5].split(":")[1];
	
	for(var i=0;i<popup_tour.length;i++){
		pl=i+popup_tour.length*(tournum-1);	
		sum_votes+=eval(position[pl].split(":")[4]);
	}
	for(var i=0;i<popup_tour.length;i++){
		pl=i+popup_tour.length*(tournum-1);	
		$("dl dt img",popup_tour[i]).attr("src","/img/players/"+position[pl].split(":")[6]);	
		$("dl dd span",popup_tour[i])[0].innerHTML=position[pl].split(":")[1]+"<small>"+position[pl].split(":")[2]+"</small>";
		vote_percent=Math.round(position[pl].split(":")[4]*100/sum_votes);
		$(".votes div",popup_tour[i])[0].innerHTML=position[pl].split(":")[4]+"<small>"+votes_word(position[pl].split(":")[4])+"</small>"+"<span class='percents'>"+vote_percent+"%</span>";
	}
	$('#best-in-tour .paging .cur').removeClass('cur');
	$('#best-in-tour .paging li:eq('+tournum+')').addClass('cur');
	
		
	$("#best-in-tour .go-forward a").addClass("active");
	$("#best-in-tour .go-forward a").removeClass("inactive");
	$("#best-in-tour .go-back a").addClass("active");
	$("#best-in-tour .go-back a").removeClass("inactive");

	$("#best-in-tour .go-forward a")[0].onclick=function(){
		change_tourpopup(tournum+1,popup_tour,position);
		return false;
	}
	
	$("#best-in-tour .go-back a")[0].onclick=function(){
		change_tourpopup(tournum-1,popup_tour,position);
		return false;
	}

	
	if(totaltours==tournum){
		$("#best-in-tour .go-forward a").addClass("inactive").removeClass("active");
		$("#best-in-tour .go-forward a")[0].onclick=function(){return false};
	}
	
	if(tournum==1){
		$("#best-in-tour .go-back a").addClass("inactive").removeClass("active");
		$("#best-in-tour .go-back a")[0].onclick=function(){return false};
	}
	
	return false;
}

function change_leaderpopup()
{
	var pagenum = csettings.pagenum,
	    popup_leader = csettings.popup_leader,
	    position = csettings.position;
	cleader.find('.popup-header p')[0].innerHTML = "Суммарные результаты за все время конкурса. Показан c "+(pagenum*20+1)+" по "+Math.min(20*(pagenum+1),position.length)+" игрок.";
	cleader.find('.paging .cur').removeClass('cur');
	cleader.find('.paging ul li:eq('+pagenum+')').addClass('cur');

	var trs = popup_leader.filter(':not(.head)');
	for(var i = 0, l = Math.min(20, position.length - 20 * pagenum); i < l; i++)
	{
		var index = i + 20 * pagenum,
		    data = position[index].split(":"),
		    tds = trs.eq(i).find('td');
		tds.filter('.number').html('<span>' + (index + 1) + '</span>');
		tds.filter('.player-name').html(data[0] + " <small>" + data[1] + "</small>"); 
		tds.filter('.points').html(data[2]); 
	}
	for(var i = Math.min(20,(position.length-20*pagenum)); i < 20; i++)
	{
		var tds = trs.eq(i).find('td');
		tds.filter('.number').html(i+20*pagenum+1);
		tds.filter('.player-name').html("&nbsp");
		tds.filter('.points').html('');
	}
	
	cleader.find('.go-forward a').addClass("active").removeClass("inactive");
	cleader.find('.go-back a').addClass("active").removeClass("inactive");

	if(pagenum == 0)
	{
		cleader.find('.go-back a').addClass("inactive").removeClass("active");
	}
	
	if((pagenum+1)*20 >= position.length){
		cleader.find('.go-forward a').addClass("inactive").removeClass("active");
	}


	return false;
}

function votes_word(player_votes){
	var votelastdigit=player_votes.substr((player_votes.length-1),player_votes.length);
	var votelasttwodigit=player_votes.substr((player_votes.length-2),player_votes.length);
	var word='голосов'
	switch(eval(votelastdigit)){
		case 1:
			if(eval(votelasttwodigit<10)||eval(votelasttwodigit)>20)
			{
				word="голос";
			}
			break;
		case 2:
		case 3:
		case 4:
			if(eval(votelasttwodigit<10)||eval(votelasttwodigit)>20)
			{
				word="голоса";
			}
			break;
		}
	return word;
}

/* Swap name and surname */
function swapNames (string) {
	return string.replace(/^\s*([а-яa-z-]+)\s+([а-яa-z-]+)\s*$/i, "$2 $1");
}

/* Post data to iframe with certain action and target 
 * Example:
 * var formData = [ {name: a, value: 5}, {name: b, value: 6} ]
 * postToIframe(formData, '/page.html', 'frame1')
 */
function postToIframe( data, action, target ){
	if( typeof data !== 'undefined' ) {
		var tmpForm = $('#postToIframeForm');
		
		if( !tmpForm.length ){
			tmpForm = $('<form id="postToIframeForm" method="POST" style="display: none"></form>');
			tmpForm.appendTo(document.body);
		}
	
		tmpForm.attr({
			action: action,
			target: target
		});
	
		tmpForm.children().remove();
	
		for( var i = 0; i < data.length; i++ ){
			tmpForm.append('<input type="hidden" name="' + data[i].name + '" value="' + data[i].value + '" />');
		}
		tmpForm.submit();
	}
}


