function checkShipFieldsReq() {
    var arrShippingFields = new Array("shippingName","shippingLastName","shippingPhone","shippingZip","shippingAddressNr","shippingAddress","shippingCity");
    var shipFormHasValues = (document.orderform.hasValues.value.toLowerCase() == "true");
    var hasValue = false;
    var el;
    
    //for (field in arrShippingFields)
    for (var i = 0; i < arrShippingFields.length; i++) {
        if (document.getElementById(arrShippingFields[i]).value.length > 0) {
            hasValue = true;
            break;
        }
    }

    // Only change fields attributes when needed
    if (!shipFormHasValues && hasValue) {
        document.orderform.hasValues.value = "true";
    
        for (var i = 0; i < arrShippingFields.length; i++) {
            el = document.getElementById(arrShippingFields[i]);
            el.className = "required";
            
            if (el.addEventListener) { // Mozilla, Netscape, Firefox
                el.addEventListener('keyup', doValidateRef, false);
                el.addEventListener('blur', doValidateRef, false);
            }
            else if (el.attachEvent) { // IE
                el.attachEvent('onkeyup', doValidateRef);
                el.attachEvent('onblur', doValidateRef);
            }

            doValidate(el);
        }
    } else if (shipFormHasValues && !hasValue) {
        document.orderform.hasValues.value = "false";
    
        for (var i = 0; i < arrShippingFields.length; i++) {
            el = document.getElementById(arrShippingFields[i]);
            el.className = "notrequired";

        if (el.addEventListener) { // Mozilla, Netscape, Firefox
                el.removeEventListener('keyup', doValidateRef, false);
                el.removeEventListener('blur', doValidateRef, false);
            }
            else if (el.attachEvent) { // IE
                el.detachEvent('onkeyup', doValidateRef);
                el.detachEvent('onblur', doValidateRef);
            }
        }
    }
}

function checkShipFieldsReqStart() { // Run when page loads to check if it is a page refresh
    var arrShippingFields = new Array("shippingName","shippingLastName","shippingPhone","shippingZip","shippingAddressNr","shippingAddress","shippingCity");
    var shipFormHasValues = (document.orderform.hasValues.value.toLowerCase() == "true");
    var hasValue = false;
    var el;
    
    //for (field in arrShippingFields)
    for (var i = 0; i < arrShippingFields.length; i++) {
        if (document.getElementById(arrShippingFields[i]).value.length > 0) {
            hasValue = true;
            break;
        }
    }

    // set field class="required" when field has a value
    if (hasValue) {
        document.orderform.hasValues.value = "true";
    
        for (var i = 0; i < arrShippingFields.length; i++) {
            el = document.getElementById(arrShippingFields[i]);
            el.className = "required";
            
            if (el.addEventListener) { // Mozilla, Netscape, Firefox
                el.addEventListener('keyup', doValidateRef, false);
                el.addEventListener('blur', doValidateRef, false);
            }
            else if (el.attachEvent) { // IE
                el.attachEvent('onkeyup', doValidateRef);
                el.attachEvent('onblur', doValidateRef);
            }

            doValidate(el);
        }
    } else {
        for (var i = 0; i < arrShippingFields.length; i++) {
            el = document.getElementById(arrShippingFields[i]);
            el.className = "notrequired";
        }
    }
}

function submitOnce(theform) {
	if (document.getElementById) {
		for (i=0; i<theform.length; i++) {
			var tempobj = theform.elements[i]
			
			if (tempobj.type.toLowerCase() == 'submit' || tempobj.type.toLowerCase() == 'button') {
				tempobj.disabled = true;
				tempobj.className = 'dinputsubmit';
			}
		}
	}
}

function checkRequired(theform) {
	var submits = new Array();
	var reqs = false;
	
	if (document.getElementById) {
		if (!theform)
			return false;
		
		for (i=0; i<theform.length; i++) {
			var tempobj = theform.elements[i];
			
			if (tempobj.className == 'required') {
				reqs = true;
			} else if(tempobj.type) {
				if(tempobj.type.toLowerCase() == 'submit' || tempobj.type.toLowerCase() == 'button') {
					submits[ submits.length ] = i;
				}
			}
		}
		
		// enable the buttons
		if (!reqs) {
			for (i=0; i<submits.length; i++) {
				var j = submits[i];
				var te = theform.elements[j];
				
				if(te.className.substr(0,1) == 'd') {
					te.className = te.className.substr(1);
					te.disabled = false;
				}
			}
		} else {
			for (i=0; i<submits.length; i++) {
				var j = submits[i];
				var te = theform.elements[j];

				te.className = 'dinputsubmit';
				te.disabled = false;
			}
		}
	}
}

function formCheckStart(elem) {
	var elemName = elem.name;
	switch(elemName) {
			case 'zip':
			var re = new RegExp(/^[1-9][0-9]{3}\s?([a-zA-Z]{2})?$/);
			var result = re.test(elem.value);
			if (result) {
				//getPostcode('postcode_check.asp?postcode='+removeSpaces(elem.value));
				formCheck(document.orderform.address);
				formCheck(document.orderform.city);
			}
			break;
	}
	
	// finalize it
	if(!result)
		elem.className = 'required';
	else
		elem.className = 'checked';
}

function formCheck(elem) {
	var elemName = elem.name;
	switch(elemName) {
		case 'shippingZip':
			if (document.orderform.shippinglocCountry.value == 'NL')
				var re = new RegExp(/^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/);
			else
				var re = new RegExp(/^[1-9][0-9]{3}\s?([a-zA-Z]{2})?$/);

            var result = re.test(elem.value);
            
			if (result) {
				getPostcode('postcode_check.asp?deliver=1&postcode='+removeSpaces(elem.value));
				formCheck(document.orderform.shippingAddress);
				formCheck(document.orderform.shippingCity);
			}
			break;
		case 'name': case 'shippingName':
			var re = new RegExp(/^[\w\s\.\-\']{2,32}$/);
			var result = re.test(elem.value);
			break;
		case 'lastName': case 'shippingLastName':
			var re = new RegExp(/^[\w\s\.\-\']{2,32}$/);
			var result = re.test(elem.value);
			break;
		case 'phone': case 'shippingPhone':
			var re = new RegExp(/^[0-9-+\s]{8,13}$/);
			var result = re.test(elem.value);
			break;
		case 'email':
			var re = new RegExp(/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/);
			var result = re.test(elem.value);
			if (document.getElementById('showmsg')) {
				if (result) {
					document.LogonForm.email.value = elem.value;
					getDocument('/scripts/_INCcheckEmail.asp?email='+elem.value, 'logon');
				}
				else {
					document.getElementById('logon').className = 'tr_inv';
					document.getElementById('showmsg').innerHTML = '';
				}
			}
			break;
		case 'password':
			var re = new RegExp(/^\w{3,16}$/);
			var result = re.test(elem.value);
			break;
		case 'passwordLogon':
			var re = new RegExp(/^\w{3,16}$/);
			var result = re.test(elem.value);
			if (result) {
				document.LogonForm.password.value = elem.value;
				getDocument('/scripts/_INCcheckEmail.asp?email='+document.LogonForm.email.value+'&pass='+elem.value, 'logon');
			}
			else {
				document.getElementById('logon').className = 'tr_inv';
				document.getElementById('showmsg').innerHTML = '';
			}
			if (result)
                break;
		case 'address': case 'shippingAddress':
			var re = new RegExp(/^[\w\s\.\-\']{3,32}$/);
			var result = re.test(elem.value);
			break;
		case 'addressNr': case 'shippingAddressNr':
			var re = new RegExp(/^[\w\s\.\-\']{1,8}$/);
			var result = re.test(elem.value);
			break;
		case 'zip':
			if (document.orderform.locCountry.value == 'NL')
				var re = new RegExp(/^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/);
			else
				var re = new RegExp(/^[1-9][0-9]{3}\s?([a-zA-Z]{2})?$/);

			var result = re.test(elem.value);
            
			if (result) {
				getPostcode('postcode_check.asp?postcode='+removeSpaces(elem.value));
				formCheck(document.orderform.address);
				formCheck(document.orderform.city);
			}
            
			break;
		case 'city': case 'shippingCity':
			var re = new RegExp(/^[\w\s\.\-\']{2,24}$/);
			var result = re.test(elem.value);
			break;
		case 'locCountry':
			var re = new RegExp(/^(^[0])$/);
			var result = re.test(document.orderform.locCountry.selectedIndex);
			break;
	}
	
	// finalize it
	if(!result)
		elem.className = 'required';
	else
		elem.className = 'checked';
}

function getDocument() {
	var args = getDocument.arguments;

	var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP"): new XMLHttpRequest();
	if (x) {
		var el = document.getElementById(args[1]);
		x.onreadystatechange = function() {
/*			
			if (x.readyState == 0) {
				el.innerHTML = "initializing...";
			}
			else if (x.readyState == 1) {
				el.innerHTML = "processing request...";
			}
			else if (x.readyState == 2) {
				el.innerHTML = "request acknowledged...";
			}
			else if (x.readyState == 3) {
				el.innerHTML = "Requesting data...";
			}
*/
			if (x.readyState == 4) {
//				el.innerHTML = "&nbsp;";
				var strResponseText = x.responseText;
				if (strResponseText.length == 149)
				{
					submitForm();
				}
				if (strResponseText.length > 2 && el.className == 'tr_inv') {
					document.getElementById('showmsg').innerHTML = strResponseText;
					el.className = 'tr_vis';
				} else if (strResponseText.length < 2 && el.className == 'tr_vis') {
					document.getElementById('showmsg').innerHTML = '';
					el.className = 'tr_inv';
				} else if (strResponseText.length > 2 && el.className == 'tr_vis') {
					document.getElementById('showmsg').innerHTML = strResponseText;
					el.className = 'tr_vis';
				}

//				el.innerHTML = x.responseText;
//				document.write(x.responseText);
			}
		}
		x.open("GET", args[0], true);
		x.send(null);
	}
}

function doValidate(elem) {
	formCheck(elem);
	checkRequired(document.orderform);	
}

function doValidateRef(evt) {
	var e_out;
	var ie_var = "srcElement";
	var moz_var = "target";

	// "target" for Mozilla, Netscape, Firefox et al. ; "srcElement" for IE
	evt[moz_var] ? e_out = evt[moz_var] : e_out = evt[ie_var];
	doValidate(e_out);
}

function submitForm() {
	document.LogonForm.password.value = document.orderform.passwordLogon.value;
	document.LogonForm.submit();
}