function validateSerialNumber(textField) {
	sn = textField.value;
	if (!sn) {
		alert('You must enter a serial number.');
		return false;
	}	
	/*
	if (sn.indexOf(' ') != -1) {
		alert('A serial number cannot have spaces in it.');
		return false;
	}
	*/
	sn = replaceAndAlert(textField);
	sn = sn.replace(/\s/g,''); //taking spaces off
	if(isSerialNumberValid(sn) != true ) {
		alert('Please enter a valid serial number.');
		return false;
	}
	// Looks like a valid serial number
	return true;
}

function removeSpace(serialNumber) {
	if(serialNumber.length == 0) {
		return serialNumber;
	}
	var s = serialNumber;
	var newSerialNo = '';

	for(var i = 0 ; i < s.length ; ++i) {
		var c = s.charAt(i);
		if(c != ' ')
			newSerialNo = newSerialNo + c;
	}

	serialNumber = newSerialNo;
	return serialNumber;
}
function replaceChars(str,out,add) {
	// out = replace this
	// add = with this
	temp = "" + str; // temporary holder

	while (temp.indexOf(out)>-1) {
		pos= temp.indexOf(out);
		temp = "" + (temp.substring(0, pos) + add + 
		temp.substring((pos + out.length), temp.length));
	}
	return temp;
}

function replaceAndAlert(textField) {
// Replace O and o with zero's
	var rg = /o/gi;
	var str = textField.value;
	var chk = rg.test(str);
	if (chk) {
		textField.value = str.replace(rg,'0');	
		alert ("Apple does not use the letter 'O' in its serial numbers. For your convenience, we replaced all 'O's with zeros.");
	}
	return textField.value;
}

function isSerialNumberValid(serialNumber) {
	if (serialNumber.length == 0 ) {
         return true;
    }

    if( serialNumber.length != 11 && serialNumber.length != 12 && serialNumber.length != 18){
        return false;
    }

	if (serialNumber.length != 18) {
		yrWkStr = serialNumber.substr(2, 3)
		if(isNaN(yrWkStr) == true){
			return false;
		}
	
		else {
			wkStr = yrWkStr.substr(1, 2)
			wk = parseInt(wkStr, 10)
			if(wk < 1 || wk > 53){
				return false;
			}
			else {
				return true;
			}
		}
	}
	else {
		if(isNaN(serialNumber) == true){
			return false;
		}
		else {
			return true;
		}
	}

}

