function inValidCharSet( x_str, x_charset ) {
	var f_result = true;

	for ( var i = 0; i < x_str.length; i++ )
		if ( x_charset.indexOf( x_str.substr( i, 1 ) ) < 0 ) {
			f_result = false;
			break;
		}

	return f_result;
}

function validateTelNo( x_field ) {
	var f_regex = new RegExp( /^(((\+|00 )\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,3})|(\(?\d{2,5}\)?))(-| )?(\d{3,4})(-| )?(\d{3,4})(( x| ext)\d{1,5}){0,1}$/ );
	f_telno = new String( x_field.value );
	f_result = f_regex.test( f_telno );

	// Patch for Tamworth phone numbers which are 01827 #####
	if ( !f_result ) {
		f_regex = new RegExp( /^((\(?(01827)\)?)(-| )?(\d{5}))(( x| ext)\d{1,5}){0,1}$/ );
		f_result = f_regex.test( f_telno );
	}

	return f_result;
}

function validateEmail( x_field ) {
	var f_email = new String( x_field.value );
	var f_inval_regex = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
	var f_valid_regex = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;

	if ( !f_inval_regex.test( f_email ) && f_valid_regex.test( f_email ) ) {
		return true;
	}
	return false;
}

function verifyCreditcardForm() {
  f_error = false;
  f_frm = document.frmCreditcard;
  f_errormsg = "Errors have occured during the processing of your form.\nPlease make the following corrections:\n\n";
  var now = new Date();
  var f_year = now.getFullYear();
  var f_month = now.getMonth() + 1;

  if ( f_frm.crc_type.value == '' ) {
    f_errormsg += "Please select your credit card type.\n\n";
    f_error = true;                     
  }                                         

  if ( f_frm.crc_number.value.length < 14 || !inValidCharSet(f_frm.crc_number.value," 0123456789*") ) {
    f_errormsg += "Please enter a valid credit card number.\n\n";
    f_error = true;                                         
  }                                                             

  if ( f_frm.crc_smonth.value != "" || f_frm.crc_syear.value != "" ) {
    if ( f_frm.crc_smonth.value == "" || f_frm.crc_syear.value == "" ) {
      f_errormsg += "Please enter a valid start date.\n\n";
      f_error = true;                                                                     
    } else {                                                                                    
      if ( f_frm.crc_syear > f_year ||
           ( f_frm.crc_syear.value >= f_year && f_frm.crc_smonth.value > f_month ) ) {
        f_errormsg += "Please enter a valid start date.\n\n";
        f_error = true;  
      }                          
    }                                  
  }                                        

  if ( f_frm.crc_exmonth.value == "" ||
       f_frm.crc_exyear.value == "" ||
       f_frm.crc_exyear.value < f_year ||
       ( f_frm.crc_exyear.value <= f_year && f_frm.crc_exmonth.value < f_month ) ) {
    f_errormsg += "Please enter a valid expiry date.\n\n";
    f_error = true;
  }   

  if ( f_frm.crc_name.value.length < 1 ) {       
    f_errormsg += "Please enter your name as it appears on the card.\n\n";
    f_error = true;                                          
  }                                                              

  if ( f_frm.crc_sid.value.length < 3 || !inValidCharSet(f_frm.crc_sid.value,"0123456789") ) {
    f_errormsg += "Please enter your SID code.\n";
    f_error = true;                                                              
  }                                                                                  

  if (f_error) {                                                                         
    alert(f_errormsg);
  } else {                                                                                         
    f_frm.submit();
  }
}

function verifyAddressForm() {
	var f_frm = document.frmAddress;
	var f_msg = 'Errors have occurred during the processing of your form.\nPlease make the following corrections.\n\n';
	var f_error = false;

	if ( f_frm.zaf_forename && f_frm.zaf_forename.value.length < 1 ) {
		f_msg += "Please enter your first name.\n\n";
		f_error = true;
	}

	if ( f_frm.zaf_surname && f_frm.zaf_surname.value.length < 1 ) {
		f_msg += "Please enter your family name.\n\n";
		f_error = true;
	}

	if ( f_frm.zaf_ad1 && f_frm.zaf_ad1.value.length < 1 ) {
		f_msg += "Please enter the first line of your address.\n\n";
		f_error = true;
	}

	if ( f_frm.zaf_ad4 && f_frm.zaf_ad4.value.length < 1 ) {
		f_msg += "Please enter your postal town.\n\n";
		f_error = true;
	}

	if ( f_frm.zaf_postcode ) { 
	  if ( f_frm.zaf_postcode.value.length < 1 ) {
			f_msg += "Please enter your full postcode.\n\n";
			f_error = true;
		} else {
	  	f_frm.zaf_postcode.value =  f_frm.zaf_postcode.value.toUpperCase();
		}
	}

	if ( f_frm.zaf_tel && f_frm.zaf_tel.value.length < 1 ) {
		f_msg += "Please enter your contact number.\n\n";
		f_error = true;
	} else if ( !validateTelNo( f_frm.zaf_tel ) ) {
		f_msg += "Please enter a valid contact number.\n\n";
		f_error = true;
	}

  if ( f_frm.Address1 ) {
	  if ( f_frm.PromptSet.value == 'Alternative' ) {
		  if ( f_frm.Address1.value.length < 1 || f_frm.Address2.value.length < 1 ) {
			  f_msg += "Please enter your street and town.\n\n";
			  f_error = true;
		  }
	  } else {
		  if ( f_frm.Address1.value.length < 1 ) {
			  f_msg += "Please enter your postcode.\n\n";
			  f_error = true;
		  }
		}
	}

	if ( f_error ) {
		alert(f_msg);
	} else {
		f_frm.submit();
	}

}

function editAddress(x_zafid) {
	var f_frm = document.frmAddressEdit;
	f_frm.zaf_zafid.value = x_zafid;
	f_frm.submit();
}

function deleteAddress(x_zafid) {
	var f_frm = document.frmAddressDelete;
	if ( confirm( "Delete this address?" ) ) {
	  f_frm.zaf_zafid.value = x_zafid;
		f_frm.submit();
	}
}

function editCreditcard(x_crcid) {
	var f_frm = document.frmCreditcardEdit;
	f_frm.crc_crcid.value = x_crcid;
	f_frm.submit();
}

function deleteCreditcard(x_crcid) {
	var f_frm = document.frmCreditcardDelete;
	if ( confirm( "Delete this credit card?" ) ) {
	  f_frm.crc_crcid.value = x_crcid;
		f_frm.submit();
	}
}

function cancelOrder(x_cphid) {
	var f_frm = document.frmOrderCancel;
	if ( confirm( "Request cancellation of this order?" ) ) {
		f_frm.cph_cphid.value = x_cphid;
		f_frm.submit();
	}
}

function viewOrder(x_cphid) {
  var f_frm = document.frmOrderView;
	f_frm.cph_cphid.value = x_cphid;
	f_frm.submit();
}

