// JavaScript Document

/** changes a form objects class */
function classChange(formItem, newclass)
{
  formItem.className=newclass;
}

/** checks input is a valid integer */
function validInteger(formItem)
{
  var str = "";
  var valid = 1;
  var end = formItem.value.length;
  var errorclass = "errorBox";
  if (end == 0)
  {
    classChange(formItem, errorclass);
	valid = 0;
  }else{
	  for (i=0; i < end; i++)
	  {
		if (parseInt(formItem.value.charAt(i)) || formItem.value.charAt(i) == '0')
		{
		  str += formItem.value.charAt(i);
		}else{
		  classChange(formItem, errorclass);
		  valid = 0;
		  break;
		}
	  }
  }
  formItem.value = str;
  return(valid);
}

/** check if value is double (2 d.p.) */
function validDouble(formItem)
{
  var str = "";
  var valid = 1;
  var point = false;
  var end = formItem.value.length;
  var errorclass = "errorBox";
  if (end == 0)
  {
    classChange(formItem, errorclass);
	valid = 0;
  }else{
	  for (i=0; i < end; i++)
	  {
		if (parseInt(formItem.value.charAt(i)) || formItem.value.charAt(i) == '0')
		{
		  str += formItem.value.charAt(i);
		}else if (formItem.value.charAt(i) == '.' && point == false){
		  str += formItem.value.charAt(i);
		  point = true;
		  end = i + 3;
		}else{
		  classChange(formItem, errorclass);
		  valid = 0;
		  break;
		}
	  }
  }
  formItem.value = str;
  return(valid);
}

/** check if date is in correct format "dd-mm-yyyy"*/
function validDate(formItem)
{
  var str = "";
  var day = "";
  var month = "";
  var year = "";
  var valid = 1;
  var end = formItem.value.length;
  var errorclass = "errorBox";
  if (end < 10 || end > 10)
  {
	classChange(formItem, errorclass);
	var valid = 0;
  }
  else
  {
    for (i=0; i < end; i++)
    {
	  if (i == 2 || i == 5)
	  {
	    if (formItem.value.charAt(i) == '-' || formItem.value.charAt(i) == '/' || formItem.value.charAt(i) == '.')
	    {
		  str += '-';
		}
	  }
	  else
	  {
	    if (parseInt(formItem.value.charAt(i)) || formItem.value.charAt(i) == '0')
	    {
		  str += formItem.value.charAt(i);
		}
		else
		{
		  classChange(formItem, errorclass);
		  var valid = 0;
		  break;
		}
	  }
    }
  }	
  if(valid == 1)
  {
	day = str.substring(0, 2);
	month = str.substring(3, 5);
	year = str.substring(6, 10);
	if(parseInt(month) > 12)
	{
	  classChange(formItem, errorclass);
	  var valid = 0;
	  month="12";
	}
	else if(parseInt(month) < 1)
	{
	  classChange(formItem, errorclass);
	  var valid = 0;
	  month="01";
	}
	else if(parseInt(day) < 1)
	{
	  classChange(formItem, errorclass);
	  var valid = 0;
	  day="01";
	}
	else if(parseInt(month) == 1 || parseInt(month) == 3 || parseInt(month) == 5 || parseInt(month) == 7 || parseInt(month) == 8 || parseInt(month) == 10 || parseInt(month) == 12)
	{
		if(parseInt(day) > 31)
		{
			classChange(formItem, errorclass);
			var valid = 0;
			day="31";
		}
	}
	else if(parseInt(month) == 4 || parseInt(month) == 6 || parseInt(month) == 9 || parseInt(month) == 11)
	{
		if(parseInt(day) > 30)
		{
			classChange(formItem, errorclass);
			var valid = 0;
			day="30";
		}
	}
	else if(parseInt(month) == 2)
	{
		if(parseInt(year)%4 == 0)
		{
			if(parseInt(day) > 29)
			{
				classChange(formItem, errorclass);
				var valid = 0;
				day="29";
			}
		}
		else
		{
			if(parseInt(day) > 2)
			{
				classChange(formItem, errorclass);
				var valid = 0;
				day="28";
			}
		}
	  }	
	  str=day+"-"+month+"-"+year;
	}	
  	formItem.value = str;			
  	return(valid);
}

/** checks id time is in format "hh:mm:ss" */
function validTime(formItem)
{
  var str = "";
  var valid = 1;
  var end = formItem.value.length;
  var errorclass = "errorBox";
  if (end < 8 || end > 8)
  {
	classChange(formItem, errorclass);
	valid = 0;
  }else{
    for (i=0; i < end; i++)
    {
	  if (i == 2 || i == 5)
	  {
	    if (formItem.value.charAt(i) == '-' || formItem.value.charAt(i) == ':' )
	    {
		  str += ':';
		}
	  }else{
	    if (parseInt(formItem.value.charAt(i)) || formItem.value.charAt(i) == '0')
	    {
		  str += formItem.value.charAt(i);
		}else{
		  classChange(formItem, errorclass);
		  valid = 0;
		  break;
		}
	  }
    }
	formItem.value = str;
  }
  return(valid);
}

/** checks if text box has value */
function validText(formItem)
{
	var valid;
	if (formItem.value == "")
	{
		valid = 0;
		classChange(formItem, "errorBox");
	}else{
		valid = 1;
	}
	return(valid);
}

function validText1(formItem, errorclass)
{
	var valid;
	if (formItem.value == "")
	{
		valid = 0;
		classChange(formItem, errorclass);
	}else{
		valid = 1;
	}
	return(valid);
}

function validStyle(formItem)
{
	var valid;
	var str="";
	var i;
	if (formItem.value == "")
	{
		valid = 0;
		classChange(formItem, "errorBox");
	}else{
		if((formItem.value.charAt(0)>='a')&&(formItem.value.charAt(i)<='z') || (formItem.value.charAt(0)>='A')&&(formItem.value.charAt(i)<='Z')
		|| (formItem.value.charAt(0)>='0')&&(formItem.value.charAt(i)<='9'))
		{
			valid = 1;
		}
		else
		{
			valid = 0;
			classChange(formItem, "errorBox");
			for(i=1; i<formItem.value.length; i++)
			{
				str += formItem.value.charAt(i);
			}
			formItem.value = str;
		}
	}
	return(valid);
}

function validColor(formItem)
{
  	var str="";
  	var valid = 1;
  	var end = formItem.value.length;
  	var errorclass = "errorBox";
	if(end != 0)
	{
		if (end < 7 || end > 7)
		{
			valid = 0;
			classChange(formItem, "errorBox");
		}
		else if(formItem.value.charAt(0) != '#')
		{
			valid = 0;
			classChange(formItem, "errorBox");
		}
		else
		{
			str += formItem.value.charAt(0);
			for(i=1; i<end; i++)
			{
				if (((formItem.value.charAt(i)>='a')&&(formItem.value.charAt(i)<='f')) || ((formItem.value.charAt(i)>='A')&&(formItem.value.charAt(i)<='F')) || ((formItem.value.charAt(i)>='0')&&(formItem.value.charAt(i)<='9')))
				{
					str += formItem.value.charAt(i);
				}
				else
				{
					valid = 0;
					classChange(formItem, "errorBox");
				}
			}
		}
	}
	formItem.value = str;
	return(valid);
}

/** Enter the password and its repeat, check they are the same and are valid passwrods. */
function validPassword(formItem, repeatFormItem)
{
	var valid;
	var tmpLength;
	var tmpFormItem;
	var length = formItem.value.length;
	var length2 = repeatFormItem.value.length;
	for(i=0; i<2; i++)
	{
		if(i == 0)
		{
			tmpLength = length;
			tmpFormItem = formItem;
		}
		else if(i == 1)
		{
			tmpLength = length2;
			tmpFormItem = repeatFormItem;
			if(formItem.value != repeatFormItem.value)
			{
				alert("Both passwords must match");
				valid = 0;
				classChange(repeatFormItem, "errorBox");
				repeatFormItem.value = "";
				break;
			}
		}
		if(tmpFormItem.value == "")
		{
			alert("The password must be longer than 8 characters.");
			valid = 0;
			classChange(tmpFormItem, "errorBox");
			break;
		}
		else if(tmpLength < 8 || tmpLength > 32)
		{
			alert("The password must be between 8 and 32 characters.");
			valid = 0;
			classChange(tmpFormItem, "errorBox");
			break;
		}
	
		else if((tmpFormItem.value.charAt(0)>='0')&&(tmpFormItem.value.charAt(0)<='9'))
		{
			alert("The password must not begin with a numeric character.");
			valid = 0;
			classChange(tmpFormItem, "errorBox");
			tmpFormItem.value = "";
			break;
		}
		else
		{
			valid = 1;
		}
	}
	return(valid);
}

function validUserName(formItem)
{
	var str="";
	var valid;
	var i;
	if((formItem.value.charAt(0)>='0')&&(formItem.value.charAt(0)<='9'))
	{
		alert("The username must not begin with a numeric character.");
		valid = 0;
		classChange(formItem, "errorBox");
	}else if (formItem.value == "")
	{
		valid = 0;
		classChange(formItem, "errorBox");
	}else{
		for(i=0; i<formItem.value.length; i++)
		{
			if(((formItem.value.charAt(i)>='a')&&(formItem.value.charAt(i)<='z')) || 
			((formItem.value.charAt(i)>='A')&&(formItem.value.charAt(i)<='Z')) || 
			((formItem.value.charAt(i)>='0')&&(formItem.value.charAt(i)<='9')) || 
			(formItem.value.charAt(i)=='.'))
			{
				valid = 1;
				str += formItem.value.charAt(i);
			}else{
				alert("The username must be made of alphanumeric characters only.");
				valid = 0;
				classChange(formItem, "errorBox");
				break;
			}
		}
	}
	formItem.value = str;
	return(valid);
}

function validEmail(formItem)
{
	var str="";
	var valid;
	var i;
	if (formItem.value == ""){
		valid = 1;
	}
	else if((formItem.value.charAt(0)>='0')&&(formItem.value.charAt(0)<='9'))
	{
		alert("The address must not begin with a numeric character.");
		valid = 0;
		classChange(formItem, "errorBox");
	}
	else
	{
		for(i=0; i<formItem.value.length; i++)
		{
			if(((formItem.value.charAt(i)>='a')&&(formItem.value.charAt(i)<='z')) || 
			((formItem.value.charAt(i)>='A')&&(formItem.value.charAt(i)<='Z')) || 
			((formItem.value.charAt(i)>='0')&&(formItem.value.charAt(i)<='9')) || 
			(formItem.value.charAt(i)=='@') || (formItem.value.charAt(i)=='.'))
			{
				valid = 1;
				str += formItem.value.charAt(i);
			}else{
				alert("The address must be made of alphanumeric characters only.");
				valid = 0;
				classChange(formItem, "errorBox");
				break;
			}
		}
	}
	formItem.value = str;
	return(valid);
}

		
	