var numberOfRequiredElements = 0;

document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
		var classes = elem[i].className;
		if (myclass.test(classes)) retnode.push(elem[i]);
	}
	return retnode;
};

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

function indicateRequired(){
	numberOfRequiredElements = document.getElementsByClassName('required').length;
	var requiredElements = document.getElementsByClassName('required');
	for (i=0; i<requiredElements.length; i++){
		requiredElements[i].onblur = function(){
			switch(this.type){
				case 'text':
				if (this.value.trim() !== ""){
					this.className = 'complete';
					break;
				} else{
					this.className = 'required';
					break;
				}
				
				case 'select-one':
					if (this.selectedIndex !== 0){
						this.className = 'complete';
					} else{
						this.className = 'required';
					}
				break;
			}
			checkRequiredElementsCompletion();
		};
		
		requiredElements[i].onfocus = function(){
			this.className = 'editing';
		}
		
	}
}

function checkRequiredElementsCompletion(){
	var numberOfCompletedElements = document.getElementsByClassName('complete').length;
	if (numberOfCompletedElements == numberOfRequiredElements){
		document.getElementById('submit-image').src = 'images/ok-ovr.gif';
		document.getElementById('submit-image').onclick = function(){
			document.getElementById('the-form').submit();
		}
	} 
}