//form validation
function ValidateForm(form, lang, email) 
{
	var validate_email = email; // This fieldname is for email format validation
	var form = document[form];
	var lang = lang.toLowerCase();
	var error = text = fieldnames = langfieldnames = validemail = strIntro = "";
	var required = form.required_fields.value;
	var fieldarray = required.split("|");
	for (i=0; i<fieldarray.length; i++)
	{
		req_field_value = fieldarray[i].split("^");
		fieldnames = (fieldnames + "|" + req_field_value[0]);
		langfieldnames = (langfieldnames + "|" + req_field_value[1]);
	}
	langfieldnames = langfieldnames.substring(1,langfieldnames.length); 
	langarray = langfieldnames.split("|");
	fieldnames = fieldnames.substring(1,fieldnames.length);
	array = fieldnames.split("|");
	
	for (i=0; i<array.length; i++)
	{
		if (form[array[i]].type == "radio" || form[array[i]].type == "checkbox" || typeof(form[array[i]].type) == "undefined")
		{
			//Radio field
			var bolSelected;
			if (typeof(form[array[i]].type) != "undefined")
			{
				// Single field radio/checkbox
				//alert(array[i] + ", " + form[array[i]].type + ", " + typeof(form[array[i]].type) + ", " + "single");
				intLength = 0;
				//A single named field
				if (form[array[i]].checked == true)
				{
					//alert("Checked");
					bolSelected = true;
				}
			}
			else
			{
				//multiple field radio/checkbox
				intLength = form[array[i]].length;
				for (j = 0; j < intLength; j++)
				{
					//alert(intLength + typeof(intLength) + form[array[i]].name + "=" + j + ", " + form[array[i]][j].checked);
					//alert(form[array[i]][j].checked);
					if (form[array[i]][j].checked == true)
					{
						bolSelected = true;
					}			
				}				
			}
			if (bolSelected != true)
			{
				//alert("create error");
				error++;
				if (error < 2)
				{
					if (intLength == 0)
					{
						form[array[i]].focus();
					}
					else
					{
						form[array[i]][0].focus();
					}
				}
				text += " - " + replace(langarray[i],  "_",  " ") + "\n";
				
			}
			bolSelected = false;			
		}
		else if (form[array[i]].type == "select-one")
		{
			//select-one field
			if (form[array[i]].options[form[array[i]].selectedIndex].value != "")
			{
				bolSelected = true;
			}
			if (bolSelected != true)
			{
				error++;
				if (error < 2)
				{
					form[array[i]].focus();
				}
				text += " - " + replace(langarray[i],  "_",  " ") + "\n";
			}
			bolSelected = false;
		}
		else if (form[array[i]].type == "select-multiple")
		{
			//select-multiple field
			intLength = form[array[i]].length;
			for (j = 0; j < intLength; j++)
			{
				if (form[array[i]][j].selected == true)
				{
					if(form[array[i]][j].value != "")
					{
						bolSelected = true;
					}
				}		
			}
			if (bolSelected != true)
			{
				error++;
				if (error < 2)
				{
					form[array[i]].focus();
				}
				text += " - " + replace(langarray[i],  "_",  " ") + "\n";
			}
			bolSelected = false;
		}
		else
		{
			//Text or hidden field
			if (array[i] == validate_email)
			{
				/*emailfieldvalue = form[array[i]].value;
				atloc = emailfieldvalue.indexOf('@');
				dotloc = emailfieldvalue.indexOf('.',atloc);
				emaillength = emailfieldvalue.length;
				
				if ((atloc < 1) || (dotloc < (atloc + 2)) || ((emaillength - 3) < dotloc))
				{
					error++;
					if (error < 2)
					{
						form[array[i]].focus();
					}
					text += " - ##validemail## \n"; 
				}*/
				var emailfieldvalue=new String(form[array[i]].value);
				var filter=/^[a-z0-9]([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,4}$/i;
				if (!filter.test(emailfieldvalue))
				{
					error++;
					if (error < 2)
					{
						form[array[i]].focus();
					}
					text += " - ##validemail## \n";
				}
			}
			else if (form[array[i]].value == "")
			{
				error++;
				if (error < 2)
				{
					form[array[i]].focus();
				}
				text += " - " + replace(langarray[i],  "_",  " ") + "\n";
			}
		} 
	}
	if (error) 
	{
		switch (lang)
		{
			//resolve languages
			case "fr":
				validemail = "adresse e-mail valide";
				text = replace(text, "##validemail##", validemail); //Do Not edit this line
				if (error > 1)
				{
					//plural error
					strIntro = "Veuillez remplir les champs suivants:\n";
				}
				else
				{
					//single error
					strIntro = "Veuillez remplir le champ suivant:\n";
				}				
				//alert ("Veuillez remplir le (ou les) champ(s) suivant(s):\n" + text);
			break;
			case "de":
				validemail = "Gültige E-Mail-Adresse";
				text = replace(text, "##validemail##", validemail); //Do Not edit this line
				if (error > 1)
				{
					//plural error
					strIntro = "Bitte füllen Sie folgendes Felder aus:\n";
				}
				else
				{
					//single error
					strIntro = "Bitte füllen Sie folgende Feld aus:\n";
				}				
				//alert ("Bitte füllen Sie folgende(s) Feld(er) aus:\n" + text);
			break;
			case "il":
				validemail = "ëúåáú îééì îìàä";
				text = replace(text, "##validemail##", validemail); //Do Not edit this line
				if (error > 1)
				{
					//plural error
					strIntro = "àðà îìà àú äùãåú äáàéí:\n";
				}
				else
				{
					//single error
					strIntro = "àðà îìà àú äùãä äáà:\n";
				}
				text = replace(text, "- ", "");
				text = replace(text, "\n", " -\n");
				//alert ("You must fill in the following field(s):\n" + text);
			break;
			case "it":
				validemail = "Indirizzo email valido";
				text = replace(text, "##validemail##", validemail); //Do Not edit this line
				if (error > 1)
				{
					//plural error
					strIntro = "Compila i seguenti campi:\n";
				}
				else
				{
					//single error
					strIntro = "Compila il seguente campo:\n";
				}
			break;
			case "es":
				validemail = "Dirección de e-mail válida";
				text = replace(text, "##validemail##", validemail); //Do Not edit this line
				if (error > 1)
				{
					//plural error
					strIntro = "Debe rellenar el los campos siguientes:\n";
				}
				else
				{
					//single error
					strIntro = "Debe rellenar el campo siguiente:\n";
				}				
				//alert ("Debe rellenar el (los) campo(s) siguiente(s):\n" + text);
			break;
			case "nl":
				validemail = "Geldig email adres";
				text = replace(text, "##validemail##", validemail); //Do Not edit this line
				if (error > 1)
				{
					//plural error
					strIntro = "Kunt u de volgende velden invullen a.u.b.:\n";
				}
				else
				{
					//single error
					strIntro = "Kunt u het volgende veld invullen a.u.b.:\n";
				}				
				//alert ("Kunt u de volgende veld(en) invullen a.u.b.:\n" + text);
			break;
			case "at":
				validemail = "Gültige E-Mail Adresse";
				text = replace(text, "##validemail##", validemail); //Do Not edit this line
				if (error > 1)
				{
					//plural error
					strIntro = "Bitte füllen Sie folgendes Felder aus:\n";
				}
				else
				{
					//single error
					strIntro = "Bitte füllen Sie folgende Feld aus:\n";
				}
				//alert ("Bitte füllen Sie folgende(s) Feld(er) aus:\n" + text);
			break;
			default : 
				validemail = "Valid Email Address";
				text = replace(text, "##validemail##", validemail); //Do Not edit this line
				if (error > 1)
				{
					//plural error
					strIntro = "You must fill in the following fields:\n";
				}
				else
				{
					//single error
					strIntro = "You must fill in the following field:\n";
				}
				//alert ("You must fill in the following field(s):\n" + text);
		}
		alert (strIntro + text);
		return false; 
	}
	else 
	{
		return true;
	}
}

function replace(string, substring1, substring2)
{
	stringparts = string.split(substring1);
	string = stringparts.join(substring2);	
	return string;	
}

function RotateImages(aryImages, target)
{
	var interval = 4//4.5; // delay between rotating images (in seconds)
	var random_display = 1; // 0 = sequential, 1 = random
	interval *= 1000;
	
	var image_index = 0;
	image_list = new Array();
	if (aryImages.length == 0)
	{
		var aryImages = [];
		/*aryImages[0] = '/images/StatVista_About.jpg';
		aryImages[1] = '/images/StatVista_MyAccount.jpg';
		aryImages[2] = '/images/StatVista_Contact.jpg';
		aryImages[3] = '/images/StatVista_RecruiterZone.jpg';*/
	}
	else
	{
		for (i=0;i<aryImages.length; i++)
		{
			image_list[image_index++] = new imageItem(aryImages[i]); 
		}
	}
	var number_of_images = image_list.length;
	
	rotateImage(target);

	function imageItem(image_location)
	{
		this.image_item = new Image();
		this.image_item.src = image_location;
	}
	function get_ImageItemLocation(imageObj)
	{
		return(imageObj.image_item.src)
	}
	function generate(x, y)
	{
		var range = y - x + 1;
		return Math.floor(Math.random() * range) + x;
	}
	function getNextImage(LastImage)
	{
		var new_image;
		do
		{
			if (random_display)
			{
				image_index = generate(0, number_of_images-1);
			}
			else
			{
				image_index = (image_index+1) % number_of_images;
			}
			new_image = get_ImageItemLocation(image_list[image_index]);
		}
		while (new_image == LastImage);
	
		return(new_image);
	}
	function rotateImage(target)
	{
		var new_image = getNextImage(document.getElementById(target).src);
		document.getElementById(target).src = new_image;
		var recur_call = "RotateImages(aryImages,'" + target + "')";
		setTimeout(recur_call, interval);
	}
}

function checkTextAreaMaxLength(object, e, length)
{
	
	var mLen = object["maxlength"];
	if(null==mLen)
	{
		mLen=length;
	}

	var maxLength = parseInt(mLen);
	if(!checkSpecialKeys(e))
	{
		if(object.value.length > maxLength)
		{
			alert("Maximum input length (" + maxLength + " characters) has been exceeded.");
			var currentvalue = object.value.substring(0, (maxLength) );
			object.value = currentvalue;
			/*if(window.event)//IE
			{
				//alert("Is IE");
				//e.returnValue = false;
			}
			else//Firefox
			{
				//alert("Is FF");
				e.preventDefault();
			}
			*/
		}
	}
	return false;
}

function checkSpecialKeys(e)
{
    if(e.keyCode !=8 && e.keyCode!=46 && e.keyCode!=37 && e.keyCode!=38 && e.keyCode!=39 && e.keyCode!=40)
        return false;
    else
        return true;
}

function HideVAT()
{
	document.getElementById('VATRow').style.display = 'none';
}

function ShowVatIfEU(object)
{
	var aryEUCountries = new Array("Austria", "Belgium", "Bulgaria", "Cyprus", "Czech Republic", "Denmark", "Estonia", "Finland", "France", "Germany", "Greece", "Hungary", "Ireland (Eire)", "Ireland (Northern)", "Italy", "Latvia", "Lithuania", "Luxembourg", "Malta", "Netherlands", "Poland", "Portugal", "Romania", "Slovakia", "Slovenia", "Spain", "Sweden", "United Kingdom");
	var boolMatch = false;
	
	for (i=0; i<aryEUCountries.length; i++)
	{
		if ((object.value == aryEUCountries[i]) || (boolMatch == true))
		{
			document.getElementById('VATRow').style.display = 'block';
			boolMatch = true;	
		}
		else
		{
			document.getElementById('VATRow').style.display = 'none';
		}
	}
}
