var fV = {
	addEvent: function(elm, evType, fn, useCapture) {
    // cross-browser event handling for IE5+, NS6 and Mozilla 
    // By Scott Andrew
		if (elm.addEventListener) {
			elm.addEventListener(evType, fn, useCapture);
			return true;
		} else if (elm.attachEvent) { 
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		} else {
			elm['on' + evType] = fn; 
		}
	},

	init: function() {
		for (var i in validationSet) {
			if (document.getElementById(i)) {
				var formField = document.getElementById(i);
				if (formField.type && (formField.type == 'checkbox')) {
					fV.addEvent(formField, 'click', fV.checkValid, false);
				} else {
					fV.addEvent(formField, 'blur', fV.checkValid, false);
				}
				if (!formField.form.validateSubmit) {
					fV.addEvent(formField.form, 'submit', fV.checkValidSubmit, false);
					formField.form.onsubmit = fV.checkSubmit;         // Safari
					formField.form.validateSubmit = true;
				}
			}
		}
			//	Set the special one for description word count.
		if (document.getElementById('description') && document.getElementById('wordcount')) {
			var wCount = document.getElementById('description');
			fV.addEvent(wCount, 'keyup', fV.wordCount, false);
		}
	},

	checkValidSubmit: function(e) {
		var frm = window.event ? window.event.srcElement : e ? e.target : null;
		if (!frm) return;
		var errText = [];
		for (var i = 0; i < frm.elements.length; i++) {
			if (frm.elements[i].name && validationSet[frm.elements[i].name]) {
				var failedE = fV.handleValidity(frm.elements[i]);
				var errDisplay = document.getElementById('error_' + frm.elements[i].name);
				if (failedE && errDisplay) {
					errDisplay.innerHTML = validationSet[failedE.name]['error'];
				}
				if (!failedE && errDisplay) {
					errDisplay.innerHTML = '';
				}
				if (failedE && !errDisplay) {
					var labels = document.getElementsByTagName('label');
					errText[errText.length] = validationSet[failedE.name]['error'];
					for (var j = 0; j < labels.length; j++) {
						if (labels[j].htmlFor == failedE.id) {
							errText[errText.length - 1] += ' (field \'' + labels[j].firstChild.nodeValue + '\')';
						}
					}
				}
			}  	/* end 'if' */
		} 		/* end 'for' */

		if (errText.length > 0) {
			alert('Please fix the following errors and resubmit:\n' + errText.join('\n'));
	      frm.submitAllowed = false;
	      if (e && e.stopPropagation && e.preventDefault) {
				e.stopPropagation();
				e.preventDefault();
	      }
	      if (window.event) {
				window.event.cancelBubble = true;
				window.event.returnValue = false;
				return false;
	      }
		} else {
			frm.submitAllowed = true;
		}
	},

	checkSubmit: function() {
		if (this.attachEvent) return true;
		return this.submitAllowed;
	},
  
	checkValid: function(e) {
		var target = window.event ? window.event.srcElement : e ? e.target : null;
		if (!target) return;
		var failedE = fV.handleValidity(target);
		var errDisplay = document.getElementById('error_' + target.name);
		if (failedE && errDisplay) {
			errDisplay.innerHTML = validationSet[failedE.name]['error'];
			failedE.focus();
		}
		if (failedE && !errDisplay) {
			alert(validationSet[failedE.name]['error']);
		}
		if (!failedE && errDisplay) {
			errDisplay.innerHTML = '';
		}
	},

	handleValidity: function(field) {
		if (!field.value) {
			return null;
		}
		//  This checkbox portion was added to original to handle checkbox fields.
		//  It requires a TYPE and VALUE attribute be coded into the checkbox html.
		if (field.type && (field.type == 'checkbox')) {
			if (field.checked) {
				return null;
			} else {
//				field.checked = false;
				return field;
			}
		}
		//  *****  End of checkbox part. *****  Remaining code handles the error same as other fields.
		var re = validationSet[field.name]['regexp'];
		if (!field.value.match(re)) {
			return field;
		} else {
			if ((field.id == 'numdays') && (field.value < 14)) {field.value = 14;}  // Secondary check for numdays
			return null;
		}
	},

	wordCount: function() {
//		var yy = document.getElementById('description');
		var y = document.sellform.description.value;
//		var y = yy.value;
		var wc = document.getElementById('wordcount');
		var r = 0;
		a=y.replace(/\s/g,' ');
		a=a.split(' ');
		for (z=0; z < a.length; z++) {if (a[z].length > 0) r++;}
		wc.innerHTML=r;
	}
}

fV.addEvent(window, 'load', fV.init, false);


