function checkVolunteer(msgid) {
	var fm, el, msg, len, bool, i;
	fm = document.volunteerForm;
	displayMsg('', msgid, '');

	jQuery.each($('#volunteerForm :text'), function(i,el) {
		el.value = jQuery.trim(el.value);
	});

	el = fm.avFromMonth;
	msg = 'Please select available month.';
	if(el.selectedIndex==0) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.avFromYear;
	msg = 'Please select available year.';
	if(el.selectedIndex==0) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.avToMonth;
	msg = 'Please select available month.';
	if(el.selectedIndex==0) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.avToYear;
	msg = 'Please select available year.';
	if(el.selectedIndex==0) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.avFromMonth;
	msg = 'Available date range is invalid.';
	if(fm.avFromYear.value > fm.avToYear.value) {
		return displayMsg(el, msgid, msg);
	} else if(fm.avFromYear.value == fm.avToYear.value) {
		if(fm.avFromMonth.value > fm.avToMonth.value) {
			return displayMsg(el, msgid, msg);
		}
	}
	el = fm.isStudent;
	msg = 'Please specify your student status';
	if(!(el[0].checked || el[1].checked)) {
		return displayMsg(el[0], msgid, msg);
	} else if(el[0].checked) {
		el = fm.schoolName;
		msg = 'Please specify the school name.';
		if(!el.value) {
			return displayMsg(el, msgid, msg);
		}
	}
	el = fm.qualification;
	len = el.length;
	bool = false;
	msg = 'Please specify your highest qualification.';
	for(i=0;i<len;i++) {
		if(el[i].checked) {
			bool = true;
			break;
		}
	}
	if(!bool) {
		return displayMsg(el[0], msgid, msg);
	} else if(el[len-1].checked) {
		//other is selected
		el = fm.qualificationOther;
		if(!el.value) {
			return displayMsg(el, msgid, msg);
		}
	}
	el = fm.employment;
	len = el.length;
	bool = false;
	msg = 'Please specify your employment status.';
	for(i=0;i<len;i++) {
		if(el[i].checked) {
			bool = true;
			break;
		}
	}
	if(!bool) {
		return displayMsg(el[0], msgid, msg);
	} else if(!(el[3].checked || el[4].checked)) {
		el = fm.empVenue;
		msg = 'Please specify your employment venue.';
		if(!el.value) {
			return displayMsg(el, msgid, msg);
		}

		el = fm.empPosition;
		msg = 'Please specify your position.';
		if(!el.value) {
			return displayMsg(el, msgid, msg);
		}
	}
	el = fm.name;
	msg = 'Please fill in your name.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.age;
	el.value = parseInt(el.value);
	msg = 'Please fill in your age.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	} else {
		if(el.value <= 0) {
			msg = 'Your age is invalid.';
			return displayMsg(el, msgid, msg);
		}
	}
	el = fm.gender;
	len = el.length;
	bool = false;
	msg = 'Please specify your gender.';
	for(i=0;i<len;i++) {
		if(el[i].checked) {
			bool = true;
			break;
		}
	}
	if(!bool) {
		return displayMsg(el[0], msgid, msg);
	}
	el = fm.nationality;
	msg = 'Please select your nationality.';
	if(el.selectedIndex==0) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.nric;
	msg = 'Please fill in your NRIC/Passport.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.contactMobile;
	msg = 'Please fill in your mobile number.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.contactHome;
	msg = 'Please fill in your home number.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.email;
	msg = 'Please fill in your email.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	} else if(!isEmail(el.value)) {
		msg = 'Email is invalid.';
		return displayMsg(el, msgid, msg);
	}
	el = fm.langWritten;
	msg = 'Please specify your proficiency of language in writing.';
	//if(el.selectedIndex==0) {
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.langSpoken;
	msg = 'Please specify your proficiency of language in speaking.';
	//if(el.selectedIndex==0) {
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	}
	el = document.getElementsByName('area[]');
	len = el.length;
	bool = false;
	msg = 'Please specify at least 1 interest.';
	for(i=0;i<len;i++) {
		if(el[i].checked) {
			bool = true;
			break;
		}
	}
	if(!bool) {
		return displayMsg(el[0], msgid, msg);
	}

	el = fm.description;
	el.value = jQuery.trim(el.value);
	var limitWords = 100;
	var tolerantWords = 0;
	msg = 'Please fill in description.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	} else if(CountWords(el)>limitWords+tolerantWords) {
		msg = 'Description cannot be more than '+limitWords+' words.';
		return displayMsg(el, msgid, msg);
	}
	return true;
}

function checkResume(msgid) {
	var fm, el, msg, ext;
	fm = document.resumeForm;
	displayMsg('', msgid, '');

	el = fm.avatar;
	msg = 'Please select a photo to upload.';
	if(!el.value) {
		if(!hasAvatar) {
			return displayMsg(el, msgid, msg);
		}
	} else {
		var imgExt = el.value.toLowerCase();
		ext = (/[.]/.exec(imgExt))? /[^.]+$/.exec(imgExt):'';
		msg = 'Only JPG format is allowed.';
		if (!(ext && /^(jpg|jpe|jpeg)$/.test(ext))) {
			return displayMsg(el, msgid, msg);
		}
	}
	el = fm.resume;
	msg = 'Please upload a resume.';
	if(!el.value) {
		if(!hasResume) {
			return displayMsg(el, msgid, msg);
		}
	}
	el = fm.biography;
	el.value = jQuery.trim(el.value);
	var limitWords = 200;
	var tolerantWords = 0;
	msg = 'Please fill in artist biography.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	} else if(CountWords(el)>limitWords+tolerantWords) {
		msg = 'Artist biography cannot more than 200 words.';
		return displayMsg(el, msgid, msg);
	}
	return true;
}

function checkProfile(msgid) {
	var fm, el, msg;
	fm = document.profileForm;
	displayMsg('', msgid, '');

	jQuery.each($('#profileForm :text'), function(i,el) {
		el.value = jQuery.trim(el.value);
	});

	var day, month, year;
	el = fm.dobDay;
	day = parseInt(el.value);
	msg = 'Please select your Day of Birth.';
	if(el.selectedIndex==0) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.dobMonth;
	month = parseInt(el.value);
	msg = 'Please select your Month of Birth.';
	if(el.selectedIndex==0) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.dobYear;
	year = parseInt(el.value);
	msg = 'Please select your Year of Birth.';
	if(el.selectedIndex==0) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.dobDay;
	msg = 'Date of Birth is invalid.';
	switch (month) {
		case 2:
			if(day>=29) {
				var isLeapYr = false;
				if(day==29) {
					isLeapYr = (((year % 4)==0 && (year % 100)!=0) || ((year % 400)==0))? true:false;
				}
				if(!isLeapYr) {
					return displayMsg(el, msgid, msg);
				}
			}
			break;
		case 4: case 6: case 9: case 11:
			if(day>=31) {
				return displayMsg(el, msgid, msg);
			}
			break;
		default:
			if(day>=32) {
				return displayMsg(el, msgid, msg);
			}
			break;
	}
	el = fm.address;
	el.value = jQuery.trim(el.value);
	msg = 'Please fill in Address.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.zipcode;
	msg = 'Please fill in Zip Code.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.contact;
	msg = 'Please fill in Contact.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	} else {
		msg = 'Contact number is invalid.';
		var numCharRegex = /^(\+)?[0-9]+(\-|\s)?[0-9]+(\-|\s)?[0-9]+(\-|\s)?[0-9]+\d$/;
		if(!el.value.match(numCharRegex)) {
			return displayMsg(el, msgid, msg);
		}
	}
//	el = fm.website;
//	msg = 'Please enter your homepage url.';
//	if(!el.value) {
//		//return displayMsg(el, msgid, msg);
//	} else {
//		if(el.value.toLowerCase()!='optional') {
//			msg = 'Web address is invalid.';
//			if(!isUrl(el.value)) {
//				return displayMsg(el, msgid, msg);
//			}
//		}
//	}
	return true;
}
function checkGetPwd(msgid) {
	var fm, el, msg;
	fm = document.getPwdForm;
	displayMsg('', msgid, '');

	jQuery.each($('#getPwdForm :text'), function(i,el) {
		el.value = jQuery.trim(el.value);
	});

	el = fm.email;
	msg = 'Please enter your email.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	} else {
		msg = 'Email is invalid.';
		if(!isEmail(el.value)) {
			return displayMsg(el, msgid, msg);
		}
	}
	el = fm.nric;
	msg = 'Please enter your NRIC / FIN / Passport.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	}
	return true;
}
function checkReg(msgid) {
	var fm, el, msg;
	fm = document.regForm;
	displayMsg('', msgid, '');

	removeInputClass('regForm', 'errorbox');
	jQuery.each($('#regForm :text'), function(i,el) {
		el.value = jQuery.trim(el.value);
	});

	el = fm.name;
	msg = 'Please fill in your name.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);;
	}
	el = fm.email;
	msg = 'Please fill in your email.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	} else {
		msg = 'Email is invalid.';
		if(!isEmail(el.value)) {
			return displayMsg(el, msgid, msg);
		}
	}
	el = fm.reEmail;
	msg = 'Please re-enter your email.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	} else {
		msg = 'Emails do not match.';
		if(el.value.toLowerCase()!=fm.email.value.toLowerCase()) {
			return displayMsg(el, msgid, msg);
		}
	}
	el = fm.nationality;
	msg = 'Please select your nationality.';
	if(el.selectedIndex==0) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.country;
	msg = 'Please select your country of residence.';
	if(el.selectedIndex==0) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.nric;
	msg = 'Please enter your NRIC / FIN / Passport.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	}
	el = fm.agree;
	msg = 'You must agree with Terms & Conditions.';
	if(!el.checked) {
		return displayMsg(el, msgid, msg);
	}
	return true;
}
function checkLogin(msgid) {
	var fm, el, msg;
	fm = document.loginForm;
	displayMsg('', msgid, '');

	//removeInputClass('loginForm', 'errorbox');
	jQuery.each($('#loginForm :text'), function(i,el) {
		el.value = jQuery.trim(el.value);
	});

	el = fm.email;
	msg = 'Please enter your email.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	} else {
		msg = 'Email is invalid.';
		if(!isEmail(el.value)) {
			return displayMsg(el, msgid, msg);
		}
	}
	el = fm.submissionCode;
	msg = 'Please enter your Submission Code.';
	if(!el.value) {
		return displayMsg(el, msgid, msg);
	}
	return true;
}
function getRandomNumber() {
	return Math.ceil(10000*Math.random());
}
function downloadjs(url,data) {
	if(!url) {
		return;
	}
	// do search here
	$.ajax({
		type: "POST",
		url: url,
		data: data,
		dataType: "script"
	})
}
function download(url,data,target,parent) {
	if(!url) {
		return;
	}
	// do search here
	$.ajax({
		type: "POST",
		url: url,
		data: data,
		dataType: "html",
		success: function(msg){
			if( msg && target && $('#'+target)) {
				if(parent) {
					$('#'+target).parent().html(msg);
				} else {
					$('#'+target).html(msg);
				}
			}
		}
	})
}
function trim(s) {
	var l=0; var r=s.length -1;
	while(l < s.length && s[l] == ' ') {
		l++;
	}
	while(r > l && s[r] == ' ') {
		r-=1;
	}
	return s.substring(l, r+1);
}
function refresh_window() {
	//document.location='./';
	//document.location='index.php';
	//document.location=document.location;
	window.location.reload();
}
function isEmail(email) {
	if(!email)
		return false;
	//var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var filter  = /^[a-z0-9]+((\.|-|_)[a-z0-9]+)*@[a-z0-9]+((\.|-|_)[a-z0-9]+)*(\.[a-z]{2,4})$/i;
	return filter.test(email);
}
function isUrl(url) {
	if(!url)
		return false;
	var filter  = /^(http(s)?|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i;
	return filter.test(url);
}

$(document).ready(function () {
	$(':submit').bind("click", function(e){
		removeInputClass($(this).parents('form').attr('id'), 'errorbox');
	});

//	$("form").submit(function() {
//		removeInputClass($(this).attr('id'), 'errorbox');
//	});
});

function removeInputClass(formId, className) {
	if(typeof className=='undefined' || (typeof className=='string' && className==''))
		className='errorbox';

	if(typeof formId=='undefined' || (typeof formId=='string' && formId==''))
		$('form input').filter('.'+className).removeClass(className);
	else
		$('#'+formId+' input').filter('.'+className).removeClass(className);
}
function displayCountWords(el, dispId) {
	var count = CountWords(el);
	var msg = 'Words: ' + count;
	$('#'+dispId).text(msg);
}
function CountWords(field) {
	var fullStr = typeof field=='object'? field.value:$('#'+field).val();
	fullStr = fullStr + " ";
	if (fullStr.length < 2) {
		return 0;
	}
	var initial_whitespace_rExp = /^[^A-Za-z0-9'"]+/gi;
	var left_trimmedStr = fullStr.replace(initial_whitespace_rExp, "");
	var non_alphanumerics_rExp = rExp = /[^A-Za-z0-9'"]+/gi;
	var cleanedStr = left_trimmedStr.replace(non_alphanumerics_rExp, " ");
	var splitString = cleanedStr.split(" ");
	var word_count = splitString.length -1;
	return word_count;
}
function alertMsg(el, msg) {
	alert(msg);
	if(typeof el=='object') {
		el.focus();
		el.className = el.className + ' errorbox';
	}
	return false;
}
function displayMsg(el, msgid, msg) {
	$('#'+msgid).html(msg);
	if(typeof el=='object') {
		el.focus();
		el.className = el.className + ' errorbox';
	}
	return false;
}
function showLoading() {
	$('#loading').removeClass('hide');
}
function hideLoading() {
	$('#loading').addClass('hide');
}
function getUrlVars(url){
	var vars = [], hash;
	if(url) {
		var hashes = url.slice(url.indexOf('?') + 1).split('&');
	} else {
		var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
	}
	for(var i = 0; i < hashes.length; i++){
		hash = hashes[i].split('=');
		vars.push(hash[0]);
		var text = hash[1];
		text = unescape(text);
		vars[hash[0]] = text;
	}
	return vars;
}
function popup(url) {
	$('#form_popup_iframe').attr('src',url);$('#form_popup').removeClass('hide');
}
function adjustframe(frameid,height) {
	if(!frameid) {
		return;
	}
	if(height && window.opera) {
		$('#'+frameid).css('height',height);
	} else {
		dyniframesize(frameid);
	}
}
function dyniframesize(frameid){
	dyniframe = document.getElementById(frameid);
	if (dyniframe) {
		if (dyniframe.contentDocument && dyniframe.contentDocument.body.offsetHeight) {
			dyniframe.height = dyniframe.contentDocument.body.offsetHeight;
		} else if (dyniframe.Document && dyniframe.Document.body.scrollHeight) {
			dyniframe.height = dyniframe.Document.body.scrollHeight;
		}
		dyniframe.height += 10;
		//alert(dyniframe.height);
	}
}
function updateheight(frameid) {
	if(!frameid) {
		frameid='iframe';
	}
	if(top != self) {
		//var h = $(document).height() + 32;
		//var h = $(document).height();
		var h = $("body").height() + 10;
		window.parent.adjustframe(frameid,h+'px');
	}
}
