

//doesn't work in IE 6:  needs debugging
//function showError (errorMsg) {
//alert('showError');
//	divError = findElement('div', 'divError');
//alert(divError);	
//	if (divError == null)
//		alert(errorMsg);
//	else{
//alert('show');
//		errorMsg = errorMsg.replace(/\n\n/g, '\n');
//		errorMsg = errorMsg.replace(/\n/g, '<br />');
//	
//		divError.innerHTML = errorMsg;
//		divError.style.display = 'block';
//	}
//}
//
//function findElement(tagName, elemID){
//alert('get elements');
//	var result=document.getElementsByTagName(tagName);
//alert('got elements');
//	for(i in result){
//		alert(result[i]);
//		if (!undefined(result[i]) && result[i].id == elemID) {
//			alert('returning'+result[i]);
//			return result[i];
//		}
//	}
//	return null;
//}

function showError(errorMsg){
	alert(errorMsg);
}

function hideError () {
	divError = document.getElementById('divError');
	if (!empty(divError))
		divError.sytle.display = 'none';
}

function getSelectValue(elemSelect){
	var i = elemSelect.selectedIndex;
	return elemSelect.options[i].value;
}

function textAreaLimit(idTextArea, limit){
	var elem = document.getElementById(idTextArea);
	
	var extra = elem.value.replace(/'/g, "''");
	var diff = extra.length - elem.value.length;
	
	if (extra.length > limit)
		elem.value = elem.value.substr(0, limit - diff);
}

function obValid(id, label, type, required){
	this.id = id;
	this.label = label;
	this.type = type;
	this.required = required;
}


function validate(idForm, arrValid){
	var message = 'Please check the following fields:\n';
	var bError = false;
	
	for (i in arrValid){
		value = document.getElementById(arrValid[i].id).value;
		if (arrValid[i].required && value == ''){
			message += "\n'"+arrValid[i].label+"' is required";
			bError = true;
		}
		else if (value != '' && arrValid[i].type != ''){
			switch(arrValid[i].type){
				case 'password':
					var pass2 = arrValid[i].id + '2';
					var value2 = document.getElementById(pass2).value;
					if (value != value2){
				 		bError = true;
				 		message += "\n'"+arrValid[i].label+"': the passwords should match";
				 	}
					break;
				case 'int':
				 	if (isNaN(value) || Math.round(value) != value) {
				 		bError = true;
				 		message += "\n'"+arrValid[i].label+"' should be a whole number";
				 	}
					break;
					
				case 'int+':
				 	if (isNaN(value) || Math.round(value) != value || value <= 0) {
				 		bError = true;
				 		message += "\n'"+arrValid[i].label+"' should be a positive whole number";
				 	}
					break;

				case 'int0':
				 	if (isNaN(value) || Math.round(value) != value || value < 0) {
				 		bError = true;
				 		message += "\n'"+arrValid[i].label+"' should be a non-negative whole number";
				 	}
					break;

				case 'float':
				 	if (isNaN(value)) {
				 		bError = true;
				 		message += "\n'"+arrValid[i].label+"' should be a number";
				 	}
					break;
					
				case 'float+':
				 	if (isNaN(value) ||  value <= 0) {
				 		bError = true;
				 		message += "\n'"+arrValid[i].label+"' should be a positive number";
				 	}
					break;

				case 'float0':
				 	if (isNaN(value) ||  value < 0) {
				 		bError = true;
				 		message += "\n'"+arrValid[i].label+"' should be a non-negative number";
				 	}
					break;

				case 'email':
					if (! /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(value)){
				 		bError = true;
				 		message += "\n'"+arrValid[i].label+"' should be of the form (e.g.) name@server.com";
				 	}
					break;
					
				case 'phone':
					if (! /^[0-9 -]+$/.test(value)){
				 		bError = true;
				 		message += "\n'"+arrValid[i].label+"' should be have numbers and hyphens(-) only";
				 	}
					break;
					
				case 'date':
					if (! checkDate(value)){
						bError = true;
						message += "\n'"+arrValid[i].label+"' should be a valid date of the form e.g. '2008-01-02' (i.e. jan 1 2008)";
					}
					break;
			}
		}
	}
	
	if (bError){
		showError(message);
		return false;
	}
	return true;
}

function stringToTime(str){
	var arrDate = str.split('-');
	var obDate = new Date();
	obDate.setFullYear(arrDate[0]);
	obDate.setMonth(arrDate[1] - 1);
	obDate.setDate(arrDate[2]);
	
	return obDate.getTime();
}

function timeToString(intTime){
	var obDate = new Date();
	var intMonth, intDay;
	var strMonth, strDay;
	obDate.setTime(intTime);
	
	intMonth = new Number(obDate.getMonth() + 1);
	strMonth = intMonth.toString();
	if (strMonth.length == 1)
		strMonth = '0' + strMonth;

	intDay = new Number(obDate.getDate());
	strDay = intDay.toString();
	if (strDay.length == 1)
		strDay = '0' + strDay;
		
	return obDate.getFullYear() + '-' + strMonth + '-' + strDay;
}

function checkDate(strDate){
	var arrDate = strDate.split('-');
	var year = arrDate[0];
	var month = arrDate[1];
	var day = arrDate[2];
	
	if (isNaN(year) || Math.round(year) != year || year < 2001 || year > 2050)
		return false;
		
	if (month.length != 2 || isNaN(month) || Math.round(month) != month || month < 1 || month > 12)
		return false;
		
	if (day.length != 2 || isNaN(day) || Math.round(day) != day || day < 1)
		return false;
		
	switch (month){
		case '02':
			if (Math.round(year/4.) == year/4.) {
				if (day > 29)
					return false;
			}
			else if (day > 28)
				return false;		
			break;
			
		case '04':
		case '06':
		case '09':
		case '11':
			if (day > 30)
				return false;
			break;
			
		default:
			if (day > 31)
				return false;
			break;
	}
	
	return true;
		
}
