/**
 * @author   Nikita
 * @at       09/12/08
 * -------------------- 
 * @by       jmoe
 * @at       2008.11.19
 * @what     clean-up + newsletter/catalogue checkbox -er- checks
 * --------------------
 * @by       Johan
 * @at       2009.02.20
 * @what     Atalanta implementation + cleaning
 * --------------------
*/

function submitRegister(form, country_code) 
{
	return checkEmptyFields(form, country_code);
}

function checkEmptyFields(form, country_code)
{
	var fieldsNOKCount = 0;
	var fieldsOk = new Array();
	for(var i = 0 ; i < form.elements.length; i++)
	{
		var e = form.elements[i];
		if(e.name == "email")
		{
			var reg = /^(("[\w-\s\-]+")|([\w\-]+(?:\.[\w\-]+)*)|("[\w\s\-]+")([\w\-]+(?:\.[\w\-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i;
			if(reg.test(e.value))
			{
				fieldsOk[e.name] = true;
				document.getElementById(e.name + "_error").innerHTML = "";
			}
			else
			{
				fieldsOk[e.name] = false;
				document.getElementById(e.name + "_error").innerHTML = "<=";
				fieldsNOKCount++;
			}
		}
		else if(e.name == "confirmPassword")
		{ 
			if(form.elements[i - 1].value != "" && e.value == form.elements[i-1].value)
			{
				fieldsOk[e.name] = true;
				document.getElementById(e.name + "_error").innerHTML = "";
			}
			else
			{
				fieldsOk[e.name] = false;
				document.getElementById(e.name + "_error").innerHTML = "<=";
				fieldsNOKCount++;
			}
		}
		else if(e.name == "tel")
		{
			if(e.value == "")
			{
				if(document.getElementById("mobile").value == "")
				{
					fieldsOk[e.name] = false;
					document.getElementById(e.name + "_error").innerHTML = "<=";
					fieldsNOKCount++;
				}
				else
				{
					fieldsOk[e.name] = true;
					document.getElementById(e.name + "_error").innerHTML = "";
				}
			}
			else
			{
				fieldsOk[e.name] = true;
				document.getElementById(e.name + "_error").innerHTML = "";
			}
		}
		else if(e.name == "mobile")
		{
			if(e.value == "")
			{
				if(document.getElementById("tel").value == "")
				{
					fieldsOk[e.name] = false;
					document.getElementById(e.name + "_error").innerHTML = "<=";
					fieldsNOKCount++;
				}
				else
				{
					fieldsOk[e.name] = true;
					document.getElementById(e.name + "_error").innerHTML = "";
				}
			}
			else
			{
				fieldsOk[e.name] = true;
				document.getElementById(e.name + "_error").innerHTML = "";
			}
		}
		else if(e.name == "civil")
		{
			if(e.checked || form.elements[i + 1].checked || form.elements[i + 2].checked)
			{
					fieldsOk[e.name] = true;
					document.getElementById(e.name + "_error").innerHTML = "";
			}
			else
			{
				fieldsOk[e.name] = false;
				document.getElementById(e.name + "_error").innerHTML = "<=";
				fieldsNOKCount++;
			}
			i += 3;
		// 20081119 jan === these checkboxes are always OK
		}
		else if(e.name == "catalog" || e.name == "newsletter")
		{
			fieldsOk[e.name] = true;
		//START CHIPOTAGE ****************************************************************************************************************   
		}
		else if(e.name == "street")
		{
			if(country_code == "nl")
			{
				if(e.value == "" && (document.getElementById("streetNr").value != "" || (document.getElementById("streetNr").value == "" && document.getElementById("poBox").value == "")))
				{
					fieldsOk[e.name] = false;
					document.getElementById(e.name + "_error").innerHTML = "<=";
					fieldsNOKCount++;
				}
				else
				{
					fieldsOk[e.name] = true;
					document.getElementById(e.name + "_error").innerHTML = "";
				}
			}
			else
			{
				if(e.value == "")
				{
					fieldsOk[e.name] = false;
					document.getElementById(e.name + "_error").innerHTML = "<=";
					fieldsNOKCount++;
				}
				else
				{
					fieldsOk[e.name] = true;
					document.getElementById(e.name + "_error").innerHTML = "";
				}
			}
		}
		else if(e.name == "streetNr")
		{
			if(country_code == "nl")
			{
				if(e.value == "" && (document.getElementById("street").value != "" || (document.getElementById("street").value == "" && document.getElementById("poBox").value == "")))
				{
					fieldsOk[e.name] = false;
					document.getElementById(e.name + "_error").innerHTML = "<=";
					fieldsNOKCount++;
				}
				else
				{
					fieldsOk[e.name] = true;
					document.getElementById(e.name + "_error").innerHTML = "";
				}
			}
			else
			{
				if(e.value == "")
				{
					fieldsOk[e.name] = false;
					document.getElementById(e.name + "_error").innerHTML = "<=";
					fieldsNOKCount++;
				}
				else
				{
					fieldsOk[e.name] = true;
					document.getElementById(e.name + "_error").innerHTML = "";
				}
			}
		}
		else if(e.name == "poBox")
		{
			if(country_code == "nl")
			{
				if(e.value == "" && (document.getElementById("street").value == "" && document.getElementById("streetNr").value == ""))
				{
					fieldsOk[e.name] = false;
					document.getElementById(e.name + "_error").innerHTML = "<=";
					fieldsNOKCount++;
				}
				else
				{
					fieldsOk[e.name] = true;
					document.getElementById(e.name + "_error").innerHTML = "";
				}
			}
		//STOP CHIPOTAGE ****************************************************************************************************************
		}
		else
		{
			var reg = /(firstName)|(fax)|(poBox)|(vatNumber)|(advantageCode)|(knowFrom)/i;
			if(!reg.test(e.name))
			{
				if(e.type == "text")
				{
					if(e.value != "")
					{
						fieldsOk[e.name] = true;
					}
					else
					{
						fieldsOk[e.name] = false;
						fieldsNOKCount++;
					}
				}
				else if(e.type == "password")
				{
					if(e.value != "")
					{
						fieldsOk[e.name] = true;
					}
					else
					{
						fieldsOk[e.name] = false;
						fieldsNOKCount++; 
					}
				}
				else if(e.type == "hidden")
				{
					fieldsOk[e.name] = true;
				}
				else if(e.type == "select-one")
				{
					if(e.selectedIndex != 0)
					{
						fieldsOk[e.name] = true;
					}
					else
					{
						fieldsOk[e.name] = false;
						fieldsNOKCount++;
					}  
				}
			}
			else
			{
				fieldsOk[e.name] = true;
			}
			if(fieldsOk[e.name] == true)
			{
				document.getElementById(e.name + "_error").innerHTML = "";
			}
			else
			{
				document.getElementById(e.name + "_error").innerHTML = "<=";
			}
		}
	}
	return (fieldsNOKCount == 0);
}  
	
function checkKeyUp(this_id, country_code)
{
	var falsecolor = "#FF0000";
	var color = "#000000";
	var field = document.getElementById(this_id);

	if(country_code == "nl" && (this_id == "street" || this_id == "streetNr" || this_id == "poBox"))
	{
		if(document.getElementById("street").value.length != 0 || document.getElementById("streetNr").value.length != 0)
		{
			document.getElementById("street_star").style.visibility = "visible";
			document.getElementById("streetNr_star").style.visibility = "visible";
			document.getElementById("poBox_star").style.visibility = "hidden";
		}
		if(document.getElementById("poBox").value.length != 0)
		{
			document.getElementById("street_star").style.visibility = "hidden";
			document.getElementById("streetNr_star").style.visibility = "hidden";
			document.getElementById("poBox_star").style.visibility = "visible";
		}
	}

	if(this_id == "tel" || this_id == "mobile" || this_id == "fax" || (country_code != "nl" && this_id == "postalCode"))
	{
		reg = /[^\d]/;
		field.value = field.value.replace(reg, "");
		reg = /^[\d]*$/;

		if(document.getElementById("tel").value.length == 0 && document.getElementById("mobile").value.length == 0)
		{
			document.getElementById("tel_star").style.visibility = "visible";
			document.getElementById("mobile_star").style.visibility = "visible";
		}
		else
		{
			if(field.value.length > 0)
			{
				if(this_id == "tel")
				{
					document.getElementById("mobile_star").style.visibility = "hidden";
				}
				else if(this_id == "mobile")
				{
					document.getElementById("tel_star").style.visibility = "hidden";
				}
			}
		}
	}
	else if(this_id == "email")
	{
		reg = /(@+|@\.)/;
		field.value = field.value.replace(reg, "@");
		reg = /(\.@|\.+)/;
		field.value = field.value.replace(reg, ".");
		reg = /(^@|^\.)/;
		field.value = field.value.replace(reg,"");
		reg = /@[a-zA-Z_.-]+@/;
		if(reg.test(field.value))
		{
			field.value = field.value.substr(0,(field.value.length - 1));
		}
		reg = /^(("[\w-\s\-]+")|([\w\-]+(?:\.[\w\-]+)*)|("[\w\s\-]+")([\w\-]+(?:\.[\w\-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i
	}
	else if(this_id == "firstName" || this_id == "name" || this_id == "city" || this_id == "street")
	{
		reg = /[^a-zA-Z\- ]/;
		field.value = field.value.replace(reg, "");
		reg = /[a-zA-Z\- ]+/;
	}
	else if(this_id == "poBox" || this_id == "companyName")
	{
		reg = /[^a-zA-Z0-9.\- ]/;
		field.value = field.value.replace(reg,"");
		reg = /[a-zA-Z0-9.\- ]+/;
	}
	else if(this_id == "advantageCode" || this_id == "streetNr" || country_code == "nl" && this_id == "postalCode")
	{
		reg = /[^a-zA-Z0-9-\s]/;
		field.value = field.value.replace(reg,"");
		reg = /[a-zA-Z0-9-\s]+/;
	}
	else if(this_id == 'vatNumber')
	{
		reg = /[^0-9]/;
		field.value = field.value.replace(reg,"");
		reg = /^[0-9]{10}$/;
	}
	field.style.color = (reg.test(field.value) ? color : falsecolor)
}

function registrationNext(regstate)
{
	/*
	 * Regstates:
	 * -1 - Empty form
	 *  0 - initial state (Street/Postcode) (default)
	 *  1 - Choice of possible organisations
	 *  2 - Filled in form 
	 * 
	 */

	switch(regstate)
	{
		case -1:
			showhideByID("startForm",false);
			showhideByID("mainForm",true);
		break;
		case 0:
			showhideByID("startForm",true);
			showhideByID("mainForm",false);
			fillStartingForm();
		break;
		case 1:
			if(validateStartForm())
			{
				document.getElementById("street").value = document.getElementById("startstreet").value;
				document.getElementById("postalCode").value = document.getElementById("startpostcode").value;
				fillVariants();
			}
		break;
		case 2:
			validateCompanySelection();
		break;
	}
}

function fillStartingForm()
{
	loadFile("post", "/includes/get_registration_info.php", "state=0", "text", "startFormContent");
}

function fillVariants()
{
	loadFile("post", "/includes/get_registration_info.php", "state=1&street="+document.getElementById("startstreet").value+"&zip="+document.getElementById("startpostcode").value, "text", "startFormContent");
}

function fillError()
{
	loadFile("post", "/includes/get_registration_info.php", "state=-1", "text", "startFormContent");
}

function fillRegistrationForm(xmlresponse)
{
        document.getElementById("companyName").value = xmlresponse.getElementsByTagName('company')[0].firstChild.nodeValue;
		document.getElementById("street").value = xmlresponse.getElementsByTagName('street')[0].firstChild.nodeValue;
		document.getElementById("streetNr").value = xmlresponse.getElementsByTagName('number')[0].firstChild.nodeValue;
		document.getElementById("poBox").value = xmlresponse.getElementsByTagName('pobox')[0].firstChild.nodeValue;
		document.getElementById("postalCode").value = xmlresponse.getElementsByTagName('postcode')[0].firstChild.nodeValue;
		document.getElementById("city").value = xmlresponse.getElementsByTagName('city')[0].firstChild.nodeValue;
		document.getElementById("tel").value = xmlresponse.getElementsByTagName('phone')[0].firstChild.nodeValue.replace("/","");
		document.getElementById("fax").value = xmlresponse.getElementsByTagName('fax')[0].firstChild.nodeValue.replace("/","");
}	

 function showhideByID(element, showhide)
 {
	if(document.getElementById(element))
	{
		if(showhide) {
			document.getElementById(element).style.display = 'block';
		}
		else {
			document.getElementById(element).style.display = 'none';
		}
	}
 }

function validateCompanySelection() 
{
	var selected;
	for(i=0;i<document.startForm.registrationChoice.length;i++)
	{
		if(document.startForm.registrationChoice[i].checked == true)
			selected = document.startForm.registrationChoice[i];
		break;
	}
	var selector = document.getElementById("organisationsSelector");
	var clientid = selector.options[selector.selectedIndex].value;
	if(selected && clientid != '')
	{
		loadFile('post','/includes/get_registration_info.php','state=2&street='+clientid,'xml');
	}
	else if(!selected)
	{
		showhideByID("startForm", false);
		showhideByID("mainForm", true);      
	}
}

function validateCompanySelection_Handler(data)
{
	if(data.getElementsByTagName('status')[0].firstChild.nodeValue == "unregistered")
	{
		fillRegistrationForm(data);
		showhideByID("startForm", false);
		showhideByID("mainForm", true);
	}
	else
	{
		fillError(); 
	}
}
 
function validateStartForm()
{
	var validated = true;
	var e, re;
	var re;

	for(var i = 0; i < document.getElementById("startForm").elements.length; i++)
	{
		e = document.getElementById("startForm").elements[i];
		if(e.value=="")
		{
			document.getElementById(e.name + "_error").innerHTML = "<=";
			validated = false;
		}
		else
		{
			if(e.type=="text")
			{
				if(e.id == "startpostcode" && document.getElementById("siteCountry").value == "nl")
				{
					re = /^[a-zA-Z]{2} ?-? ?[0-9]{4}$|^[0-9]{4} ?-? ?[a-zA-Z]{2}$/i
					if(!re.test(e.value))
					{
						document.getElementById(e.name + "_error").innerHTML = "<=";
						validated = false;
					}
					else
					{
						document.getElementById(e.name + "_error").innerHTML = "";
					}
				}
				else
				{
					document.getElementById(e.name + "_error").innerHTML = "";
				}
			}
		}
	}
	return validated;
}