function initializePoll (){

		// Once fixed the two link sliders, prettyCheckbox radiobuttons
		$('.pollform input[type=radio]').prettyCheckboxes();
		
		// Initialize Captcha
		sjcap();
		
		// Initialize form
		initializePollForm ();
		
		// Initalize arrows in anything slider for checking if all elements are voted
		initializeAnythingSliderArrowsForVoting();
		
		// Controlling special keys inside the voting poll
		manageSpecialKeys();
}

/*****************************/
/* SHOW CONFIRM RESET DIALOG */
/*****************************/
function showConfirmResetDialog () {
	$("#poll_clean_dialog").modal({onClose: function (dialog) {
	dialog.data.fadeOut('fast', function () {
		dialog.container.hide('fast', function () {
			dialog.overlay.fadeOut('fast', function () {
				$.modal.close();
			});
		});
	});
}});
}
/*********************************/
/* SHOW NOT COMPLETE POLL DIALOG */
/*********************************/
function showNotCompletePollDialog () {
	$("#poll_not_complete_dialog").modal({
		onOpen: function (dialog) {
			dialog.overlay.fadeIn('fast', function () {
				dialog.data.hide();
				dialog.container.fadeIn('fast', function () {
					dialog.data.slideDown('fast');
				});
			});
		},
		onClose: function (dialog) {
			dialog.data.fadeOut('fast', function () {
				dialog.container.hide('fast', function () {
					dialog.overlay.fadeOut('fast', function () {
						$.modal.close();
					});
				});
			});
		},
		opacity:80,
		overlayCss: {backgroundColor:"#555"}
	});
}


/*********************************/
/* SHOW ALREADY_USED_NAME DIALOG */
/*********************************/
function showAlreadyUsedNameDialog () {
	$("#already_used_name_dialog").modal({
		onOpen: function (dialog) {
			dialog.overlay.fadeIn('fast', function () {
				dialog.data.hide();
				dialog.container.fadeIn('fast', function () {
					dialog.data.slideDown('fast');
				});
			});
		},
		onClose: function (dialog) {
			dialog.data.fadeOut('fast', function () {
				dialog.container.hide('fast', function () {
					dialog.overlay.fadeOut('fast', function () {
						$.modal.close();
					});
				});
			});
		},
		opacity:80,
		overlayCss: {backgroundColor:"#555"}
	});
}




/*********************************/
/* SHOW ALREADY_USED_MAIL DIALOG */
/*********************************/
function showAlreadyUsedMailDialog () {
	$("#already_used_mail_dialog").modal({
		onOpen: function (dialog) {
			dialog.overlay.fadeIn('fast', function () {
				dialog.data.hide();
				dialog.container.fadeIn('fast', function () {
					dialog.data.slideDown('fast');
				});
			});
		},
		onClose: function (dialog) {
			dialog.data.fadeOut('fast', function () {
				dialog.container.hide('fast', function () {
					dialog.overlay.fadeOut('fast', function () {
						$.modal.close();
					});
				});
			});
		},
		opacity:80,
		overlayCss: {backgroundColor:"#555"}
	});
}


/*********************************/
/* SHOW SUCCESS PDLL DIALOG */
/*********************************/
function showSuccessPollDialog () {
	$("#poll_success_poll_dialog").modal({
		onOpen: function (dialog) {
			dialog.overlay.fadeIn('fast', function () {
				dialog.data.hide();
				dialog.container.fadeIn('fast', function () {
					dialog.data.slideDown('fast');
				});
			});
		},
		onClose: function (dialog) {
			dialog.data.fadeOut('fast', function () {
				dialog.container.hide('fast', function () {
					dialog.overlay.fadeOut('fast', function () {
						$.modal.close();
						window.location.href=document.URL;
					});
				});
			});
		},
		opacity:80,
		overlayCss: {backgroundColor:"#555"}
	});
}



/****************************/
/* RESET ALL FIELDS IN FORM */
/****************************/
function resetAllFields () {

	// Set all radio buttons as false
	$('label.prettyCheckbox').removeClass('checked');
	$('#polls_container .pollform input[type="text"]').attr('value','');
	
	// Set all polls as unfilled
	$('.oneVote').removeClass ('poll_filled').removeClass ('poll_not_filled');
	
	// Activate human detection again
	$('#personal_data').addClass('not_human').removeClass('human');
	var captchaFieldset = $('#personal_data form  fieldset#captcha')[0];
	$(captchaFieldset).fadeIn();
				
	// delete name & mail
	$('#user_name').attr('value','');
	$('#user_email').attr('value','');
		
	// Scroll to first question not filled
	var scrollToInitFunction = function () {$('body').scrollTo('#polls_container',800)};
	setTimeout(scrollToInitFunction,800);
	
	// Check conditions as false
	$('#personal_data form fieldset#accept_conditions').find('input').attr('checked',false);
}


function initializePollForm () {
	
		
		// Remove previous radiobutton checked
		$('#polls_container .pollform .suggestion input[type="text"]').click(function () {
			// Uncheck all radio for this form
			var concreteForm = $(this).parent().parent();
			var concreteFormId = $(concreteForm).attr('id');
			// Set all radio buttons as false
			$('#'+concreteFormId+' label.prettyCheckbox').removeClass('checked');
		});
		
		// Remove previous text
		$('.pollform input[type="radio"]').click(function () {
			// Uncheck all radio for this form
			var concreteForm = $(this).parent().parent();
			var concreteFormId = $(concreteForm).attr('id');
			// Set all radio buttons as false
			$('#'+concreteFormId+' input[type="text"]').attr('value','');
		});

		// Remove not voted class from concrete poll
		$('#polls_container .pollform .suggestion input[type="text"]').keydown(function () {
			
			
			// Remove poll_not_filled class
			$(this).parent().parent().parent().parent().removeClass('poll_not_filled');
			$(this).parent().parent().parent().parent().addClass('poll_filled');
			
			// Change navigator color
			var voteIndex = $(this).parent().parent().parent().parent().index('div.oneVote');
			
			// Patching for FUKING ie7 (i don't understand this strange behaviour!!)
			var isie7 = ($.browser.msie && $.browser.version.substr(0,1)<8)?true:false;
			//var iswebkit = ($.browser.webkit)?true:false;

			if (!isie7) {
				var voteIndex = voteIndex - 1;
				var voteIndex = voteIndex - 1;
			}
			
			$('#thumbNav > a:eq(' + voteIndex + ')').addClass('voted');
			checkIfPollCompleted();
		});
		
		
		// Mark current p in votes with different background
		$('.pollform p:not(.suggestion)').hover(function() {
			$(this).find('label').addClass('option-background');
		}, function() {
			$(this).find('label').removeClass('option-background');
		});
		
		// Set all width as clickable and act as if it is the 
		$('.pollform p:not(.suggestion)').click(function() {
		

			$(this).find('input').attr('checked','true');
			
			// Remove poll_not_filled class
			$(this).parent().parent().parent().removeClass('poll_not_filled');
			$(this).parent().parent().parent().addClass('poll_filled');
			

			
			// Change navigator color and add voted class
			var voteIndex = $(this).parent().parent().parent().index('div.oneVote');
			var voteZeroBasedIndex = voteIndex - 1;
			var nextIndex = voteIndex + 1;
			$('#thumbNav > a:eq(' + voteZeroBasedIndex + ')').addClass('voted');
			$('.anythingSlider').anythingSlider(nextIndex);
			checkIfPollCompleted();
			
		});
		
		// Controlling empty suggestion fields
		$('#polls_container .pollform .suggestion input[type="text"]').blur (function () {

				
				// Remove Poll filled class
				$(this).parent().parent().parent().parent().removeClass('poll_filled');
				
				// Change navigator color and add voted class
				var voteIndex = $(this).parent().parent().parent().parent().index('div.oneVote');

			// Patching for FUCKING ie7 (i don't understand this strange behaviour!!)
				var isie7 = ($.browser.msie && $.browser.version.substr(0,1)<8)?true:false;

				if (!isie7) {
					var voteZeroBasedIndex = parseInt(voteIndex) - 1;
				} else {
					voteZeroBasedIndex = voteIndex;
				}
			
			if ($(this).attr('value')=='') {
				$('#thumbNav > a:eq(' + voteZeroBasedIndex + ')').removeClass('voted');
			} else {
			
				$('#thumbNav > a:eq(' + voteZeroBasedIndex + ')').addClass('voted');
			}
			
			// Check if completed
			checkIfPollCompleted();
		});
		

		// User data
		$('#personal_data form  fieldset#user_data input').blur (function () {

			// Taking name & mail
			var username = $(this).parent().find('#user_name').attr('value');
			var email = $(this).parent().find('#user_email').attr('value');
			if (username!='' && email!=''){
				$(this).parent().removeClass('fieldset_not_completed');
				$(this).parent().parent().parent().removeClass('user_data_not_filled').addClass('user_data_filled');
			} else {
				$(this).parent().parent().parent().addClass('user_data_not_filled').removeClass('user_data_filled');
			}
		});
		
		
		// Terms & Conditions
		$('#personal_data form  fieldset#accept_conditions').click (function () {
			var checkbox_checked = $(this).find('input').attr('checked');
			if (checkbox_checked) {
				$(this).parent().parent().addClass('conditions_accepted').removeClass('conditions_not_accepted');
				$(this).removeClass('fieldset_not_completed');

			} else {
				$(this).parent().parent().removeClass('conditions_accepted').addClass('conditions_not_accepted');
			}
		});
		
		// Terms & Conditions
		$('#personal_data form  fieldset#accept_conditions a#acceptConditions').click (function () {
			var checkbox_checked = $(this).parent().find('input').attr('checked');
			$(this).parent().find('input').click();
			return false;
		});
		
		// Captcha
		$('#personal_data form  fieldset#captcha #check_captcha').click (function () {
			
			// Check if the image is correct.
			var correct = jcap();
			
			// If correct, hide captcha window
			if (correct) {
				$(this).parent().parent().fadeOut();
				$(this).parent().parent().removeClass('fieldset_not_completed');
				$(this).parent().parent().parent().parent().removeClass('not_human').addClass('human');
			} else {
			
			// Showing error message
			}
			return false;
		});
		
		// Read Conditions
		$('#readConditions').click(function () {
			$("#conditions_dialog").modal({
				onOpen: function (dialog) {
					dialog.overlay.fadeIn('fast', function () {
						dialog.data.hide();
						dialog.container.fadeIn('fast', function () {
							dialog.data.slideDown('fast');
						});
					});
				},
				onClose: function (dialog) {
					dialog.data.fadeOut('fast', function () {
						dialog.container.hide('fast', function () {
							dialog.overlay.fadeOut('fast', function () {
								$.modal.close();
							});
						});
					});
				},
				opacity:80,
				overlayCss: {backgroundColor:"#555"}
			});
			return false;
		});

		// Explain captcha
		$('#explainCaptcha').click(function () {
			$("#explain_captcha_dialog").modal({
				onOpen: function (dialog) {
					dialog.overlay.fadeIn('fast', function () {
						dialog.data.hide();
						dialog.container.fadeIn('fast', function () {
							dialog.data.slideDown('fast');
						});
					});
				},
				onClose: function (dialog) {
					dialog.data.fadeOut('fast', function () {
						dialog.container.hide('fast', function () {
							dialog.overlay.fadeOut('fast', function () {
								$.modal.close();
							});
						});
					});
				},
				opacity:80,
				overlayCss: {backgroundColor:"#555"}
			});
			
			return false;
		});
		
		
		// Submit form
		$('.pollform').submit(function(){
			var selected_val=$(this).find('input[name=poll]:checked').val();
			var preloader = $('#poll_preloader');
			if(selected_val!=''){
				//post data only if a value is selected
				preloader.fadeIn();
				var loadPoll = function () {
					$.post('php/poll/poll.php', $(this).serialize(), function(data, status){
						$('#formcontainer').fadeOut(100, function(){
							$(this).html(data);
							animateResults(this);
							preloader.fadeOut();
						});
					});
				};
				
				setTimeout(loadPoll,2000);
				
			}
			//prevent form default behavior
			return false;
		});

		// Controlling empty suggestion fields
		/*$('div#personal_data input').keyup (function () {
			
			//
			$(this).blur();
			// Check if personal data are correct
			checkIfPersonalDataCompleted();
		});*/


}


function checkIfPollCompleted () {
	var numOptions = $('div#thumbNav > a').length;
	var numVotedOptions = $('div#thumbNav > a.voted').length + 1;
	
	if (numOptions <= numVotedOptions) {
		showStepTwo();

	} else {
		hideStepTwo();
	}
}



function checkIfPersonalDataCompleted () {


	// Focus and blur fields to validate inline the form
	$(nameField).focus().blur();
	$(mailField).focus().blur();
		
	// Take elements that check the correct form (no error elements and the two associated fields filled, name & mail)
	var errorForms = $('.formError').length;
	var nameField = $('div#personal_data form input#user_name');
	var mailField = $('div#personal_data form input#user_mail');
	var nameFieldLength = $(nameField).attr('value').length;
	var mailFieldLength = $(mailField).attr('value').length;
	
	
	if (errorForms == 0 && nameFieldLength != 0 && mailFieldLength != 0) {
		lockUserData();
	} else {
		hideStepThree();
	}
}


function showStepOne () {

	// Hide button & show point 1 and vote panel
	$('#startPollButton').hide();
	$('#poll_preloader').fadeIn();
	$('#step1').fadeIn();
	$('#footer').fadeIn();
	$('#polls_container').css({visibility:'visible',height:'350px'});
	$('#poll_preloader').fadeOut();
}

function showStepTwo () {
	$('#step2').fadeIn();
	$('#user_data').fadeIn();
	$('#polls_container').addClass('pollfilled');
	
	
}

function hideStepTwo () {
	$('#step2').fadeOut();
	$('#user_data').fadeOut();

	$('#polls_container').removeClass('pollfilled');

}

function showStepThree () {
	$('#step3').fadeIn();
	$('#captcha').fadeIn();
	

}

function hideStepThree () {
	$('#step3').fadeOut();
	$('#captcha').fadeOut();

}

function initializeAnythingSliderArrowsForVoting () {
	$('a.back, a.forward, div#thumbNav a').click(function() {
		checkIfPollCompleted();
	});
}

function lockUserData () {
	
	var userDataFields = $('div#personal_data form input#user_name, div#personal_data form input#user_mail');
	var userDataLabels = $('div#personal_data form label');
	
	var validateButton = $('div#personal_data form button#validate-personal-data-button');
	var editButton = $('div#personal_data form button#edit-personal-data-button');

	// Fields
	$(userDataFields).attr('disabled','disabled');
	$(userDataFields).addClass('approved-field');
	$(userDataLabels).removeClass('not-approved-field');

	// Buttons
	$(validateButton).addClass('hidden');
	$(editButton).removeClass('hidden');
	
	checkAvailability ();
}


function editUserData () {
	
	var userDataFields = $('div#personal_data form input#user_name, div#personal_data form input#user_mail');
	var userDataLabels = $('div#personal_data form label');
	
	var validateButton = $('div#personal_data form button#validate-personal-data-button');
	var editButton = $('div#personal_data form button#edit-personal-data-button');

	var checking_if_available = $('div#personal_data form #checking_availability');
	var name_already_used = $('div#personal_data form #name_already_used');
	var mail_already_used = $('div#personal_data form #mail_already_used');
	var name_and_mail_available = $('div#personal_data form #name_and_mail_available');

	// Fields
	$(userDataFields).removeAttr('disabled');
	$(userDataFields).removeClass('approved-field');
	$(userDataLabels).addClass('not-approved-field');

	// Buttons
	$(validateButton).removeClass('hidden');
	$(editButton).addClass('hidden');
	
	// Hide step 3
	hideStepThree();
	
	// Availability dialogs
	$(checking_if_available).hide('fast');
	$(name_already_used).fadeOut('fast');
	$(mail_already_used).fadeOut('fast');
	$(name_and_mail_available).fadeOut('fast');
	
}


function checkAvailability () {

	// Showing availability dialog and sending to server user info for checking availability
	var checking_if_available = $('div#personal_data form #checking_availability');
	$(checking_if_available).fadeIn('slow');

	// Taking name and mail
	var name = $('div#personal_data form input#user_name').attr('value');
	var email = $('div#personal_data form input#user_mail').attr('value');
	
	// Sending query via ajax
	$.post("php/queries/checkAvailability.php", {
		name : name,
		email : email
	}, function(data) {
	
		// Hiding checking availability dialog
		var checking_if_available = $('div#personal_data form #checking_availability');
		$(checking_if_available).hide();
			
		// Showing correct message in function of response
		if (data=="name_already_used") { 
			var name_already_used = $('div#personal_data form #name_already_used');
			$(name_already_used).fadeIn('fast');
		}
		if (data=="mail_already_used") {
			var mail_already_used = $('div#personal_data form #mail_already_used');
			$(mail_already_used).fadeIn('fast');

		}
		if (data=="both_already_used") {
			var name_already_used = $('div#personal_data form #name_already_used');
			var mail_already_used = $('div#personal_data form #mail_already_used');
			$(name_already_used).fadeIn('fast');
			$(mail_already_used).fadeIn('fast');

		}
		if (data=="OK") {
			var name_and_mail_available = $('div#personal_data form #name_and_mail_available');
			$(name_and_mail_available).fadeIn('fast');
			
			// Show step three
			showStepThree();

		}
	}); 
}


function prepareAndInsert () {

		
			// Counting elements already filled
			var checkedElements = $('.oneVote.poll_filled').length;
			var totalQuestions = $('.poll').length;
			
			// Find out if we have correct data
			var personalDataCorrect = ($('.user_data_not_filled').length==0)?true:false;
			var humanControlPassed = ($('.not_human').length==0)?true:false;
			var acceptedConditions = ($('.conditions_not_accepted').length==0)?true:false;

			// Check if all radio buttons are checked, and if personal data are complete and correct
			/*if (totalQuestions > checkedElements || !personalDataCorrect || !humanControlPassed || !acceptedConditions) {
				
				// Show warning message
				showNotCompletePollDialog();
				
				// Clean old unfilled elements
				$('.oneVote').removeClass('poll_not_filled');
				//$('.oneVote').removeClass('poll_filled');
				// Assign not_complete_class to unfilled polls
				$('.oneVote:not(.poll_filled,#controls,#personal_data)').addClass('poll_not_filled');
				
				if (!personalDataCorrect) {
					$('#personal_data form  fieldset#user_data').addClass('fieldset_not_completed');
				}
				if (!humanControlPassed) {
					$('#personal_data form  fieldset#captcha').addClass('fieldset_not_completed');
				}
				if (!acceptedConditions) {
					$('#personal_data form  fieldset#accept_conditions').addClass('fieldset_not_completed');
				}

				// Scroll correct element
			if (totalQuestions > checkedElements) {
				$('body').scrollTo('.oneVote.poll_not_filled:first',800);
			} else if (!personalDataCorrect || !humanControlPassed || !acceptedConditions) {
				$('body').scrollTo('.fieldset_not_completed:first',800);
			}
			
			


			} else {*/
				// Take names and votes
				var name = $('#user_data #user_name').attr('value');
				var email = $('#user_data #user_mail').attr('value');
				var votesForUser = '';
				// Get votes number and fill an array with selected votes for user
				var numVotes =$('.pollform').length - 2;
				
				for (var i=1; i <= numVotes ; i++) {
					var theForm = $('#pollform'+ i +' label');
					var theVote = $('#pollform'+ i +' .checked');
					var pollOption = $(theForm).index (theVote);
					
					var globalOption = $(theVote).parent().find('input').attr('value');
					
					// If it's a new option then mark as new and insert inside brackets the option name
					if (globalOption==null) {

						var suggestionValue = $('.suggestion:eq('+i+')').find('input').attr('value');
						var categoryId = $('#pollform'+ i + ' > input').attr('value');
						globalOption = 'new suggestion('+suggestionValue+','+categoryId+')';
					}
		
					votesForUser = votesForUser + globalOption + ';;';
				}
				
				votesForUser=votesForUser.substring(0,votesForUser.length-2);

		
				$.post("php/queries/insert.php", {
					name : name,
					email : email,
					votes : votesForUser
				
				}, function(data){
					   if (data.length>0){ 
						     postVoteActions();
						     ////console.debug(data);
						} 
				}); 
				

				
			/*}*/



}


function sendPoll () {
	// Take all data from forms
	prepareAndInsert();
}

/**********************************************************************************************************************/
/*
* 99. manageSpecialKeys
* 100. postVoteActions
*/


/*********************************************************************************************
* 99
* 
* NAME: manageSpecialKeys
* 
* DESCRIPTION: Moving slider if we press ENTER or TAB keys
**********************************************************************************************/
function manageSpecialKeys() {
	

	$(document).bind('keydown','',function (evt){
		
		// If it's TAB or ENTER, apply custom behaviour (pass to the next slide)
		var keyCode = evt.keyCode;
		
		if ((keyCode == 9) || (keyCode == 13))  {
		
			// Take the current tab if available and finding out if poll is visible
			var currentTab = $('div#thumbNav .cur').html();
			var nextTab= parseInt(currentTab) + 1;
			var isPollVisible = $('span#startPollButton:not(:visible)').length?true:false;
			var isFormNotFilled = !$('#polls_container').hasClass('pollfilled');
			
			////console.debug('ee:'+ isFormNotFilled);
			// Move to the next slider
			if (currentTab && isPollVisible && isFormNotFilled) {
				$('.anythingSlider').anythingSlider(nextTab);
				$('#polls_container .pollform .suggestion input[type="text"]:eq('+currentTab+')').blur();
				
			} else {
				return true;
			}
		
			// Deactivate default behaviour!!!
			return false;
		}
		
		// If we push BACKSPACE or SUPR, check if we must deactivate the vote
		/*if ((keyCode == 8) || (keyCode == 46))  {
		
			var currentTab = $('div#thumbNav .cur').html();
			var currentSuggestionText = $('#polls_container .pollform .suggestion input[type="text"]:eq('+currentTab+')').attr('value');
		
			if (currentTab && isPollVisible && currentSuggestionText == '') {
			$('#thumbNav > a:eq(' + currentTab + ')').removeClass('voted');
			checkIfPollCompleted();

			}
		}*/

	});

}


/*********************************************************************************************
* 100
* 
* NAME: postVoteActions
* 
* DESCRIPTION: Performed actions after sending poll to server.
**********************************************************************************************/
function postVoteActions () {

	// 0.Hiding page content previous to show the correct poll made message
	$('#supBar, #page-wrap, #footer').fadeOut('slow');
	
	// 1. Binding a close action to facebox (if facebox is closed, then go to initial page)
	$(document).bind('close.facebox', function() {
		location.href ='http://premiosdelamusicaextremadura.com';
	})
	
	// 2. Constructing facebox text
	var faceboxText = '<span id="voted_dialog"><a id="black_logo_link" href="http://premiosdelamusicaextremadura.com"><img src="images/extre_sonora/logo_black_450.png" class="dialog_header"></a>';
	faceboxText = faceboxText + '<p>Muchas gracias por participar en la votación <b>on-line</b> de esta edición de los Premios de la Música en Extremadura. ';
	faceboxText = faceboxText + '</p><p><u><b>Recuerda que has de recibir un correo electrónico en el que confirmar tu votación, y que esta no será válida hasta cumplimentar ese último paso</b></u>. </p>';
	faceboxText = faceboxText + '<p>Para cualquier consulta, duda, sugerencia o crítica, contacta con nosotros en ';
	faceboxText = faceboxText + '<a href="mailTo:info@premiosdelamusicaextremadura.com">info@premiosdelamusicaextremadura.com</a>. Estaremos encantados de atenderte.</p>';
	faceboxText = faceboxText + '</span>';
	
	// 3. Showing facebox
	jQuery.facebox(faceboxText);
	$('#facebox').css({top:'20%'});
}


/*********************************************************************************************
* 100
* 
* NAME: includeTextForEmptyCategories
* 
* DESCRIPTION: Include text for empty categories.
**********************************************************************************************/
function includeTextForEmptyCategories () {

	// For category 4
	$('#pollform14 p.suggestion').before('<span class="suggestionText">Sugiérenos a quien incluir para esta categoría. Y sé un juez más de la música extremeña!</span>');
}



