function isEmailAddress(element) {
    var email = element.value;
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    if (email.match(re)) {
        return true;
    }
    else {
        return false;
    }
}
function isEmpty(element) {
    var str = element.value;
    var re = /.+/;
    if (str.match(re)) {
        return false;
    }
    else {
        return true;
    }
}
function isNumeric(element) {
    var str = element.value;
    var re = /^[-]?\d*\.?\d*$/;
    str = str.toString();
    if (!str.match(re)) {
        return false;
    }
    else {
        return true;
    }
}
function isCurrency(element) {
    var str = element.value;
    var re = /^\d+\.\d{2}$/;
    str = str.toString();
    if (!str.match(re)) {
        return false;
    }
    else {
        return true;
    }
}
function isEAN(eanElement, eanTypeElement) {
	var eanType = getRadioButtonValue(eanTypeElement);
	if (eanType == "ean13") return isEAN13( eanElement );
	else if (eanType == "ean8") return isEAN8( eanElement );
	else return false;
}
function isEAN13(element) {
    var str = element.value;
    var re = /\d{13}$/;
    str = str.toString();
    if (!str.match(re)) {
        return false;
    }
    else {
        return true;
    }
}
function isEAN8(element) {
    var str = element.value;
    var re = /\d{8}$/;
    str = str.toString();
    if (!str.match(re)) {
        return false;
    }
    else {
        return true;
    }
}
function isISSN(element) {
    var str = element.value;
    var re = /\d{4}-\d{4}-\d{2}$/;
    str = str.toString();
    if (!str.match(re)) {
        return false;
    }
    else {
        return true;
    }
}
function isISBN(element) {
    var str = element.value;
    var re = /\d{3}-\d+-\d+-\d+-[\d|X|C]$/;
    str = str.toString();
    if (!str.match(re) || !(str.length==17)) {
        return false;
    }
    else {
        return true;
    }
}
function isSuppCode(element) {
    var str = element.value;
    var re = /\d{2}$/;
    str = str.toString();
    if (!str.match(re)) {
        return false;
    }
    else {
        return true;
    }
}
function isValidDate(element) {
    var mo, day, yr;
    var entry = element.value;
    var re = /\b\d{2}\/\d{2}\/\d{4}\b/;
    var valid = re.test(entry);
	var today = new Date();
    if (valid) {
        var delimChar = "/";
        var delim1 = entry.indexOf(delimChar);
        var delim2 = entry.lastIndexOf(delimChar);
        day = parseInt(entry.substring(0, delim1), 10);
        mo = parseInt(entry.substring(delim1+1, delim2), 10);
        yr = parseInt(entry.substring(delim2+1), 10);
		
		valid = false;
        var testDate = new Date(yr, mo-1, day);
        if (testDate.getDate() == day) {
            if (testDate.getMonth() + 1 == mo) {
                if (testDate.getFullYear() == yr) {
                    if (testDate > today) {
						valid = true;
					}
                } 
            } 
        } 
    } 

    return valid;
}
function isValidRadioButton(btn) {
    var valid = false;
	var i = 0;
	while (i != btn.length && !btn[i].checked) {
	    i++;
	}
	if (i == btn.length) valid = false;
	else if (btn[i].checked) valid = true;
	
	return valid;
}
function getRadioButtonValue(btn) {
    var value;
	var i = 0;
	while (i != btn.length && !btn[i].checked) {
	    i++;
	}
	if (i != btn.length && btn[i].checked) value = btn[i].value;
	
	return value;
}
//==============================================================================
// Plate Form 
//==============================================================================
function validatePlateForm(form) {
	var isValid = true;
	var element; 
	
    element = document.getElementById("orderNumError");
    element.innerHTML = "";
    element = document.getElementById("referenceError");
    element.innerHTML = "";
    element = document.getElementById("plateDeliveryDateError");
    element.innerHTML = "";
    element = document.getElementById("artworkReqdDateError");
    element.innerHTML = "";
    element = document.getElementById("sizeError");
    element.innerHTML = "";
    element = document.getElementById("stepError");
    element.innerHTML = "";
    element = document.getElementById("gapError");
    element.innerHTML = "";
    element = document.getElementById("stockConvertError");
    element.innerHTML = "";
    element = document.getElementById("cylinderRepeatError");
    element.innerHTML = "";

  	if (isEmpty(form.orderNum)) {
        element = document.getElementById("orderNumError");
        element.innerHTML += "Required field. ";
		isValid = false;
	}
	if (isEmpty(form.reference)) {
        element = document.getElementById("referenceError");
        element.innerHTML += "Required field. ";
		isValid = false;
	}
	if (isEmpty(form.plateDeliveryDate)) {
        element = document.getElementById("plateDeliveryDateError");
        element.innerHTML += "Required field. ";
		isValid = false;
	}
	else if (!isValidDate(form.plateDeliveryDate)) {
        element = document.getElementById("plateDeliveryDateError");
        element.innerHTML += "Invalid Date. ";
		isValid = false;
	}
	if (isEmpty(form.artworkReqdDate)) {
        element = document.getElementById("artworkReqdDateError");
        element.innerHTML += "Required field. ";
		isValid = false;
	}
	else if (!isValidDate(form.artworkReqdDate)) {
        element = document.getElementById("artworkReqdDateError");
        element.innerHTML += "Invalid Date. ";
		isValid = false;
	}
	if (isEmpty(form.sizeAcross)) {
        element = document.getElementById("sizeError");
        element.innerHTML += "Size Across - Required field. ";
		isValid = false;
	}
	else if (!isNumeric(form.sizeAcross)) {
        element = document.getElementById("sizeError");
        element.innerHTML += "Size Across - Numeric field. ";
		isValid = false;
	}
	if (isEmpty(form.sizeBack)) {
        element = document.getElementById("sizeError");
        element.innerHTML += "Size Back - Required field. ";
		isValid = false;
	}
	else if (!isNumeric(form.sizeBack)) {
        element = document.getElementById("sizeError");
        element.innerHTML += "Size Back - Numeric field. ";
		isValid = false;
	}
	if (isEmpty(form.stepAcross)) {
        element = document.getElementById("stepError");
        element.innerHTML += "Step Across - Required field. ";
		isValid = false;
	}
	else if (!isNumeric(form.stepAcross)) {
        element = document.getElementById("stepError");
        element.innerHTML += "Step Across - Numeric field. ";
		isValid = false;
	}
	if (isEmpty(form.stepBack)) {
        element = document.getElementById("stepError");
        element.innerHTML += "Step Back - Required field. ";
		isValid = false;
	}
	else if (!isNumeric(form.stepBack)) {
        element = document.getElementById("stepError");
        element.innerHTML += "Step Back - Numeric field. ";
		isValid = false;
	}
	if (isEmpty(form.gapAcross)) {
        element = document.getElementById("gapError");
        element.innerHTML += "Gap Across - Required field. ";
		isValid = false;
	}
	else if (!isNumeric(form.gapAcross)) {
        element = document.getElementById("gapError");
        element.innerHTML += "Gap Across - Numeric field. ";
		isValid = false;
	}
	if (isEmpty(form.gapBack)) {
        element = document.getElementById("gapError");
        element.innerHTML += "Gap Back - Required field. ";
		isValid = false;
	}
	else if (!isNumeric(form.gapBack)) {
        element = document.getElementById("gapError");
        element.innerHTML += "Gap Back - Numeric field. ";
		isValid = false;
	}
	if (isEmpty(form.stockConvertAcross)) {
        element = document.getElementById("stockConvertError");
        element.innerHTML += "Stock Convert Across - Required field. ";
		isValid = false;
	}
	else if (!isNumeric(form.stockConvertAcross)) {
        element = document.getElementById("stockConvertError");
        element.innerHTML += "Stock Convert Across - Numeric field. ";
		isValid = false;
	}
	if (isEmpty(form.cylinderRepeat)) {
        element = document.getElementById("cylinderRepeatError");
        element.innerHTML += "Cylinder Repeat - Required field. ";
		isValid = false;
	}
	else if (!isNumeric(form.cylinderRepeat)) {
        element = document.getElementById("cylinderRepeatError");
        element.innerHTML = "Cylinder Repeat - Numeric field. ";
		isValid = false;
	}

	if (!isValid) {
		alert("There are errors on the form.\nPlease correct the errors and\nresubmit the order.");
	}

	return isValid;
}
//==============================================================================
// ISSN Form 
//==============================================================================
var numISSN = 3;
function validateISSNForm(form) {
	var isValid = true;
	var element; 
	var i = 0;
	var numInputISSN = 0;
	var numValidISSN = 0;
	var isValidISSN = false;

    element = document.getElementById("orderNumError");
    element.innerHTML = "";
    element = document.getElementById("referenceError");
    element.innerHTML = "";
    element = document.getElementById("titleError");
    element.innerHTML = "";
    element = document.getElementById("priceError");
    element.innerHTML = "";
	
	if (isEmpty(form.orderNum)) {
        element = document.getElementById("orderNumError");
        element.innerHTML = "Required field.";
		isValid = false;
	}
	if (isEmpty(form.reference)) {
        element = document.getElementById("referenceError");
        element.innerHTML = "Required field.";
		isValid = false;
	}
	if (isEmpty(form.title)) {
        element = document.getElementById("titleError");
        element.innerHTML = "Required field.";
		isValid = false;
	}
	if (isEmpty(form.price)) {
        element = document.getElementById("priceError");
        element.innerHTML = "Required field.";
		isValid = false;
	}
	else if (!isCurrency(form.price)) {
        element = document.getElementById("priceError");
        element.innerHTML = "Invalid currency value. Correct format example: 4.23";
		isValid = false;
	}
	
	for (i = 0; i != numISSN; i++ ) {
        element = document.getElementById("issnError"+(i+1));
        element.innerHTML = "";
		isValidISSN = false;
        if (!isEmpty(form[ 'ISSN'+(i+1) ])) {
		    numInputISSN++;
		    if (!isISSN(form[ 'ISSN'+(i+1) ])) {
        	    element = document.getElementById("issnError"+(i+1));
		    	element.innerHTML += "Invalid ISSN number. ";
			    isValid = false;
			}
			else {
				isValidISSN = true;
			}
			if (isEmpty(form[ 'suppCode'+(i+1) ])) {
				element = document.getElementById("issnError"+(i+1));
				element.innerHTML += "Supplementary Code Required. ";
				isValid = false;
				isValidISSN = false;
				
			}
			else if (!isSuppCode(form[ 'suppCode'+(i+1) ])) {
				element = document.getElementById("issnError"+(i+1));
				element.innerHTML += "Invalid Supplementary Code. ";
				isValid = false;
				isValidISSN = false;
			}
		}
		if (isValidISSN) numValidISSN++;
	}
	if (numInputISSN == 0) {
   	    element = document.getElementById("issnError1");
    	element.innerHTML += "Enter at least one ISSN number. ";
	    isValid = false;
	}
	if (!isValid) {
		alert("There are errors on the form.\nPlease correct the errors and\nresubmit the order.");
	}
	else {
		document.OrderISSNForm.numValidISSN.value = numValidISSN;
	}

    return isValid;
}
function addISSN() {
    var tBody = document.getElementById("ISSNTableBody");
	var tr = tBody.insertRow(tBody.rows.length);
	var td;
	td = tr.insertCell(tr.cells.length);
	td.innerHTML = 'ISSN #' + (numISSN+1) +":";
	td = tr.insertCell(tr.cells.length);
	td.innerHTML = '<input name="ISSN' + (numISSN+1) + '" type="text" id="ISSN' + (numISSN+1) + '" size="18" maxlength="12" />';
	td = tr.insertCell(tr.cells.length);
	td.innerHTML = '<input name="suppCode' + (numISSN+1) + '" type="text" id="suppCode' + (numISSN+1) + '" size="5" maxlength="2" />'
	td = tr.insertCell(tr.cells.length);
	td.innerHTML = '<span id="issnError' + (numISSN+1) + '" class="errorMessage"></span>';
    numISSN++;	
	document.OrderISSNForm.numISSN.value = numISSN;
}
//==============================================================================
// ISBN Form 
//==============================================================================
var numISBN = 3;
function validateISBNForm(form) {
	var isValid = true;
	var element; 
	var i = 0;
	var numInputISBN = 0;
	var numValidISBN = 0;

    element = document.getElementById("orderNumError");
    element.innerHTML = "";
    element = document.getElementById("referenceError");
    element.innerHTML = "";
	
	if (isEmpty(form.orderNum)) {
        element = document.getElementById("orderNumError");
        element.innerHTML = "Required field.";
		isValid = false;
	}
	if (isEmpty(form.reference)) {
        element = document.getElementById("referenceError");
        element.innerHTML = "Required field.";
		isValid = false;
	}
	
	for (i = 0; i != numISBN; i++ ) {
        element = document.getElementById("isbnError"+(i+1));
        element.innerHTML = "";
        if (!isEmpty(form[ 'ISBN'+(i+1) ])) {
		    numInputISBN++;
		    if (!isISBN(form[ 'ISBN'+(i+1) ])) {
        	    element = document.getElementById("isbnError"+(i+1));
		    	element.innerHTML += "Invalid ISBN number. ";
			    isValid = false;
			}
			else {
				numValidISBN++;
			}
		}
	}
	if (numInputISBN == 0) {
   	    element = document.getElementById("isbnError1");
    	element.innerHTML += "Enter at least one ISBN number. ";
	    isValid = false;
	}
	if (!isValid) {
		alert("There are errors on the form.\nPlease correct the errors and\nresubmit the order.");
	}
	else {
		document.OrderISBNForm.numValidISBN.value = numValidISBN;
	}

	return isValid;
}
function addISBN() {
    var tBody = document.getElementById("ISBNTableBody");
	var tr = tBody.insertRow(tBody.rows.length);
	var td;
	td = tr.insertCell(tr.cells.length);
	td.innerHTML = 'ISBN #' + (numISBN+1) +":";
	td = tr.insertCell(tr.cells.length);
	td.innerHTML = '<input name="ISBN' + (numISBN+1) + '" type="text" id="ISBN' + (numISBN+1) + '" size="25" maxlength="17" />';
	td = tr.insertCell(tr.cells.length);
	td.innerHTML = '<span id="isbnError' + (numISBN+1) + '" class="errorMessage"></span>';
    numISBN++;	
	document.OrderISBNForm.numISBN.value = numISBN;
}
//==============================================================================
// EAN Form 
//==============================================================================
var eanImageHeight = 209;
var eanImageWidth = 298;
function resizeEANImage(size) {
    var div = document.getElementById('eanImageContainer');
	var img = document.getElementById('eanImage');
	img.width = ((eanImageWidth * size)/100);
	img.height = ((eanImageHeight * size)/100);
}
var numEAN = 3;
function validateEANForm(form) {
	var isValid = true;
	var element; 
	var i = 0;
	var numInputEAN = 0;
	var numValidEAN = 0;

    element = document.getElementById("orderNumError");
    element.innerHTML = "";
    element = document.getElementById("referenceError");
    element.innerHTML = "";
	
	if (isEmpty(form.orderNum)) {
        element = document.getElementById("orderNumError");
        element.innerHTML = "Required field.";
		isValid = false;
	}
	if (isEmpty(form.reference)) {
        element = document.getElementById("referenceError");
        element.innerHTML = "Required field.";
		isValid = false;
	}
	
	for (i = 0; i != numEAN; i++ ) {
        element = document.getElementById("eanError"+(i+1));
        element.innerHTML = "";
        if (!isEmpty(form[ 'EAN'+(i+1) ])) {
		    numInputEAN++;
		    if (!isEAN(form[ 'EAN'+(i+1) ], form[ 'eanType'+(i+1) ])) {
        	    element = document.getElementById("eanError"+(i+1));
		    	element.innerHTML += "Invalid EAN number. ";
			    isValid = false;
			}
			else {
				numValidEAN++;
			}
		}
	}
	if (numInputEAN == 0) {
   	    element = document.getElementById("eanError1");
    	element.innerHTML += "Enter at least one EAN number. ";
	    isValid = false;
	}
	if (!isValid) {
		alert("There are errors on the form.\nPlease correct the errors and\nresubmit the order.");
	}
	else {
		document.OrderEANForm.numValidEAN.value = numValidEAN;
	}

	return isValid;
}
function addEAN() {
    var tBody = document.getElementById("EANTableBody");
	var tr = tBody.insertRow(tBody.rows.length);
	var td;
	td = tr.insertCell(tr.cells.length);
	td.innerHTML = 'GS1 (EAN) #' + (numEAN+1) +":";
	td = tr.insertCell(tr.cells.length);
	td.innerHTML = '<input name="EAN' + (numEAN+1) + '" type="text" id="EAN' + (numEAN+1) + '" size="18" maxlength="12" />';
	td = tr.insertCell(tr.cells.length);
	td.innerHTML = '<input type="radio" name="eanType' + (numEAN+1) + '" id="eanType13-' + (numEAN+1) + '" value="ean13" checked="checked" /> 13 ' + 
                   '<input type="radio" name="eanType' + (numEAN+1) + '" id="eanType8-' + (numEAN+1) + '" value="ean8" /> 8 ';
	td = tr.insertCell(tr.cells.length);
	td.innerHTML = '<span id="eanError' + (numEAN+1) + '" class="errorMessage"></span>';
    numEAN++;	
	document.OrderEANForm.numEAN.value = numEAN;
}

