// JavaScript Document

window.onload = attachFormHandlers;


function attachFormHandlers()
{
  // Ensure we're working with a 'relatively' standards 
  // compliant browser
  if (document.getElementsByTagName)
  {
    var objForm = document.getElementsByTagName('form');

    for (var iCounter=0; iCounter<objForm.length; iCounter++)
      objForm[iCounter].onsubmit = function(){return checkForm(this);}
  }
}

function checkForm(objForm)
{
  var arClass, bValid;
  var objField = objForm.getElementsByTagName('*');
  var reason;
  var reasonText;

  for (var iFieldCounter=0; iFieldCounter<objField.length; iFieldCounter++)
  {
    // Allow for multiple values being assigned to the class attribute
    arClass = objField[iFieldCounter].className.split(' ');
    for (var iClassCounter=0; iClassCounter<arClass.length; iClassCounter++)
    {
		reasonText = '';
      switch (arClass[iClassCounter])
      {
        case 'string':
			if(objField[iFieldCounter].value != ""){
           		bValid = isString(objField[iFieldCounter].value.replace(/^\s*|\s*$/g, ''));
				reasonText = 'Inte bara siffor';
			}else{
				bValid = true;
			}
		   reason = 0;
           break;
        case 'number' :
			if(objField[iFieldCounter].value != ""){
           		bValid = isNumber(objField[iFieldCounter].value);
				reasonText = 'Endast siffror';
			}else{
				bValid = true;	
			}		   
		   	reason = 0;
          	 break;
        case 'email' :
			if(objField[iFieldCounter].value != ""){
           		bValid = isEmail(objField[iFieldCounter].value);
				reasonText = 'Ej giltig e-post';
			}else{
				bValid = true;	
			}		   
		   	reason = 0;
           	break;
		case 'required' :
			bValid = objField[iFieldCounter].value != "";			
			reason = 1;
			break;
        default:
           bValid = true;
      }

      if (bValid == false)
      {
        // If this field is invalid, leave the testing early,
        // and alert the visitor to this error
		if (reason == 1){
			alert('Du måste ange: ' + objField[iFieldCounter].name);
			objField[iFieldCounter].select();
			objField[iFieldCounter].focus();
			return false;			
			
		}
		else{
			//alert('Felaktigt värde i fältet: ' + objField[iFieldCounter].name);
			alert(reasonText + ' i fältet: ' + objField[iFieldCounter].name);
			objField[iFieldCounter].select();
			objField[iFieldCounter].focus();
			return false;
		}
      }
    }
  }
  return true;
}

function isString(strValue)
{
  return (typeof strValue == 'string' && strValue != '' && isNaN(strValue));
}

function isNumber(strValue)
{
  return (!isNaN(strValue) && strValue != '');
}

function isEmail(strValue)
{
  var objRE = /^[\w-\.\']{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,}$/;

  return (strValue != '' && objRE.test(strValue));
}
