function dsValidateString(dsString, dsRegExp) {
	return dsRegExp.test(dsString)
} 

function dsCheckEmpty(dsString) {
	return !dsValidateString(dsString, /\S/);
}

function dsMoveNext(dsObj, dsLength) {
	if (dsObj.value.length >= dsLength) {
		for (i = 0; i < scForm.elements.length; i++) {
			if(dsObj == scForm.elements[i] && scForm.elements[i+1].type != "hidden") {
				scForm.elements[i+1].focus();
				break;
			}
		}
	}
}

function scValidateBilling(scForm) {
	if (dsCheckEmpty(scForm.FirstName.value)) {
		alert ("Please enter your First Name.");
		scForm.FirstName.focus();
		return false;
	}
	else if (dsCheckEmpty(scForm.LastName.value)) {
		alert ("Please enter your Last Name.");
		scForm.LastName.focus();
		return false;
	}
	else if (dsCheckEmpty(scForm.Address.value)) {
		alert ("Please enter your Address.");
		scForm.Address.focus();
		return false;
	}
	else if (dsCheckEmpty(scForm.City.value)) {
		alert ("Please enter your City.");
		scForm.City.focus();
		return false;
	}
	else if (dsCheckEmpty(scForm.Zipcode.value)) {
		alert ("Please enter your Zipcode.");
		scForm.Zipcode.focus();
		return false;
	}
	else if (dsCheckEmpty(scForm.State.value)) {
		alert ("Please select your State.");
		scForm.State.focus();
		return false;
	}
	
/*
	else if (dsValidateString(scForm.Zipcode.value, /[^0-9-]/) || dsCheckEmpty(scForm.Zipcode.value)) {
		alert ("Please enter a valid Zipcode.");
		scForm.Zipcode.focus();
		return false;
	}
*/
	else if (scForm.State.value == 'default') {
		alert ("Please select a State.");
		scForm.State.focus();
		return false;
	}
	else if (dsValidateString(scForm.Phone1a.value, /[^0-9]/)
			|| dsCheckEmpty(scForm.Phone1a.value)
			|| scForm.Phone1a.value.length < 3) {
		alert ("Please enter a valid Phone Number.");
		scForm.Phone1a.focus();
		return false;
	}
	else if (dsValidateString(scForm.Phone1b.value, /[^0-9]/)
			|| dsCheckEmpty(scForm.Phone1b.value)
			|| scForm.Phone1b.value.length < 3) {
		alert ("Please enter a valid Phone Number.");
		scForm.Phone1b.focus();
		return false;
	}
	else if (dsValidateString(scForm.Phone1c.value, /[^0-9]/)
			|| dsCheckEmpty(scForm.Phone1c.value)
			|| scForm.Phone1c.value.length < 4) {
		alert ("Please enter a valid Phone Number.");
		scForm.Phone1c.focus();
		return false;
	}
	else if (!(dsCheckEmpty(scForm.Phone2a.value) && dsCheckEmpty(scForm.Phone2b.value) && dsCheckEmpty(scForm.Phone2c.value))
			&& (scForm.Phone2a.value.length < 3 || dsValidateString(scForm.Phone2a.value, /[^0-9]/))) {
		alert ("Please enter a valid Phone Number.");
		scForm.Phone2a.focus();
		return false;
	}
	else if (!(dsCheckEmpty(scForm.Phone2a.value) && dsCheckEmpty(scForm.Phone2b.value) && dsCheckEmpty(scForm.Phone2c.value))
		 	&& (scForm.Phone2b.value.length < 3 || dsValidateString(scForm.Phone2b.value, /[^0-9]/))) {
		alert ("Please enter a valid Phone Number.");
		scForm.Phone2b.focus();
		return false;
	}
	else if (!(dsCheckEmpty(scForm.Phone2a.value) && dsCheckEmpty(scForm.Phone2b.value) && dsCheckEmpty(scForm.Phone2c.value))
			&& (scForm.Phone2c.value.length < 4 || dsValidateString(scForm.Phone2c.value, /[^0-9]/))) {
		alert ("Please enter a valid Phone Number.");
		scForm.Phone2c.focus();
		return false;
	}
	
	return true;
}

function scValidateShipping(scForm) {
	if (dsCheckEmpty(scForm.sFirstName.value)) {
		alert ("Please enter the Shipping Name.");
		scForm.sFirstName.focus();
		return false;
	}
	else if (dsCheckEmpty(scForm.sLastName.value)) {
		alert ("Please enter the Shipping Name.");
		scForm.sLastName.focus();
		return false;
	}
	else if (dsCheckEmpty(scForm.sAddress.value)) {
		alert ("Please enter the Shipping Address.");
		scForm.sAddress.focus();
		return false;
	}
	else if (dsCheckEmpty(scForm.sCity.value)) {
		alert ("Please enter your Shipping City.");
		scForm.sCity.focus();
		return false;
	}
	else if (dsCheckEmpty(scForm.sZipcode.value)) {
		alert ("Please enter your Zipcode.");
		scForm.Zipcode.focus();
		return false;
	}
	else if (dsCheckEmpty(scForm.sState.value)) {
		alert ("Please select your State.");
		scForm.State.focus();
		return false;
	}
/*
	else if (dsValidateString(scForm.sZipcode.value, /[^0-9-]/) || dsCheckEmpty(scForm.sZipcode.value)) {
		alert ("Please enter a valid Shipping Zipcode.");
		scForm.sZipcode.focus();
		return false;
	}
*/
	else if (scForm.sState.value == 'default') {
		alert ("Please select a Shipping State.");
		scForm.sState.focus();
		return false;
	}
	else if (dsValidateString(scForm.sPhone1a.value, /[^0-9]/)
			|| dsCheckEmpty(scForm.sPhone1a.value)
			|| scForm.sPhone1a.value.length < 3) {
		alert ("Please enter a valid Shipping Phone Number.");
		scForm.sPhone1a.focus();
		return false;
	}
	else if (dsValidateString(scForm.sPhone1b.value, /[^0-9]/)
			|| dsCheckEmpty(scForm.sPhone1b.value)
			|| scForm.sPhone1b.value.length < 3) {
		alert ("Please enter a valid Shipping Phone Number.");
		scForm.sPhone1b.focus();
		return false;
	}
	else if (dsValidateString(scForm.sPhone1c.value, /[^0-9]/)
			|| dsCheckEmpty(scForm.sPhone1c.value)
			|| scForm.sPhone1c.value.length < 4) {
		alert ("Please enter a valid Shipping Phone Number.");
		scForm.sPhone1c.focus();
		return false;
	}
	
	return true;
}

function scValidateLoginAdd(scForm) {
	if (!dsValidateString(scForm.Email.value, /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/)) {
		alert ("Please enter a valid email.");
		scForm.Email.focus();
		return false;
	}
	else if (dsValidateString(scForm.Password1.value, /[^a-zA-Z0-9]/) || scForm.Password1.value.length < 5) {
		alert ("Please enter a valid password with at least 5 characters (Alphanumeric with no spaces).");
		scForm.Password1.focus();
		return false;
	}
	else if (scForm.Password1.value != scForm.Password2.value) {
		alert ("Your passwords do not match.");
		scForm.Password2.focus();
		return false;
	}
	
	return true;
}	

function scValidateLoginEdit(scForm) {
	if (!dsCheckEmpty(scForm.Password1.value)
		&& (dsValidateString(scForm.Password1.value, /[^a-zA-Z0-9]/) || scForm.Password1.value.length < 5)) {
		alert ("Please enter a valid password with at least 5 characters (Alphanumeric with no spaces).");
		scForm.Password1.focus();
		return false;
	}
	else if (scForm.Password1.value != scForm.Password2.value) {
		alert ("Your passwords do not match.");
		scForm.Password2.focus();
		return false;
	}
	
	return true;
}	

function scValidateCCInfoAdd(scForm) {
	if(!scValidateCCInfoEdit(scForm)) {
		return false;
	}
	else if (dsValidateString(scForm.CCNum1.value, /[^0-9]/) || dsCheckEmpty(scForm.CCNum1.value)) {
		alert ("Please enter a valid Credit Card Number.");
		scForm.CCNum1.focus();
		return false;
	}
	else if (dsValidateString(scForm.CCNum2.value, /[^0-9]/) || dsCheckEmpty(scForm.CCNum2.value)) {
		alert ("Please enter a valid Credit Card Number.");
		scForm.CCNum2.focus();
		return false;
	}
	else if (dsValidateString(scForm.CCNum3.value, /[^0-9]/) || dsCheckEmpty(scForm.CCNum3.value)) {
		alert ("Please enter a valid Credit Card Number.");
		scForm.CCNum3.focus();
		return false;
	}
	else if (dsValidateString(scForm.CCNum4.value, /[^0-9]/) || dsCheckEmpty(scForm.CCNum4.value)) {
		alert ("Please enter a valid Credit Card Number.");
		scForm.CCNum4.focus();
		return false;
	}
		
	return true;
}

function scValidateCCInfoEdit(scForm) {
	if (dsCheckEmpty(scForm.Name.value)) {
		alert ("Please enter the Name.");
		scForm.Name.focus();
		return false;
	}
	else if (dsValidateString(scForm.CVV2.value, /[^0-9]/) && !dsCheckEmpty(scForm.CVV2.value)) {
		alert ("Please enter a valid CVV2 Number.");
		scForm.CVV2.focus();
		return false;
	}
	else if (dsValidateString(scForm.CardIssuer.value, /[^0-9-()]/) && !dsCheckEmpty(scForm.CardIssuer.value)) {
		alert ("Please enter a valid Card Issuer Number.");
		scForm.CardIssuer.focus();
		return false;
	}

	return true;
}

function scValidateChecking(scForm) {
	if (dsCheckEmpty(scForm.cName.value)) {
		alert ("Please enter the Name.");
		scForm.cName.focus();
		return false;
	}
	else if (dsCheckEmpty(scForm.Bank.value)) {
		alert ("Please enter the Bank.");
		scForm.Bank.focus();
		return false;
	}
	else if (dsValidateString(scForm.Routing.value, /[^0-9]/) || dsCheckEmpty(scForm.Routing.value)) {
		alert ("Please enter a valid Routing Number.");
		scForm.Routing.focus();
		return false;
	}
	else if (dsValidateString(scForm.Accounting.value, /[^0-9]/) || dsCheckEmpty(scForm.Accounting.value)) {
		alert ("Please enter a valid Accounting Number.");
		scForm.Accounting.focus();
		return false;
	}
	
	return true;
}

