String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

// JavaScript Document
function validateMultipleCheckbox(objField, strName)
{
	blnValid = false;
	if (typeof objField.length != 'undefined')
	{
		intNumEntries = objField.length;
		for (i = 0; i < intNumEntries; i++)
		{
			if (objField[i].checked == true)
				blnValid = true;
		}
	}
	else
	{
		if (objField.checked == true)
			blnValid = true;
	}
	if (!blnValid)
		return strName+'\n';
	else
		return '';
}

/* Validate Forms */
function validateText(objField, strName) 
{
	if (objField.value.trim() == '') 
	{	
		if (objFocus == null || objFocus == '') objFocus = objField;
		return strName+'\n';
	} 
	else 
	{
		return '';
	}
}

function validateSelect(objField, strName, strErrorChoice) 
{
	if (objField.options[objField.selectedIndex].value.trim() == strErrorChoice) 
	{
		if (objFocus == null || objFocus == '') objFocus = objField;
		return strName+'\n';
	}
	else 
	{
		return '';
	}
}

function validateRadio(objField, strName) 
{
	intNum = objField.length;
	for(i = 0; i < intNum; i++)
	{
		if (objField[i].checked == true)	
		{
			return '';
			break;
		}
	}
	if (objFocus == null || objFocus == '') objFocus = objField;
	return strName+'\n';
}


function validateSelectMultiple(objField, intMin, strName) 
{
	intLenOption = objField.length;
	if (intLenOption < intMin)
	{
		return strName + '\n';	
	}	
	else
	{
		return '';
	}
}

function validateEmail(strValue) {
	var re = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
	if (!re.test(strValue.trim())) {
		return false;
	} else {
		return true;
	}
}

function withSpace(strValue)
{
	var i, isWithSpace, strValue, intStrLength, chrToken

	isWithSpace  = false;
	strValue     = strValue.toString()
	intStrLength = strValue.length
	for (i = 0; i < intStrLength; i++) {
		chrToken = strValue.charAt(i)
		if (chrToken == " ") 
		{
			isWithSpace = true
		}
	}
	return isWithSpace
}

function validatePassword(strPasswd, strConfirmPasswd) 
{
	strErrorMsg = ''
	if (strPasswd != strConfirmPasswd) 
	{
        strErrorMsg = 'Password doesn\'t match \n'
	}
	else if (strPasswd.length < 6 || strPasswd.length > 20)
	{
		strErrorMsg = 'Password should not be between  to 20 characters \n'
	}
	else if (strPasswd.toLower() == 'password')
	{
		strErrorMsg = 'You cannot user the word "password" as your password \n'
	}
	else if (withSpace(strPasswd))
	{
		strErrorMsg = 'Password should not contain spaces \n'
	}
	else
	{
		strErrorMsg = ''
	}
	return strErrorMsg
}

function isInteger(strValue) {
	var blnInt = true;
	inputStr = strValue.toString();
	for (var i = 0; i < inputStr.length; i++) {
		var oneChar = inputStr.charAt(i);			
		if ((oneChar < "0" || oneChar > "9")) {
			blnInt = false;
		}
	}
	return (blnInt);
}

function isFloat(strValue)
{
     var template = "x.ff";
     strNewValue = strValue/1;
     if(isNaN(strNewValue)) 
	 {	
	 	return false
	 }
     if ((pos = strValue.indexOf(".")) > 0)
     {
          templatepos = template.indexOf(".");
          tmpf = template.length-templatepos-1;
          valf = strValue.length-pos-1;
          if(valf > tmpf) return false;
          else return true;
     }
     return true;
}

function displayErrorMsg(strErrorMsg) 
{
	alert('Error on the following field/s: \n' + strErrorMsg);
	if (objFocus != null && objFocus != '') objFocus.focus();
	return true;
}
objFocus = null;





/* Specific form validation */
function validateRegistration(objForm, strMode)
{
	strErrorMsg = ''
	if (strMode == 'add')
	{
		if (!validateEmail(objForm.txtEmail.value.trim()))
			strErrorMsg += 'Email \n';

	}
	strErrorMsg += validateText(objForm.txtFirstName, 'First Name');
	strErrorMsg += validateText(objForm.txtLastName, 'Last Name');
	strErrorMsg += validateSelect(objForm.cboOccupation, 'Occupation', '');
	strErrorMsg += validateRadio(objForm.radGender, 'Gender');
	//for India only
	if (validateMultipleCheckbox(objForm.elements['chkEducation[]'], 'Education') != '' 
			&& validateText(objForm.txtEducation, 'Education') != '')
		strErrorMsg += 'Level of Education you wish to pursue\n';
					
	if (validateMultipleCheckbox(objForm.elements['chkSubject[]'], 'Subject') != '' 
			&& validateText(objForm.txtSubject, 'Subject') != '')
		strErrorMsg += 'Subject Area\n';
					
	if (validateMultipleCheckbox(objForm.elements['chkCountry[]'], 'Country') != '' 
			&& validateText(objForm.txtCountry, 'Country') != '')
		strErrorMsg += 'Countries considered for study\n';			
		
	if (validateMultipleCheckbox(objForm.elements['chkGotToKnowFairBy[]'], 'Know') != '' 
			&& validateText(objForm.txtGotToKnowFairBy, 'Know') != '')
		strErrorMsg += 'How did you learn about this event\n';			
		
	
	if (strMode == 'add')
	{
		if (validateMultipleCheckbox(objForm.elements['chkEvents[]'], 'Events'))
			strErrorMsg += 'Choose at least one event\n';			
	}
	if (strErrorMsg != '') 
	{
		displayErrorMsg(strErrorMsg);
		return false
	}
	else
	{
		return true
	}	
}

function validateEvents(objForm, strMode)
{
	strErrorMsg = ''
	strErrorMsg += validateMultipleCheckbox(objForm.elements['chkEvents[]'], 'Events');

	if (strErrorMsg != '') 
	{
		alert('Choose at least one event.');
		return false
	}
	else
	{
		return true
	}	
}


function changeNationality(objForm, strField) 
{
	if (strField == 'radio')
	{
		if (objForm.radNationality[0].checked)
		{
			objForm.txtNationality.value = '';
		}
	}
	else
	{
		if (objForm.txtNationality.value != '')
		{
			objForm.radNationality[1].checked = true;
		}
	}
}

function validateLogin(objForm)
{
	strErrorMsg = ''
	strErrorMsg += validateText(objForm.txtUsername, 'Username');
	strErrorMsg += validateText(objForm.txtPassword, 'Password');
	if (strErrorMsg != '') 
	{
		displayErrorMsg(strErrorMsg);
		return false
	}
	else
	{
		return true
	}	
}

function validateChangePassword(objForm)
{
	strErrorMsg = ''
	strErrorMsg += validateText(objForm.txtPasswordCurrent, 'Current Password');
	strErrorMsg += validateText(objForm.txtPassword, 'Password');
	strErrorMsg += validateText(objForm.txtPasswordConfirm, 'Confirm Password');
	if (strErrorMsg == '')
        	strErrorMsg += validatePassword(objForm.txtPassword.value, objForm.txtPasswordConfirm.value);
	if (strErrorMsg != '') 
	{
		displayErrorMsg(strErrorMsg);
		return false
	}
	else
	{
		return true
	}	
}


function validateForgotPassword(objForm)
{
	strErrorMsg = ''
	if (!validateEmail(objForm.txtEmail.value))
		strErrorMsg += 'Email \n';
	if (strErrorMsg != '') 
	{
		displayErrorMsg(strErrorMsg);
		return false
	}
	else
	{
		return true
	}	
}

function validateInstitution(objForm)
{
	strErrorMsg = ''
	strErrorMsg += validateSelect(objForm.cboInstitution, 'Institution', '');
	if (strErrorMsg != '') 
	{
		alert('You must choose an Institution');
		return false
	}
	else
	{
		return true
	}	
}



function handleEnter (field, event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		if (keyCode == 13) {
			var i;
			for (i = 0; i < field.form.elements.length; i++)
				if (field == field.form.elements[i])
					break;
			i = (i + 1) % field.form.elements.length;
			field.form.elements[i].focus();
			return false;
		} 
		else
		return true;
	}      

function confirmUpdateProfile(url, page)
{
	if (page == 'profile')
	{
		objForm = document.frmData;
		if (confirm('You are about to leave the page, do you want to save your profile data.'))
		{
			if (validateRegistration(objForm, 'edit'))
				objForm.submit();
			else
				return false;			
		}
		return true;
	}
	else
	{
		location.href = url
	}
	
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}