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 FormSubmit(theform, obj) {
	var form_error = false;
	if (document.getElementById) {
		for (i=0; i<obj.length; i++) {
			var tempobj = obj[i]
			formCheck(tempobj, 'blur');
			
			if (tempobj.className == 'error'){
				var form_error = true;
			}								 
			
			/*if (tempobj.type.toLowerCase() == 'submit' || tempobj.type.toLowerCase() == 'button') {
				tempobj.disabled = true;
				tempobj.className = 'dinputsubmit';
			}*/
		}
	}
	
	if(form_error == false){
		
		if (document.form_registreren) {
			document.form_registreren.action = document.form_registreren.action;
			setTimeout("document.form_registreren.submit()",10);
		} else {
			document.forms[0].action = document.forms[0].action;
			setTimeout("document.forms[0].submit()",10);
		}
		return true;
	} else {
		var el = new YAHOO.util.Element('foo');
		var form_errormessages = el.getElementsByClassName('form_errormessage');	
		for (i=0; i<form_errormessages.length; i++) {
				form_errormessages[i].className = 'form_errormessage_display';
		}
	}
	
}

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, status) {
	var elemName = elem.name;
	switch(elemName) {
		//case 'bedrijf': case 'contact': case 'shippingName':
			//var re = new RegExp(/^[\w\s\.\-\'áéíóúàèìòùäëïöü]{2,32}$/);
			//var result = re.test(elem.value);
			//var minlength = 2;
			//break;
		case 'geboortedatum': case 'bdate':
			var re = new RegExp(/^([0-9]{0,2})-([0-9]{0,2})-([0-9]{4,4})$/);
			var result = re.test(elem.value);
			var minlength = 10;
			break;
		//case 'lastName': case 'shippingLastName':
			//var re = new RegExp(/^[\w\s\.\-\'áéíóúàèìòùäëïöü]{2,32}$/);
			//var result = re.test(elem.value);
			//break;
		//case 'telefoon': case 'phone' : case 'shippingPhone':
			//var re = new RegExp(/^[+*]([0-9]{3}\-[0-9]{7})|([0-9]{4}\-[0-9]{6})|([0-9]{10})$/);
			//var result = re.test(elem.value);
			//var minlength = 10;
			//break;
		case 'email': case 'email_collega': case 'email_ont': case 'emailadres':
			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);
			var minlength = 5;
			break;
		case 'password': case 'wachtwoord':
			var re = new RegExp(/^[\wáéíóúàèìòùäëïöü]{4,16}$/);
			var result = re.test(elem.value);
			var minlength = 4;
			break;
		case 'wachtwoord2':
			if (document.getElementById('wachtwoord').value == elem.value) var result = true;
			var minlength = 3;
			break;
		//case 'adres': case 'addr': case 'shippingAddress':
			//var re = new RegExp(/^[\w\s\.\-\'áéíóúàèìòùäëïöü]{3,32}$/);
			//var result = re.test(elem.value);
			//var minlength = 2;
			//break;
		//case 'addressNr': case 'shippingAddressNr':
			//var re = new RegExp(/^[\w\s\.\-\'áéíóúàèìòùäëïöü]{1,8}$/);
			//var result = re.test(elem.value);
			//break;
		//case 'zip': case 'postcode':
			// Voor nederland
			//var re = new RegExp(/^[\w\s\.\-\'áéíóúàèìòùäëïöü]{1,32}$/);
			//var re = new RegExp(/^[1-9][0-9]{3}\s$/);
			// Voor buiten Nederland
			//var re = new RegExp(/^[1-9][0-9]{3}\s?([a-zA-Z]{2})?$/);
			//var result = re.test(elem.value);
            //var minlength = 1;
			//break;
		//case 'city': case 'shippingCity': case 'plaats': case 'woonplaats':
			//var re = new RegExp(/^[\w\s\.\-\'áéíóúàèìòùäëïöüç]{2,24}$/);
			//var result = re.test(elem.value);
			//var minlength = 2;
			//break;
		case 'locCountry':
			var re = new RegExp(/^(^[0])$/);
			var result = re.test(elem.selectedIndex);
			break;
		case 'lvw':
				result = elem.checked;
				var minlength=0;
			break;
		case 'validation':
			
			if (elem.value == capnumber.toString())var result = true;
			else var result = false;
			var minlength=1;
			break;
		default:
			if (elem.value.length > 0 ||elem.checked)var result = true;
			else var result = false;
			var minlength=1;
			
		break;
		
	}

	// finalize it
	if(!result && elem.value.length>=minlength){
		elem.className = 'error';
	}else if (elem.value.length>=minlength){
		elem.className = 'checked';
	}else if (status == 'blur'){
		elem.className = 'error';
	} else if (status == 'load' && elem.value.length>0){
		elem.className = 'error';
	}
	return result
	
}

function doValidateKeyup() {
	formCheck(this, 'keyup');
	checkRequired(document.orderform);	
}

function doValidateblur() {
	doBlurField();
	formCheck(this, 'blur');
	checkRequired(document.orderform);
}

function doValidateLoad() {
	if (this.length){
		for (i=0; i<this.length; i++) {
			var tempobj = this[i]
			if (tempobj.type !='checkbox')formCheck(tempobj, 'load');
		}
	} else {
	formCheck(this, 'load');
	}
	checkRequired(document.orderform);	
}

function doFocusField(){
	YAHOO.util.Dom.addClass(this, 'focus');
}

function doBlurField(){
	YAHOO.util.Dom.removeClass(this, 'focus');  	
}

function initform_check(){
		var el = new YAHOO.util.Element('foo');

		var required_fields = el.getElementsByClassName('required');	

		if (required_fields.length>0){
			YAHOO.util.Event.addListener(required_fields, "keyup", doValidateKeyup);
			YAHOO.util.Event.addListener(required_fields, "blur", doValidateblur);	
			YAHOO.util.Event.onAvailable(required_fields, doValidateLoad);
			YAHOO.util.Event.addListener(required_fields, "focus", doFocusField);	
					

		}

		var submit_buttons = el.getElementsByClassName('form_submit');

		if (submit_buttons.length>0){
			YAHOO.util.Event.addListener(submit_buttons, "click", FormSubmit, required_fields);	
		}	
}

window.onload = function(){
	initform_check();
}