//$Id: formLib.js,v 1.13 2003/04/11 14:37:17 tim Exp $
//Copyright ©2002-2003 BaseNet Internet Projects B.V., the Netherlands. All Rights Reserved.


if(!String.prototype.leftTrim) {
	alert('xString.js needed from jsLib');
}

function checkForm(fObject) {
	
	var validation 	= new RegExp();
	var tldList 		= "ac|ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|nc|ne|net|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw";
	var fElement;
	var input;
	var message;
	
	for(i=0;i<fObject.elements.length;i++) {
		
		fElement 	= fObject.elements[i];
		fElement.highlight = function() {
			window.scrollTo(0,this.offsetTop-40);
			this.onfocus 	= null;
			this.className 	= 'formElementInvalid';
		}
		input 		= fElement.value;
		message		= fElement.getAttribute('message');
				
		if((fElement.getAttribute('required') && input=='')) {
			window.alert(fElement.getAttribute('required'));
			fElement.focus();
			fElement.highlight();
			return false;
		
		} else if(input!=''){
			if(fElement.getAttribute('validate')) {

				switch (fElement.getAttribute('validate')) {
					case 'email':
						validation = new RegExp("^.+@[a-z0-9\\-\\.]+\\.("+tldList+")$");
						break;
					case 'alpha':
						validation = new RegExp('^[a-zA-Z\.]+$');
						break;
					case 'numeric':
						validation = new RegExp('^[0-9\\-\\s]+$');
						break;
					case 'alphanumeric':
						validation = new RegExp('^[a-zA-Z0-9]+$');
						break;
				}
				
				if(!validation.test(input)) {
					window.alert(message);
					fElement.focus();
					fElement.highlight();
					return false;
				}
			}
		}
	}
	return true;
}

function mask(fElement,type) {
	if(fElement && fElement.value!='' && type) {
		var value = fElement.value.trim();
		var transform = new RegExp();
		switch (type) {
			case 'capitalize':
				value = value.capitalize();
				break;
			case 'capitalizeAll':
				value = value.capitalizeAll();
				break;
			case 'lowercase':
				value = value.toLowerCase();
				break;
			case 'uppercase':
				value = value.toUpperCase();
				break;
			case 'telephone':
				if(fElement.value.length < 10) {
					autoFill('telephone',document.getElementsByName('city')[0].value,fElement.name);
				} else {
					value = fElement.value.removeWhiteSpace();
				}
				break;
			case 'zipcode':
				value = value.toUpperCase().removeWhiteSpace().substr(0,6);
				break;
			case 'zip2':
				value = value.toUpperCase().removeWhiteSpace().substr(0,6);
				break;
		}
		fElement.value = value;
	}
}




function autoFill(type,value,fElement) {
	var done = 0;
	document.body.style.cursor = 'wait';
	//document.body.disabled = true;
	if(!document.getElementById('autoFillFrame')) {
		autoFiller 							= document.createElement('iframe');
		autoFiller.id 					= 'autoFillFrame';
		autoFiller.frameBorder	= 0;
		document.body.appendChild(autoFiller);
		document.body.setAttribute('autoFillFrameLoaded','true');
	}
	 autoFiller = document.getElementById('autoFillFrame');
	switch(type) {
		case 'city':
			autoFiller.src='/public/js/autoFill.cfm?type='+type+'&value='+value.substr(0,4);
			break;
		case 'telephone':
			value = value;
			autoFiller.src='/public/js/autoFill.cfm?type='+type+'&value='+value+'&element='+fElement;
			break;
		case 'title':
			if(document.getElementsByName('title')) {
				titleValue = document.getElementsByName('title')[0].value;
				if(titleValue== '' || titleValue == 'Mevr.' || titleValue == 'Dhr.') {
					document.getElementsByName('title')[0].value = value=='M'?'Dhr.':'Mevr.';
				}
			}
			done = 1;
			break;
		default:
			done = 1;
	}
	if(done) {
		document.body.style.cursor = 'default';
		document.body.disabled = false;
	}
}

function enhanceFormElements(sForm,sEvents) {
	if(sForm && sEvents && document.getElementById(sForm)) {	
		fObject = document.getElementById(sForm);
		aEvents = sEvents.split(',');
			
		for(i=0;i<fObject.elements.length;i++) {
			fElement 	= fObject.elements[i];
			if(fElement.className == 'formElement') {
				for(j=0;j<aEvents.length;j++) {
					switch (aEvents[j]) {
						case 'click':
							fElement.setAttribute('oldOnclick',fElement.onclick);
							fElement.onclick = function() {
								if(this.oldOnclick) {
									this.oldOnclick();
								}
								this.className = 'formElementClick'
							}
							break;
						case 'blur':
							fElement.oldOnblur = fElement.onblur;
							fElement.onblur = function() {
								if(this.oldOnblur) {
									this.oldOnblur();
								}
								this.className = 'formElementBlur';
							}
							break;
						case 'focus':
							fElement.oldOnfocus = fElement.onfocus;
							fElement.onfocus = function() {
								if(this.oldOnfocus) {
									this.oldOnfocus();
								}
								this.className = 'formElementFocus'
							}
							break;
						case 'over':
							fElement.oldOnmouseover = fElement.onmouseover;
							fElement.onmouseover = function() {
								if(this.oldOnmouseover) {
									this.oldOnmouseover();
								}
								this.className = 'formElementOver'
							}
							break;
						case 'out':
							fElement.oldOnmouseout = fElement.onmouseout;
							fElement.onmouseout = function() {
								if(this.oldOnmouseout) {
									this.oldOnmouseout();
								}
								this.className = 'formElementOut'
							}
							break;
						case 'down':
							fElement.oldOnmousedown = fElement.onmousedown;
							fElement.onmousedown = function() {
								if(this.oldOnmousedown) {
									this.oldOnmousedown();
								}
								this.className = 'formElementDown'
							}
							break;
						case 'up':
							fElement.oldOnmouseup = fElement.onmouseup;
							fElement.onmouseup = function() {
								if(this.oldOnmouseup) {
									this.oldOnmouseup();
								}
								this.className = 'formElementUp'
							}
							break;
						case 'dblclick':
							fElement.oldOndblclick = fElement.ondblclick;
							fElement.ondblclick = function() {
								if(this.oldOndblclick) {
									this.oldOndblclick();
								}
								this.className = 'formElementDblClick'
							}
							break;
					}
				}
			}
		}
	}
}

