// purpose: to check a group of check boxes for at least one box ticked
function isOneTicked(obj){
	if (obj[0].type!="checkbox" && obj[0].type!="radio")
		return false;
		
	for (var i=0;i<obj.length;i++){
		if (obj[i].checked==true)
			return true;
	}
	obj[0].focus();
	return false;
}
// purpose: to check a group of textfield / textarea for at least N box(es) filled
function isNFilled(obj, minfilled){
	if (obj[0].type!="text")
		return false;
	var str;
	var count = 0;
	for (var i=0;i<obj.length;i++){
		if (obj[i]!=null){
			str = new String(obj[i].value);
			if (str.length>0){
				count++;
			}
			if (count >= minfilled)
				return true;
		}
	}
	return false;
}
// purpose: to check a checkbox if it is checked
function isTicked(obj){
	if (!obj.checked){
		return false;
	}
	return true;
}
// purpose: to check a textfield / textarea if it is filled.
function isFilled(obj){
	if (obj.value.length<1){
		return false;
	}
	return true;
}
// purpose: to check a option menu if it has been selected
function isSelected(obj){
	if (obj[0].selected){
		return false;
	}
	return true;
}
// purpose: to check if an entry is a valid email
function isEmail(obj){
	var str = new String(obj.value); 
	if (str.match(/^[a-zA-Z0-9_\.\-\+\#\%]+@[a-zA-Z0-9_\.\-]+\.[a-zA-Z]{2,3}$/) == null){
		return false;
	}
	return true;
}
// purpose: to check if an antry is a valid Malaysian postcode
function isPostCode(obj){
	var str = new String(obj.value); 
	if (str.match(/^[0-9]{5}$/) == null){
		return false;
	}
	return true;
}
// purpose: to check if an entry is a valid Malaysian mobile phone number
function isMobilePhone(obj){
	var str = new String(obj.value); 
	if (str.match(/^01[0,2,3,6,7,8,9]{1}-[0-9]{7}$/) == null){
		return false;
	}
	return true;
}

// purpose: to check if an entry is a valid Malaysian mobile phone network
function isMobileNetwork(obj){
	var str = new String(obj.value);
	if (str.match(/^[6]{0,1}01[0,2,3,6,7,8,9]{1}$/) == null){
		return false;
	}
	return true;
}

// purpose: to check if an entry is a valid Malaysian mobile phone number
function isMobileNo(obj){
	var str = new String(obj.value); 
	if (str.match(/^[0-9]{7}$/) == null){
		return false;
	}
	return true;
}

// purpose: to check if an entry is a valid fixed line phone number
function isFixedPhone(obj){
	var str = new String(obj.value); 
	if (str.match(/^0[0-9]{1,2}-[0-9]{6,8}$/) == null){
		return false;
	}
	return true;
}

// purpose: to check if an entry is a valid fixed line phone area
function isPhoneArea(obj){
	var str = new String(obj.value); 
	if (str.match(/^[6]{0,1}0[0-9]{1,2}$/) == null){
		return false;
	}
	return true;
}

// purpose: to check if it is a valid age
function isAge(obj){
	var str = new String(obj.value); 
	if (str.match(/^[1-9]{1}[0-9]{0,1}$/) == null){
		return false;
	}
	return true;
}

// purpose: to check if an entry is a valid fixed line phone number
function isFixedNo(obj){
	var str = new String(obj.value); 
	if (str.match(/^[0-9]{6,8}$/) == null){
		return false;
	}
	return true;
}

// purpose: to check a single field IC number for a valid entry length
function is1FNRIC(obj){
	var str = new String(obj.value);
	if (str.match(/^[0-9]{12}$/) == null) return false;
	return true;
}


// purpose: to check NRIC1
function isNRIC1(obj){
	var str = new String(obj.value);
	if (str.match(/^[0-9]{6}$/) == null) return false;
	return true;
}
// purpose: to check NRIC2
function isNRIC2(obj){
	var str = new String(obj.value);
	if (str.match(/^[0-9]{2}$/) == null) return false;
	return true;
}
// purpose: to check NRIC3
function isNRIC3(obj){
	var str = new String(obj.value);
	if (str.match(/^[0-9]{4}$/) == null) return false;
	return true;
}



// purpose: to check a 3 field IC numbers for a valid entry length
function is3FNRIC(obj1, obj2, obj3){
	var str1 = new String(obj1.value);
	var str2 = new String(obj2.value);
	var str3 = new String(obj3.value);
	if (str1.match(/^[0-9]{6}$/) == null) return false;
	if (str2.match(/^[0-9]{2}$/) == null) return false;
	if (str3.match(/^[0-9]{4}$/) == null) return false;
	return true;
}
// purpose: to check the first field of an IC number if valid
function isValidNRIC(obj){
	var str = new String(obj.value);
	var vYear  = parseInt(str.substring(0,2));
	var vMonth = parseInt(str.substring(2,4));
	var vDate  = parseInt(str.substring(4,6));
	switch (vMonth) {
		case 1: case 3: case 5: case 7: case 8: case 10: case 12:
			if (vDate > 31) return false;
			break;
		case 2:
			if (vDate > 29) return false;
			break;
		case 4: case 6: case 9: case 11:
			if (vDate > 30) return false;
			break;
		default:
			return false;
	}
	return true;
}
// purpose: to check the entry if it is alphanumeric, with ignore white space flag
function isAlphanumeric(obj, ignoreWhiteSpace) {
	var string = new String(obj.value);
	if (string.search) {
		if ((ignoreWhiteSpace && string.search(/[^\w\s]/) != -1) || (!ignoreWhiteSpace && string.search(/\W/) != -1)){
			return false;
		}
	}
	return true;
}

// purpose:  Check that a string contains only letters
function isAlphabetic(obj, ignoreWhiteSpace) {
	var string = new String(obj.value);
	if (string.search) {
		if ((ignoreWhiteSpace && string.search(/[^a-zA-Z\s]/) != -1) || (!ignoreWhiteSpace && string.search(/[^a-zA-Z]/) != -1)){
			return false;
		}
	}
	return true;
}

// purpose: Check for a valid name
function isName(obj, ignoreWhiteSpace) {
	var string = new String(obj.value);
	if (string.search) {
		if ((ignoreWhiteSpace && string.search(/[^a-zA-Z\@\'\-\s]/) != -1) || (!ignoreWhiteSpace && string.search(/[^a-zA-Z\@\'\-]/) != -1)){
			return false;
		}
	}
	return true;
}

// purpose:  Check that a string contains only numbers
function isNumeric(obj, ignoreWhiteSpace) {
	var string = new String(obj.value);
	if (string.search) {
		if ((ignoreWhiteSpace && string.search(/[^\d\s]/) != -1) || (!ignoreWhiteSpace && string.search(/\D/) != -1)){
			return false;
		}
	}
	return true;
}

// purpose: 
function fieldError(elem, errMsg)
{
	if (elem.type == "textfield" || elem.type == "textarea" || elem.type=="select")
		elem.select();
	if (elem.length > 1) elem[0].focus();
	else elem.focus();
	alert(errMsg);
}
