function getElementsByClassName(clsName)
{    
    var retVal = new Array();    
    var elements = document.getElementsByTagName("*");    
    for(var i = 0;i < elements.length;i++)
    {        
        if(elements[i].className.indexOf(" ") >= 0)
        {            
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++)
            {
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        }
        else if(elements[i].className == clsName)            
            retVal.push(elements[i]);    
    }    
    return retVal;
}

function validateFormContents()
{
    var xForm = document.forms[0];

    var allValid = true;
    var errorFields = "";

    for (var i = 0; i < xForm.length; i++)
    {
        if ((xForm[i].tagName != "fieldset") && (xForm[i].className != ""))
        {
            if (!validateField(xForm[i], xForm[i].className))
            {
                var prevField = document.getElementById(xForm[i].id).previousSibling;
                errorFields += prevField.firstChild.nodeValue + "\r\n";
                allValid = false;
            }
        }
    }

    if (!allValid)
    {
        alert("The following fields are either empty or their value is invalid:\r\n\r\n" + errorFields);
    }
    
    return allValid;
}

function validateField(sourceField, validationChecks)
{
    var arrChecks = validationChecks.split(" ");
    for (var i = 0; i < arrChecks.length;  i++)
    {
        if (arrChecks[i] != "")
        {
            if (arrChecks[i] == "validateRequired") //
            {
                if ((sourceField.value == "") || (sourceField.value == " "))
                {
                    return false;
                }
            }
            else
            {
                return eval(arrChecks[i] + "('" + sourceField.value + "');");
            }
        }
    }

    return true;
}

function validateEmailAddress(srcEmailAddress)
{
	var emailFilter=/^.+@.+\..{2,3}$/;

	if (!(emailFilter.test(srcEmailAddress))) 
	{ 
		alert("Please enter a valid email address.");
		return false;
	}

	var illegalChars= /[\(\)\<\>\,\ \;\:\\\/\"\[\]]/
	if (srcEmailAddress.match(illegalChars)) 
	{
		alert("The email address contains illegal characters.");
		return false;
	}
	
	return true;

}

function checkEmailsOnForm()
{
    var xEmail1 = document.getElementById("Email");
    var xEmail2 = document.getElementById("Email2");
    
    if (xEmail1.value != xEmail2.value)
    {
        alert("Your email addresses do not match");
        return false;
    }
    
    if (validateEmailAddress(xEmail1.value))
    {
        document.forms[0].submit();
    }

}

function validateExpressDelivery(sourceValue) {
    var selCountry = document.getElementById("country").value;
    var selDelivery = document.getElementById("nextDayDelivery").checked;
    if (selDelivery) {
        if (selCountry == "UK") {
            return true;
        }
        else {
            //alert("Next Day Delivery is only for UK addresses");
            return false;
        }
    }
    return true;
}

function validateFreeDVD(sourceValue) {
    var selCountry = document.getElementById("country").value;
    var freeDVDPlayer = document.getElementById("freeDVDPlayer").checked;
    var totalPrice = parseInt(document.getElementById("totalPrice").value, 10);

    if (freeDVDPlayer) {
        if ((totalPrice >= 100) && (selCountry == "UK")) {
            return true;
        }
        else {
            //alert("The free DVD player offer is only for UK addresses where the order value is over £100");
            return false;
        }
    }
    return true;
}

function validateEmail(sourceValue)
{
    return sourceValue.isEmail();
}

function validateNumeric(sourceValue) 
{
    if (sourceValue.trim() == "") {
        return true;
    }
    return sourceValue.isNumeric();
}

function validateMOD10(sourceValue)
{
    return sourceValue.isMod10();
}

function validateExpiryDate(sourceValue) {

    if (sourceValue.trim() == "") {
        return true;
    }
    
    var dateparts = sourceValue.split("/");

    if (dateparts.length != 2)
    {
        return false;
    }

    try
    {
        if (parseInt(dateparts[0], 10) > 12)
        {
            return false;
        }
    }
    catch(err)
    {
        return false;
    }

    return true;
}

function validateDate(sourceValue)
{
    return false;
}

function isEmpty(strng, fldname) 
{
    var error = "";
    if (strng.length == 0) 
    {
        error = "Please complete the " + fldname + " field.\n"
    }
    return error;	  
}