Event.observe('clientregsubmit', 'click', function(event)
{
	
	  var valid = true;
	  var basepath = $('basepath').value;
	  
	  var contactname = $F('ClientContactName').strip();
	  
	  var companyname = $F('ClientCompanyName').strip();
	  
	  var email = $F('ClientEmail').strip();
	  
	  var username = $F('ClientClientUsername').strip();
	  
	  var vat = $F('ClientVat').strip();
	  
	  var address1 = $F('ClientAddress1').strip();
	  var city = $F('ClientCity').strip();
	  var state = $F('ClientState').strip();
	  var county = $F('ClientCounty').strip();
	  var postcode = $F('ClientPostcode').strip();
	  var phone = $F('ClientPhone').strip();

	  var agreeterms = $F('ClientAgreeTerms');
	  
	  if ('' != email)
	  {
	  	if(IsEmail("ClientEmail"))
	  	{
			$('error_email').update(invalid_email).show();
	    	valid = false;  	
	  	}
	  	else
	  	{
	  		$('error_email').hide();
	  	}
	  }
	  
	  if ('' != username)
	  {
	  	if(username.length < 4 || username.indexOf(' ')!=-1)
	  	{
	  		$('error_username').update(lesschar_username).show();
	  		valid = false;
	  	}
	  	else
	  	{
	  		var unamecheckresponse = usernameuniquecheck(username);
	  		if(unamecheckresponse == false)
	  		{
	  			valid = false;
	  		}
	  	}
	  }
	  
	  if ('' == contactname)
	  {
	    $('error_contact_name').update(empty_contactperson).show();
	  	valid = false;
	  }
	  else
	  {
	  	$('error_contact_name').update('').hide();
	  }
	  
	  if ('' == companyname)
	  {
	    $('error_company_name').update(empty_companyname).show();
	    valid = false;
	  }
	  else
	  {
	  	$('error_company_name').update('').hide();
	  }
	  
	  if ('' == email)
	  {
	    $('error_email').update(empty_email).show();
	    valid = false;
	  }
	  
	  if ('' == username)
	  {
	    $('error_username').update(empty_username).show();
	    valid = false;
	  }
	  
	  if ('' == vat)
	  {
	    $('error_vat').update(empty_vat).show();
	    valid = false;
	  }
	  else
	  {
	  	$('error_vat').update('').hide();
	  }
	  
	  if ('' == address1)
	  {
	    $('error_address1').update(empty_address1).show();
	    valid = false;
	  }
	  else
	  {
	  	$('error_address1').update('').hide();
	  }
	  
	  if ('' == city)
	  {
	    $('error_city').update(empty_city).show();
	    valid = false;
	  }
	  else
	  {
	  	$('error_city').update('').hide();
	  }
	  
	  if ('' == state)
	  {
	    $('error_state').update(empty_state).show();
	    valid = false;
	  }
	  else
	  {
	  	$('error_state').update('').hide();
	  }
	  
	  if ('' == county)
	  {
	    $('error_county').update(empty_county).show();
	    valid = false;
	  }
	  else
	  {
	  	$('error_county').update('').hide();
	  }
	  
	  if ('' == postcode)
	  {
	    $('error_postcode').update(empty_postcode).show();
	    valid = false;
	  }
	  else
	  {
	  	$('error_postcode').update('').hide();
	  }
	  
	  if ('' == phone)
	  {
	    $('error_phone').update(empty_phone).show();
	    valid = false;
	  }
	  else
	  {
	  	$('error_phone').update('').hide();
	  }
	  
	  
	  if(1 != agreeterms)
	  {
	  	$('error_agree_terms').update(empty_agree_terms).show();
	    valid = false;
	  }
	  else
	  {
	  	$('error_agree_terms').update('').hide();
	  }
	  
	  GeneratePassword();
	  
	  if(valid == true)
	  	$('ClientClientRegistrationForm').submit();
	  else
	  	Event.stop(event);
});

Event.observe('clientregreset', 'click', function(event)
{
	$('ClientClientRegistrationForm').reset();
	Event.stop(event);
});

function usernameuniquecheck(username)
{
	var unamecheck = true;
	var basepath = $('basepath').value;
	new Ajax.Request(basepath+"clients/usernameuniquecheck", {
	    		method: "post", 
	    		parameters: { usernametocheck: username }, 
	    		onComplete: function(transport){
				   	var response = transport.responseText;
				   	if(response == 'unamecheckfailed')
				   	{
				   		$('error_username').update(duplicate_username).show();
	  					unamecheck = false;
				   	}
				   	else
				   	{
				   		$('error_username').update('').hide();
				   	}
				}
	});
	return unamecheck;
}

function GeneratePassword() {
    var length=6;
    var sPassword = "";
    length =6;
    var noPunction = true;
    var randomLength = false;
    
    if (randomLength) {
        length ==Math.random();

        length = parseInt(length * 100);
        length = (length % 7) + 6
    }
   
    for (i=0; i < length; i++) {

        numI = getRandomNum();
        if (noPunction) { while (checkPunc(numI)) { numI = getRandomNum(); } }

        sPassword = sPassword + String.fromCharCode(numI);
    }
    $('ClientClientPassword').value = sPassword;
    return true;
    
}

function getRandomNum() {

    // between 0 - 1
    var rndNum = Math.random()

    // rndNum from 0 - 1000
    rndNum = parseInt(rndNum * 1000);

    // rndNum from 33 - 127
    rndNum = (rndNum % 94) + 33;

    return rndNum;
}

function checkPunc(num) {

    if ((num >=33) && (num <=47)) { return true; }
    if ((num >=58) && (num <=64)) { return true; }
    if ((num >=91) && (num <=96)) { return true; }
    if ((num >=123) && (num <=126)) { return true; }

    return false;
}