/*
	Rodolfo Cerrada Jr., MCSD, MCDBA
	Common Java Script Functions

*/

function RegularExpression(value, expression)
{
	if(expression.test(value)) return true;

	return false;
}



//-- with aphostrophe and semi-colon
function VerifyPhrase(value)
{
	return RegularExpression(value, /^[a-zA-Z0-9,\s'#-\.\?]*$/);
}

//-- no aphostrophe and semi-colon
function VerifyPhraseStrict(value)
{
	return RegularExpression(value, /^[a-zA-Z0-9,\s#\-\.\?]*$/);
}

//-- Checks for if alpha numeric
function IsAlphaNumeric(value)
{
	return RegularExpression(value, /^[a-zA-Z0-9]*$/);
}

//-- Checks if Alphabet
function IsAlpha(value)
{
	return RegularExpression(value, /^[a-zA-Z]*$/);
}

//-- Checks if Numeric 
function IsNumeric(value)
{
	return RegularExpression(value, /^[0-9]*$/);	
}

//-- Check if Decimal
function IsDecimal(value)
{
	return RegularExpression(value, /^([0-9]+,?[0-9]*(\.[0-9])*)*$/);	
}

//-- Phone/Fax Format
function IsPhoneFormatX(value)
{
	return RegularExpression(value, /^[0-9\-\.()\+\s\w]*$/);		
}

//-- Zip Code Format
function IsZipCodeFormatX(value)
{
	return RegularExpression(value, /^[a-zA-Z0-9\-\.\s]*$/);		
}

function IsPhoneFormat(value)
{
	return RegularExpression(value, /^[0-9\-\.()\+\s\w]*$/);		
}

//-- Zip Code Format
function IsZipCodeFormat(value)
{
	return RegularExpression(value, /^[0-9\-]*$/);
}

function IsValidEmail(value)
{
	return RegularExpression(value, /^\w+([\.\-_]\w+)*\w*@\w+([\.\-_]?\w+)*\w*(\.\w{1,16}){1,8}$/);
}

function IsValidEmailPrefix(value)
{
	return RegularExpression(value, /^\w+([\.\-_]\w+)*\w*$/);
}

function IsSerialNumber(value)
{
	return RegularExpression(value, /^([a-zA-Z0-9]+[\-\s]?)*$/);
}

function IsUserName(value)
{
	return RegularExpression(value, /^[^'<>]*$/);
}

function IsPassword(value)
{
	return RegularExpression(value, /^[^'<>]*$/);
}

function IsURL(value)
{
	return RegularExpression(value, /^(http:[\/]{2}([\w+-?]+\.[\w+-?]+\.\w+)+([\/]\w*\s*-?)*[&\?\=\w]*)*$/);

}

//================================================================


//-- with aphostrophe and semi-colon
function VerifyPhraseRequired(value)
{
	return RegularExpression(value, /^[a-zA-Z0-9,\s'#-\.\?]+$/);
}

//-- no aphostrophe and semi-colon
function VerifyPhraseStrictRequired(value)
{
	return RegularExpression(value, /^[a-zA-Z0-9,\s#\-\.\?]+$/);
}

//-- Checks for if alpha numeric
function IsAlphaNumericRequired(value)
{
	return RegularExpression(value, /^[a-zA-Z0-9]+$/);
}

//-- Checks if Alphabet
function IsAlphaRequired(value)
{
	return RegularExpression(value, /^[a-zA-Z]+$/);
}

//-- Checks if Numeric 
function IsNumericRequired(value)
{
	return RegularExpression(value, /^[0-9]+$/);	
}

//-- Check if Decimal
function IsDecimalRequired(value)
{
	return RegularExpression(value, /^([0-9]+,?[0-9]*(\.[0-9])*)+$/);	
}

//-- Phone/Fax Format
function IsPhoneFormatRequired(value)
{
	//alert(value);
	return RegularExpression(value, /^[0-9\-\.()\+\s\w]+$/);
}

//-- Zip Format
function IsZipCodeFormatRequired(value)
{
	//alert(value);
	return RegularExpression(value, /^[0-9\-\.()\+\s\w]+$/);		
}

//-- Serial format like serial number or product number
function IsSerialNumberRequired(value)
{
	return RegularExpression(value, /^([a-zA-Z0-9]+[\-\s]?)+$/);
}


//================================================================

function IsBPOG(value)
{
	return RegularExpression(value, /^[BPOG]+[0-9]{6}$/);
}

function IsFC(value)
{
	return RegularExpression(value, /^[FC]+[0-9]{8}$/);
}

function IsTBPG(value)
{
	return RegularExpression(value, /^[TBPG]+[0-9]{6}$/);
}

function IsVME(value)
{
	return RegularExpression(value, /^[VME]+[0-9]{7}$/);
}

function IsFCS(value)
{
	return RegularExpression(value, /^[FCS]+[0-9]{7}$/);
}

function IsU68(value)
{
	return RegularExpression(value, /^[U68]+[0-9]{7}$/);
}

function IsU80(value)
{
	return RegularExpression(value, /^[U80]+[0-9]{7}$/);
}

function IsValidSerialNumberByType(value, type)
{
	if (value.length == 0) return true
	if ((value.length != 10) && (type != 'Other')) return false

	switch (type)
	{
	case 'E-Disk IDE/ATA (BPOG)':
		if (!IsBPOG(value)) return false
		else return true
		break
	case 'E-Disk SCSI (BPOG)':
		if (!IsBPOG(value)) return false
		else return true
		break
	case 'E-Disk Fibre Channel (BPOG)':
		if (!IsBPOG(value)) return false
		else return true
		break	
	case 'E-Disk Fibre Channel (FC)':
		if (!IsFC(value)) return false
		else return true
		break						
	case 'Ace Disk 2.5 inch (TBPG)':
		if (!IsTBPG(value)) return false
		else return true
		break						
	case 'E-Disk VME (VME)':
		if (!IsVME(value)) return false
		else return true
		break						
	case 'E-DiskSAN (FCS)':
		if (!IsFCS(value)) return false
		else return true
		break		
	case 'E-Disk SCSI U320 (U68 or U80)':
		if (!IsU68(value) && !IsU80(value)) return false
		else return true
		break
	case 'Other':
		return true
		break	
	}					
}

function IsFedExA(value)
{
	return RegularExpression(value, /^\d{3}[\-]\d{3}[\-]\d{1}$/i);
}

function IsFedExB(value)
{
	return RegularExpression(value, /^\d{4}[\-]\d{4}$/i);
}

function IsFedExC(value)
{
	return RegularExpression(value, /^\d{4}[\-]\d{4}[\-]\d{1}$/i);
}

function IsValidShippingAccountNumber(value, type)
{
	switch(type)
	{
	case 'FedEx':
		if (value.length == 9)  
			if ((!IsFedExA(value)) && (!IsFedExB(value)))
			{
				return false
			}
			else return true
		else if ((value.length == 11) && (!IsFedExC(value))) return false
		else if (((value.length > 11) || (value.length < 9)) || (value.length == 10)) return false
		else return true
		break

		//if (!IsFedEx9(value) || ((value.length > 9) || (value.length < 6))) return false
		//else 
		//if (!IsFedEx10(value) || ((value.length > 10) || (value.length < 6))) return false
		//else 
		//if (!IsFedEx11(value) || ((value.length > 11) || (value.length < 6))) return false
		//else return true
		//break


	case 'UPS':
		if (!IsAlphaNumeric(value) || (value.length != 6)) return false
		else return true
		break
	case 'DHL':
		if (!IsNumeric(value) || (value.length != 9)) return false
		else return true
		break
	case 'Bax Global':
		if (!IsNumeric(value) || (value.length != 9)) return false
		else return true
		break
	case 'Airborne Express':
		if (!IsNumeric(value) || (value.length != 9)) return false
		else return true
		break
	case 'Other':
		return true
	
	}
}
