/*
simple form validation written for portakabin using http://www.portakabin.co.uk/portaloo-test.html
for development
*/




function valContactForm(f,required)
{
	var myForm = document.forms[f];
	var tmpRadioName='';
	var complete = true;
	var myAlert;
	var myErrors = new Array();
	var webFilter =  /^(((ht|f)tp(s?))\:\/\/)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*$/;
	var emailFilter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var emailRegex = new RegExp(emailFilter);
	var webRegex = new RegExp(webFilter);
	var myAlertArray = '';
	for (var i=0; i <myForm.length; i++)
	{
		if(myForm[i].tagName=='INPUT')
		{
			if(myForm[i].type=='text')
			{
				if(myForm[i].value.replace(/^\s+|\s+$/g,"")=='')
				{	
					if(myAlert = (isIN(myForm[i].name,required)))
					{
						complete=false;
						myAlertArray += myAlert;
					}
					
				}
				if(myForm[i].name=='email')
				{
					//email field filled but so check validity
					if((emailRegex.test(myForm[i].value)===false) && (myForm[i].value.replace(/^\s+|\s+$/g,"")!=''))
					{
						complete=false;
						myAlert= myLang('inValidEmail');
						myAlertArray += myAlert;
					}
					
				}
				if((myForm[i].name == 'telephone') && (myForm[i].value.replace(/^\s+|\s+$/g,"")!=''))
				{
					var res =  _validatePhone((myForm[i].value));
					if(res[0] === false)
					{
						complete=false;
						myAlertArray += res[1];
					}
					
				}
				if(myForm[i].name=='XXDESXXemail_address')
                                {
                                        //email field filled but so check validity
                                        if((emailRegex.test(myForm[i].value)===false) && (myForm[i].value.replace(/^\s+|\s+$/g,"")!=''))
                                        {
                                                complete=false;
                                                myAlert= myLang('inValidEmail');
                                                myAlertArray += myAlert;
                                        }
					if(myForm[i].value==''){
						complete=false;
                                                myAlert= myLang('email');
                                                myAlertArray += myAlert;
					}

                                }

			}
			else if(myForm[i].type=='checkbox')
			{
				if(myForm[i].checked === false)
				{
					if(myAlert = (isIN(myForm[i].name,required)))
					{
						complete=false;
						myAlertArray += myAlert;
					}
				}
			}
			else if(myForm[i].type=='radio')
			{
				if(tmpRadioName != myForm[i].name)
				{
					var radioChoice=false;
					var myRadio = document.getElementsByName(myForm[i].name);
					tmpRadioName = myForm[i].name;
					for(var k=0; k<myRadio.length;k++)
					{
						if(myRadio[k].checked===true)
						{
							radioChoice = true;
						}
					}
					if(radioChoice ===false)
					{
						if(myAlert = (isIN(myForm[i].name,required)))
						{
							complete=false;
							myAlertArray += myAlert;
						}
					}
				}
				
				
			}
		}
	}
	if(complete === true)
	{
		return true;
	}
	else
	{
		alert(myAlertArray);
		return false;
	}
	
}
/*
*This function is going to be modified to handle language sets for form names
*
*/
//check if name is part of the compulsory fields
function isIN(value, array)
{
	for(var i in array)
	{	
		if(array[i]==value)
		{
			return(myLang(value))
		}
	}
	return false;
}
//resolve language of error display
function myLang(value)
{
	var myLang = UrlLang();
	var myErrors = loadErrors(myLang);
	return(myErrors[value]);
}
//get url and figure out language
function UrlLang()
{
	myUrl = window.location.href.replace('http://','').split('/');
	if(myUrl[0].search('kabin.co.uk') != -1)
	{
		return('en');
	}
	else if(myUrl[0].search('foremansbuildings.co.uk') != -1)
        {
                return('en');
        }

	else if(myUrl[0].search('kabin.fr') != -1)
	{
		return('fr');
	}
	else if(myUrl[0].search('belgique') != -1)
	{
		return('befr');
	}
	else if(myUrl[0].search('belgie') != -1)
	{
		return('benl');
	}
	else if(myUrl[0].search('kabin.nl') != -1)
	{
		return('nl');
	}
	else{
		return('en');
	}
	
}
//error parsing
function loadErrors(Lang)
{
 	error = new Array();
 	error[Lang] = new Array();
 	switch(Lang)
 	{
 		case 'en' :	error['en']['name'] = '- Name Required \n';
	 				error['en']['jobtitle'] = '- Job Title Required \n';
	 				error['en']['email'] = '- Email is Required \n';
					error['en']['organisation'] = '- organisation Required \n';
					error['en']['address1'] = '- Address Line 1 Required \n';
					error['en']['address2'] = '- Address Line 2 Required \n';
					error['en']['postcode'] = '- Post Code Required \n';
					error['en']['telephone'] = '- Telephone Required \n';
					error['en']['buildinglength'] = '- Building Rental Period Required \n';
					error['en']['promise'] = '- Promise Awareness Required \n';
					error['en']['interests2'] ='- Please choose which use you are interested in \n';
					error['en']['inValidEmail'] ='- Email address is invalid\n';
					error['en']['shortPhone'] ='- Phone Number is too short\n';
					error['en']['longPhone'] ='- Phone Number is too Long\n';
					error['en']['dodgyPhone'] ='- Invalid Phone (enter number For extensions please use > #)\n';
					
					return(error[Lang]);
					break;
					
		 case 'fr':	error['fr']['name'] = '- Prénom est  demandé. \n - Nom est demandé \n';
		 			error['fr']['firstname'] = '- Prénom est demandé \n';
	 				error['fr']['surname'] = '- Nom est demandé \n';
	 				error['fr']['email'] = '- Email est demandé \n';
	 				error['fr']['town'] = '- Ville est demandé \n';
	 				error['fr']['jobtitle'] = '- Fonction est demandé \n';
					error['fr']['organisation'] = '- Société  est demandé \n';
					error['fr']['person-type'] = '- Statut est demandé \n';
					error['fr']['address1'] = '- Addresse 1 est demandé \n';
					error['fr']['address2'] = '- Addresse 2 est demandé \n';
					error['fr']['postcode'] = '- Code Postal est demandé \n';
					error['fr']['telephone'] = '- Téléphone est demandé \n';
					error['fr']['buildinglength'] = '- Remplir le champs est demandé \n';
					//error['fr']['promise'] = 'Période de location du bâtiment demandé\n';
					error['fr']['promise'] = '- Veuillez choisir une option pour la question - \'Connaissez-vous notre promesse \"Dans les temps, dans le budget prévu" ? \'';
					error['fr']['inValidEmail'] ='- Adresse Email invalide\n';
					return(error[Lang]);
					break;
					
					
	case 'befr':	error['befr']['name'] = '- Nom est demandé \n';
	 				error['befr']['firstname'] = '- Prénom est demandé \n';
	 				error['befr']['surname'] = '- Nom est demandé \n';
	 				error['befr']['email'] = '- Email est demandé \n';
	 				error['befr']['town'] = '- Ville est demandé \n';
	 				error['befr']['jobtitle'] = '- Fonction est demandé \n';
					error['befr']['organisation'] = '- Société  est demandé \n';
					error['befr']['address1'] = '- Addresse 1 est demandé \n';
					error['befr']['address2'] = '- Addresse 2 est demandé \n';
					error['befr']['postcode'] = '- Code Postal est demandé \n';
					error['befr']['telephone'] = '- Téléphone est demandé \n';
					error['befr']['buildinglength'] = '- Remplir le champs est demandé \n';
					error['befr']['promise'] = '- Période de location du bâtiment demandé\n';
					error['befr']['inValidEmail'] ='- Adresse Email invalide\n';
					return(error[Lang]);
					break;
					
	case 'nl':		error['nl']['name'] = '- Naam is verplicht. \n';
	 				error['nl']['firstname'] = '- Voornaam is verplicht. \n';
	 				error['nl']['surname'] = '- Achternaam is verplicht. \n';
	 				error['nl']['email'] = '- Email is verplicht. \n';
	 				error['nl']['jobtitle'] = '- Functie is verplicht. \n';
					error['nl']['organisation'] = '- Organisatie  is verplicht. \n';
					error['nl']['town'] = '- Stad  is verplicht. \n';
					error['nl']['address1'] = '- Adres 1 is verplicht. \n';
					error['nl']['address2'] = '- Adres 2 is verplicht. \n';
					error['nl']['postcode'] = '- Post Code is verplicht. \n';
					error['nl']['telephone'] = '- Telefoonnummer is verplicht. \n';
					error['nl']['buildinglength'] = '- Gebouw Huur Periode is verplicht. \n';
					error['nl']['promise'] = '- Belofte Bekendheid is verplicht. \n';
					error['nl']['inValidEmail'] ='- Email adres is niet herkenbaar \n';
					return(error[Lang]);
					break;
	case 'benl':	error['benl']['name'] = '- Naam is verplicht. \n';
	 				error['benl']['firstname'] = '- Voornaam is verplicht. \n';
	 				error['benl']['surname'] = '- Achternaam is verplicht. \n';
	 				error['benl']['email'] = '- Email is verplicht. \n';
	 				error['benl']['jobtitle'] = '- Functie is verplicht. \n';
					error['benl']['organisation'] = '- Organisatie  is verplicht. \n';
					error['benl']['town'] = '- Stad  is verplicht. \n';
					error['benl']['address1'] = '- Adres 1 is verplicht. \n';
					error['benl']['address2'] = '- Adres 2 is verplicht. \n';
					error['benl']['postcode'] = '- Post Code is verplicht. \n';
					error['benl']['telephone'] = '- Telefoonnummer is verplicht. \n';
					error['benl']['buildinglength'] = '- Gebouw Huur Periode is verplicht. \n';
					error['benl']['promise'] = '- Belofte Bekendheid is verplicht. \n';
					error['benl']['inValidEmail'] ='- Email adres is niet herkenbaar \n';
					return(error[Lang]);
					break;

	}
 }


function _validatePhone(num)
{
	var minLength = 6;
	var maxLength = 22;
	var permitted = [0,1,2,3,4,5,6,7,8,9,'-','+','(',')',':','#','*'];
	//turn phone number into array
	var numArray = _explode(num);
	
	if(num.length < parseInt(minLength))
	{
		return [false,myLang('shortPhone')];
	}
	else if(num.length > parseInt(maxLength))
	{
		return [false,myLang('longPhone')];
	}
	
	for(var i in numArray)
	{
		var found = false;
		for(var j in permitted)
		{
			if(numArray[i]==permitted[j])
			{
				found = true;
				
			}
		}
		if(found === false)
		{
			return[false, myLang('dodgyPhone')];
		}
	}
	
	
	return [true, 'validating phone'];
}

function _explode(num)
{
	var arr = [];
	for(var i=0;i<num.length;i++)
	{
		arr[i] = num.substr(i,1);
	}
	return (arr);
}

