/** Javascript **/

function submitForm(id) // Face submit formularului
{
	$(id).submit();
}

function checkCounties(object) // Afiseaza judetele pentru Romania si le ascunde pentru restul zonelor
{
	if(object.value == 1)
		$("countyRow").style.display = "";
	else
		$("countyRow").style.display = "none";
}

function writeDate(object) // Cand completeaza singur data nasterii sa se ascunda calendarul
{
	if(object.value != '')
	{
		hideCalendarControl();
	}
}

function setSex() // Returneaza sexul ales
{
	if($("sex_f").checked)
		return $("sex_f").value;
	else if($("sex_m").checked)
		return $("sex_m").value;
	else
		return "na";
}

function setTerms() // Returneaza starea checkbox-ului pentru termenii de utilizare
{
	if($("terms").checked)
		return 1;
	else
		return 0;
}

/** STEP 1 FUNCTIONS **/

function completeStep1()
{
	new Ajax.Request("/register/",
	{
		asynchronous: false,
		method: "GET",
		parameters:
		{
			action: "completeStep1"
		},
		onSuccess: 
			function(transport)
			{
				var fields = transport.responseText.split("|");
				var fieldsSplit = new Array();
				
				for(i=0;i<fields.length-1;i++)
				{
					fieldsSplit = fields[i].split(":");
					switch(fieldsSplit[0])
					{
						case "username":
							$(fieldsSplit[0]).value = fieldsSplit[1];
						break;
						case "email":
							$(fieldsSplit[0]).value = fieldsSplit[1];
						break;
						case "sex":
							if(fieldsSplit[1] == "m")
								$("sex_m").checked = true;
							else
								$("sex_f").checked = true;
						break;
						case "birth_date":
							$(fieldsSplit[0]).value = fieldsSplit[1];
						break;
						case "zone":
							$(fieldsSplit[0]+fieldsSplit[1]).selected = true;
						break;
						case "county":
							$(fieldsSplit[0]+fieldsSplit[1]).selected = true;
						case "reason":
							if(fieldsSplit[1] == 1)
								$("reason1").selected = true;
							else
								$("reason0").selected = true;
						break;
						case "terms":
							$(fieldsSplit[0]).checked = true;
						break;
					}
				}
			}
	});
}

function setNextSteps()// Introducerea urmatorilor pasi in functie de sex-ul ales
{
	new Ajax.Request("/register/",
	{
		asynchronous: false,
		method: "GET",
		parameters:
		{
			action: "questions",
			sex: sex
		},
		onSuccess: 
			function(transport)
			{
				$("registerForm").innerHTML += transport.responseText;
			}
	});
}

var allowNextStep;// val 1 - poate trece la pasul 2; val 0 - nu poate trece la pasul 2;

function errorHandlerStep1(transport)// Afiseaza erorile pe pagina pentru input-urile care nu au fost completate corect
{
	if(transport.responseText == "no_error")
	{
		allowNextStep = 1;
		$("errorUsername").innerHTML = "";
		$("errorEmail").innerHTML = "";
		$("errorSex").innerHTML = "";
		$("errorBirth_date").innerHTML = "";
		$("errorTerms").innerHTML = "";
		
		if($("setNextSteps").value == 1)
		{
			setNextSteps();
			$("setNextSteps").value = 0;
		}
	}else{
		allowNextStep = 0;
		
		var errors = transport.responseText.split("|");
		var errorSplit = new Array();
		var errorText = "";
		for(i=0;i<errors.length-1;i++)
		{
			errorSplit = errors[i].split(":");
			switch(errorSplit[0])
			{
				case "username":
					switch(errorSplit[1])
					{
						case "not_completed":
							errorText = lgUsername[errorSplit[1]];
						break;
						case "not_alphanumeric_":
							errorText = lgUsername[errorSplit[1]];
						break
						case "atleast5":
							errorText = lgUsername[errorSplit[1]];
						break;
						case "not_unique":
							errorText = lgUsername[errorSplit[1]];
						break;
					}
					$("errorUsername").innerHTML = errorText;
				break;
				case "email":
					errorText = "";
					switch(errorSplit[1])
					{
						case "not_completed":
							errorText = lgEmail[errorSplit[1]];
						break;
						case "not_valid":
							errorText = lgEmail[errorSplit[1]];
						break;
						case "not_unique":
							errorText = lgEmail[errorSplit[1]];
						break;
					}
					$("errorEmail").innerHTML = errorText;
				break;
				case "sex":
					errorText = "";
					switch(errorSplit[1])
					{
						case "not_completed":
							errorText = lgSex[errorSplit[1]];
						break;
					}
					$("errorSex").innerHTML = errorText;
				break;
				case "birth_date":
					errorText = "";
					switch(errorSplit[1])
					{
						case "not_completed":
							errorText = lgDate[errorSplit[1]];
						break;
						case "not_valid":
							errorText = lgDate[errorSplit[1]];
						break;
					}
					$("errorBirth_date").innerHTML = errorText;
				break;
				case "terms":
					errorText = "";
					switch(errorSplit[1])
					{
						case "not_completed":
							errorText = lgTerms[errorSplit[1]];
						break;
					}
					$("errorTerms").innerHTML = errorText;
				break;
			}
		}
	}
}

var sex;
function verifyStep1()
{
	sex = setSex();
	var terms = setTerms();
	new Ajax.Request("/register/?action=verifyStep1",
	{
		asynchronous: false,
		method: "POST",
		parameters:
		{
			username:$("username").value,
			email:$("email").value,
			sex:sex,
			birth_date:$("birth_date").value,
			zone:$("zone").value,
			county:$("county").value,
			reason:$("reason").value,
			terms:terms
		},
		onSuccess: function(transport)
					{
						errorHandlerStep1(transport);
					}
	});
	return allowNextStep;
}

/** END STEP 1 FUNCTIONS**/

/** STEPS 2,3 FUNCTIONS **/

function removeQuestionErrorRadio(fromQ, toQ, errMsg, id_part)// Check if any errors are displayed and remove them
{
	for(var k=fromQ;k<=toQ;k++){
		$(id_part+k).style.color = "#666666";
		var htmlQ = $(id_part+k).innerHTML;
		var pos = htmlQ.indexOf(errMsg);
		if(pos != -1)
			$(id_part+k).innerHTML = htmlQ.substr(0,pos);
	}
}

function checkIfChecked23(fromQ, toQ)// Checking questions
{
	var id_part = "q_";
	var checked = 1;
	var firstUnchecked = 1;
	var radio_name, checked_q, i, j;
	
	removeQuestionErrorRadio(fromQ, toQ, lgErrorUncompletedQuestion, id_part);
	
	for(i=fromQ;i<=toQ;i++)
	{
		radio_name = id_part+i;
		checked_q = 0;
		radioBtn = $("registerForm").getInputs("radio", radio_name);
		for(j=0;j<radioBtn.length;j++)
			if(radioBtn[j].checked == true)
				checked_q = 1;
		
		if(!checked_q)
		{
			// Display error
			$(id_part+i).style.color = "red";
			$(id_part+i).innerHTML += "<span class=\"spanError\">"+lgErrorUncompletedQuestion+"</span>";
			if(firstUnchecked)
			{
				window.location.href = "#a"+id_part+i;
				firstUnchecked = 0;
			}
			checked = 0;
		}
	}
	return checked;
}

function memorateStep23(step, firstQuestion, lastQuestion)
{
	var id_part = "q_"; // Daca se modifica id-ul intrebarilor trebuie modificat si aici
	var postData = "";
	var radio_name, radioBtn;
	
	for(i=firstQuestion;i<=lastQuestion;i++)
	{
		radio_name = id_part+i;
		radioBtn = $("registerForm").getInputs("radio", radio_name);
		for(j=0;j<radioBtn.length;j++)
			if(radioBtn[j].checked == true)
				postData += radioBtn[j].value+"DDD";
	}
	
	new Ajax.Request("/register/?action=memorateStep23",
	{
		asynchronous: false,
		method: "POST",
		parameters:
		{
			postData: postData
		},
		onSuccess: function(transport){}
	});
}

function completeStep23(step, firstQuestion, lastQuestion)
{
	new Ajax.Request("/register/",
	{
		asynchronous: false,
		method: "GET",
		parameters:
		{
			action: "completeStep23",
			firstQ: firstQuestion,
			lastQ: lastQuestion,
			step: step
		},
		onSuccess: function(transport)
					{
						var answersId = transport.responseText.split("|");
						for(i=0;i<answersId.length-1;i++)
							$(answersId[i]).checked = true;
					}
	});
}

/** END STEPS 2,3 FUNCTIONS **/

/** STEPS 4 FUNCTIONS **/

function removeQuestionErrorCheckbox(qArray, errMsg, id_part)// Check if any errors are displayed and remove them
{
	for(var k=0;k<qArray.length;k++)
	{
		$(id_part+qArray[k]).style.color = "#666666";
		var htmlQ = $(id_part+qArray[k]).innerHTML;
		var pos = htmlQ.indexOf(errMsg);
		if(pos != -1)
			$(id_part+qArray[k]).innerHTML = htmlQ.substr(0,pos);
	}
}

function checkIfChecked4()
{
	var id_part = "qch_";
	var checked = 1;
	var firstUnchecked = 1;
	var box_q = new Array(14,15,16,55,56); //CHECKBOX QUESTION ARRAY
	var checkboxes_name, checked_q, checkboxes, allCheckboxes, i, j;
	
	removeQuestionErrorCheckbox(box_q, lgErrorUncompletedQuestion, id_part);
	
	for(i=0;i<box_q.length;i++)
	{
		checkboxes_name = "aa"+id_part+box_q[i];
		checked_q = 0;
		checkboxes = document.getElementById(checkboxes_name);
		allCheckboxes = checkboxes.getElementsByTagName('input');
		
		for(j=0;j<allCheckboxes.length;j++)
			if(allCheckboxes[j].checked == true)
				checked_q = 1;
		
		if(!checked_q)
		{
			// Display error
			$(id_part+box_q[i]).style.color = "red";
			$(id_part+box_q[i]).innerHTML += "<span class=\"spanError\">"+lgErrorUncompletedQuestion+"</span>";
			if(firstUnchecked)
			{
				window.location.href = "#a"+id_part+box_q[i];
				firstUnchecked = 0;
			}
			checked = 0;
		}
	}
	return checked;
}

function memorateStep4(step)
{
	var id_part = "qch_"; // Daca se modifica id-ul intrebarilor trebuie modificat si aici
	var box_q = new Array(14,15,16,55,56); //CHECKBOX QUESTION ARRAY
	var postData = "";
	var checkboxes_name, checkboxes, allCheckboxes, i, j;
	
	for(i=0;i<box_q.length;i++)
	{
		checkboxes_name = "aa"+id_part+box_q[i];
		checkboxes = document.getElementById(checkboxes_name);
		allCheckboxes = checkboxes.getElementsByTagName('input');
		
		for(j=0;j<allCheckboxes.length;j++)
			if(allCheckboxes[j].checked == true)
				postData += allCheckboxes[j].value+"DDD";
	}
	
	new Ajax.Request("/register/?action=memorateStep4&step="+step,
	{
		asynchronous: false,
		method: "POST",
		parameters:
		{
			postData: postData
		},
		onSuccess: function(transport){}
	});
}

function completeStep4(step)
{
	new Ajax.Request("/register/",
	{
		asynchronous: false,
		method: "GET",
		parameters:
		{
			action: "completeStep4",
			step: step
		},
		onSuccess: function(transport)
					{
						var answersId = transport.responseText.split("|");
						for(i=0;i<answersId.length-1;i++)
							$(answersId[i]).checked = true;
					}
	});
}

/** END STEPS 4 FUNCTIONS **/

/** FUNCTION FOR NEXT AND BACK STEP **/


/**
@param nextStep reprezinta pasul urmator care este afisat la click
@param picStep determina daca la upload-ul pozei au fost erori si ca urmare in template lang+"Background1" se transforma lang+"Background2", astfel pot determina si daca a fost eroare, in cazul in care din pasul de upload de poza sa generez din nou intrebarile
**/
function nextStep(nextStep, picStep)
{
	var goToNext = 1;
	var currentStep = nextStep-1;
	
	switch(currentStep)
	{
		case 1:
			goToNext = verifyStep1();
		break;
		case 2:
			goToNext = checkIfChecked23(1, 6);
		break;
		case 3:
			goToNext = checkIfChecked23(7, 12);
		break;
		case 4:
			goToNext = checkIfChecked4();
		break;
	}
	
	if(goToNext)
	{
		switch(nextStep)
		{
			/* // Pasul 1 nu e niciodata urmatorul
			case 1:
			break;*/
			case 2:
				$("lgH2TitleStep").innerHTML = lgH2TitleStep23;
				$("intro").innerHTML = lgExplStep23;
				$(lang+"Background"+picStep).style.background = "url(/img/"+langFolder+"/aman2/pag/pag_inscriere_p2.gif) no-repeat";
			break;
			case 3:
				if(picStep == 3)
					memorateStep23(currentStep, 1, 6);
				// Pentru pasii 2 si 3 este acelasi text. Este comentat deoarece este urmatorul dupa 2
			break;
			case 4:
				if(picStep == 3)
					memorateStep23(currentStep, 7, 12);
				$("lgH2TitleStep").innerHTML = lgH2TitleStep4;
				$("intro").innerHTML = lgExplStep4;
				// Pasii 2, 3, 4 sunt considerati toti ca pasul 2
			break;
			case 5:
				if(picStep == 3)
					memorateStep4(currentStep);
				$("lgH2TitleStep").innerHTML = lgH2TitleStep5;
				$("intro").innerHTML = lgExplStep5;
				$(lang+"Background"+picStep).style.background = "url(/img/"+langFolder+"/aman2/pag/pag_inscriere_p3.gif) no-repeat";
			break;
		}
		
		var nextStepTo = nextStep+1;
		var idDisp = "step_"+nextStep;
		var idHide = "step_"+currentStep;
		
		$(idHide).style.display = "none";
		//alert(idDisp);
		$(idDisp).style.display = "block";
		
		var displayForward = "";
		var forwardSend = "";
		var displayBack = "style=\"display:block;\"";
		
		if(nextStep == 5){
			displayForward = "style=\"display:none;\"";
			forwardSend = '<button class="buttonBFS" id="'+lang+'Send_button" onclick="javascript: submitForm(\'registerForm\'); return false;" ondblclick="javascript: return false;" type="button">'+lgSend+'</button>';
		}else{
			displayForward = "style=\"display:block;\"";
			forwardSend = '<button class="buttonBFS" id="'+lang+'Forward_button" onclick="javascript: nextStep('+nextStepTo+', '+picStep+'); return false;" ondblclick="javascript: return false;" '+displayForward+' type="button">'+lgForward+'</button>';
		}
		
		$("submit").innerHTML = '<button class="buttonBFS" id="'+lang+'Back_button" onclick="javascript: backStep('+currentStep+', '+picStep+'); return false;" ondblclick="javascript: return false;" '+displayBack+' type="button">'+lgBackward+'</button>'+forwardSend;
		
		window.location.href = "#aTop";
	}
}

function backStep(backStep, picStep)
{
	var currentStep = backStep+1;
	var backStepTo = backStep-1;
	
	if(($("setNextSteps").value == 1) && (picStep = 3))
	{
		setNextSteps();
		$("setNextSteps").value = 0;
	}
	
	switch(backStep)
	{
		case 1:
			$("lgH2TitleStep").innerHTML = lgH2TitleStep1;
			$("intro").innerHTML = lgExplStep1;
			$(lang+"Background"+picStep).style.background = "url(/img/"+langFolder+"/aman2/pag/pag_inscriere_p1.gif) no-repeat";
			completeStep1();
		break;
		case 2:
			if(picStep == 3)
				completeStep23(backStep, 1, 6);
			//Pentru pasii 2 si 3 este acelasi text. Este comentat deoarece este precedent lui 3
		break;
		case 3:
			if(picStep == 3)
				completeStep23(backStep, 7, 12);
			$("lgH2TitleStep").innerHTML = lgH2TitleStep23;
			$("intro").innerHTML = lgExplStep23;
			//Pasii 2, 3, 4 sunt considerati toti ca pasul 2
		break;
		case 4:
			if(picStep == 3)
				completeStep4(backStep);
			$("lgH2TitleStep").innerHTML = lgH2TitleStep4;
			$("intro").innerHTML = lgExplStep4;
			$(lang+"Background"+picStep).style.background = "url(/img/"+langFolder+"/aman2/pag/pag_inscriere_p2.gif) no-repeat";
		break;
		/* Nu se poate da inapoi catre ultimul pas
		case 5:
		break;*/
	}
	
	var idDisp = "step_"+backStep;
	var idHide = "step_"+currentStep;
	
	$(idHide).style.display = "none";
	$(idDisp).style.display = "block";
	
	var displayForward = "";
	var displayBack = "";
	
	if(backStepTo == 0)
		displayBack = "style=\"display:none;\"";
	else
		displayBack = "style=\"display:block;\"";
	
	$("submit").innerHTML = '<button class="buttonBFS" id="'+lang+'Forward_button" onclick="javascript: nextStep('+currentStep+', '+picStep+'); return false;" ondblclick="javascript: return false;" '+displayForward+' type="button">'+lgForward+'</button><button class="buttonBFS" id="'+lang+'Back_button" onclick="javascript: backStep('+backStepTo+', '+picStep+'); return false;" ondblclick="javascript: return false;" '+displayBack+' type="button">'+lgBackward+'</button>';
	window.location.href = "#aBottom";
}

/** END FUNCTION FOR NEXT AND BACK STEP **/
