// JavaScript Document

function ValidateForm(formname, indexes, emailIndex, msg) {
		
		ValidateForm.prototype.validate 	= validate;
		ValidateForm.prototype.clear 		= clear;
		ValidateForm.prototype.getElement 	= getElement;
		ValidateForm.prototype.isEmail		= isEmail;
		ValidateForm.prototype.setToFalse	= setToFalse;
		ValidateForm.prototype.setToTrue	= setToTrue;
		
		this.formname 		= formname;
		this.element		= null;
		
		this.indexes 		= indexes;
		this.sizeOfIndexes 	= indexes.length;
		
		this.emailIndex		= emailIndex;
		
		this.red 			= "1px solid red";
		this.black 			= "1px solid black";
		this.status 		= true;
		this.msg 			= 'Täytä kenttä';
		
		
		if(msg != 'false' && typeof(msg) != "undefined"){
			this.msg = msg;
		}
		
		else if(msg == 'false'){
			this.msg = "";
		}
		
}

function getElement(index){
	
	this.element = this.formname.elements[index];

}



function isEmail(email){

	regexp = new RegExp('.+@.+\\..+');
	
	return (regexp.test(email)) ? true : false;

}

function setToTrue(index){
	
	this.element.style.border = this.black;
	document.getElementById('f' + index).innerHTML = "";
	
}

function setToFalse(index, aMsg){
	
	this.element.style.border = this.red;
	this.status = false;
	document.getElementById('f' + index).innerHTML = (aMsg) ? aMsg : this.msg;
	
}

function clear(){
	
	var index = 0;
	
	for (var i = 0; i < this.sizeOfIndexes; i++) {
		
		index = this.indexes[i];
		
		this.getElement(index);
		
		this.setToTrue(index);
		
	}
	
}


function validate(){
	
	this.status = true;
	
	var index = 0;
	
	for (var i = 0; i < this.sizeOfIndexes; i++) {
		
		index = this.indexes[i];
		
		this.getElement(index);
			
		if(this.element.value == '' || this.element.value == null){
				
			this.setToFalse(index);
				
		} else if(index == this.emailIndex){
				
				(this.isEmail(this.element.value) == false) 
					? this.setToFalse(index, 'Ei sähköpostiosoite') 
					: this.setToTrue(index);
			
		} else {
				
				this.setToTrue(index);
				
		}
	}
	
	return this.status;
}


