// JavaScript Document


function setError(objInput,strMessage) {
	objInput.valid = false;
	objErrorBlock = document.getElementById(objInput.name + '_error')
	if(objErrorBlock) {
		objErrorBlock.innerHTML = strMessage;
		objErrorBlock.style.display = 'block';
		objErrorBlock.className = 'form_error';
	}
}

function clearError(objInput) {
	objInput.valid = true;
	objErrorBlock = document.getElementById(objInput.name + '_error')
	if(objErrorBlock) {
		objErrorBlock.innerHTML = '\t';
		objErrorBlock.style.display = 'none';
		objErrorBlock.className = 'form_info';
	}
}

function RequiredField(objInput,strMessage) {
	if(objInput.value.match(/^[ \t]*$/)) {
		setError(objInput,strMessage);
		return false;
	} else {
		clearError(objInput);
		return true;
	}
}

function StringField(objInput,strMessage) {
	// Strings can contain anything, so validate true.
	clearError(objInput);
	return true;
}

function NumericField(objInput,strMessage) {
	if(objInput.value.match(/^[0-9]+\.?[0-9]*$/)) {
		clearError(objInput);
		return true;
	} else {
		setError(objInput,strMessage);
		return false;
	}
}

function EmailField(objInput,strMessage) {
	return RegExpField(objInput,strMessage,(/^[a-zA-Z0-9_\-]+@([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+$/));
}

function RegExpField(objInput,strMessage,regExp) {
	if(objInput.value.match(regExp)) {
		clearError(objInput);
		return true;
	} else {
		setError(objInput,strMessage);
		return false;
	}
}

function EuDateField(objInput,strMessage) {
	// might need work this one.
	if(RegExpField(objInput,strMessage,(/^(\d{2})\/(\d{2})\/(\d{4})$/))) {
			dateArray = objInput.value.split('/');
			dteMatch = formatDate(new Date(dateArray[2],dateArray[1]-1,dateArray[0]),'dd/MM/yyyy');
			if(objInput.value == dteMatch) {
				clearError(objInput);
				return true;
			} else {
				setError(objInput,strMessage);
				return false;
			}
	} else {
			return false;
	}
}

function validateForm(objForm) {
	bSuccess = true;
	objList = objForm.getElementsByTagName('input');

	for (var i = 0; i < objList.length; i++) { 
		if(objList[i].onchange) {
			objList[i].onchange();
			if(!objList[i].valid) {
				bSuccess = false;
			}
		}
	}

	objList = objForm.getElementsByTagName('select');
	for (var i = 0; i < objList.length; i++) { 
		if(objList[i].onchange) {
			objList[i].onchange();
			if(!objList[i].valid) {
				bSuccess = false;
			}
		}
	}
	objList = objForm.getElementsByTagName('textarea');
	for (var i = 0; i < objList.length; i++) { 
		if(objList[i].onchange) {
			objList[i].onchange();
			if(!objList[i].valid) {
				bSuccess = false;
			}
		}
	}
	if(!bSuccess) {
			window.alert('There were some problems on the form you tried to submit. Please review the details of the form before resubmitting it!');
	}
	return bSuccess;
}

function addZero(vNumber){ 
	return ((vNumber < 10) ? "0" : "") + vNumber 
} 
        
function formatDate(vDate, vFormat){ 
	var vDay                      = addZero(vDate.getDate()); 
	var vMonth            = addZero(vDate.getMonth()+1); 
	var vYearLong         = addZero(vDate.getFullYear()); 
	var vYearShort        = addZero(vDate.getFullYear().toString().substring(3,4)); 
	var vYear             = (vFormat.indexOf("yyyy")>-1?vYearLong:vYearShort) 
	var vHour             = addZero(vDate.getHours()); 
	var vMinute           = addZero(vDate.getMinutes()); 
	var vSecond           = addZero(vDate.getSeconds()); 
	var vDateString       = vFormat.replace(/dd/g, vDay).replace(/MM/g, vMonth).replace(/y{1,4}/g, vYear) 
	vDateString           = vDateString.replace(/hh/g, vHour).replace(/mm/g, vMinute).replace(/ss/g, vSecond) 
	return vDateString 
} 
