/**
* @author: Amazing Derrick Sey
* @email:  amazingderrick@gmail.com
* @script:  client-script purpose. EduLink - Virtual Research Unit
* @All rights reserved 2009
* @JavaScript Document 
*/
// Virtual Research Unit(EduLink) namespace
var vru = {};

/**
* @Function to trim strings with whitespaces
* @Params : String (str)
* @retrun : boolean
*/
function trim(str) {
  str = this != window? this : str;
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

/**
 * Verifies if the string is in a valid email format
 * @Params : string
 * @return : boolean
 */
vru.isValidEmail = function(str)
{
	if(trim(str)){
		var pattern = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
		return pattern.test(str);
	}
}



/**
 * Verifies if the string is in a valid email format
 * @Params : form
 * @return : boolean
 */
vru.isUsernameAllowed = function (strUname){
		var strUname = trim(strUname);
		if(strUname.length<6)
		{
			alert('Input Format Error: \nPlease username entered cannot be less than 6 characters');
			window.document.forms.formAddUser.username.value = '';
			window.document.forms.formAddUser.username.focus();
			return false;
			}else if (isNaN(parseFloat(strUname)) == false)
			{
				alert('Input Format Error: \nPlease your username cannot be a number!');
				window.document.forms.formAddUser.username.value = '';
				window.document.forms.formAddUser.username.focus();
				return false;
			}else if ( 
			(strUname.lastIndexOf("?") != "-1") || 
			(strUname.lastIndexOf("/") != "-1") ||
			(strUname.lastIndexOf("\\") != "-1") ||
			(strUname.lastIndexOf("*") != "-1") ||
			(strUname.lastIndexOf("?") != "-1") ||
			(strUname.lastIndexOf("<") != "-1") ||
			(strUname.lastIndexOf(">") != "-1") ||
			(strUname.lastIndexOf("|") != "-1") 
			 ){
				alert( "Input Format Error: \nPlease a Username cannot contain any of the following characters \n \\ / * : ? < > |" );
				window.document.forms.formAddUser.username.value = '';
			}	else 
				return true;
	}

/**
 * Verifies if the string is in a valid email format
 * @Params : string
 * @return : boolean
 */
vru.isEmail = function(email)
{
	if(trim(email)) {
		var isvalid = vru.isValidEmail(email);
		if(isvalid == false ){
			alert('Input Format Error: \nPlease email address entered is not valid! try again');
		}	
	}
}

/**
 * Verifies if the string is in a valid email format
 * @Params : form
 * @return : boolean
 */
vru.isPasswordAllowed = function (strpwd){
		var strUname = trim(strpwd);
		if(strpwd.length<6)
		{
			alert('Input Format Error: \nPlease Password entered cannot be less than 6 characters');
			window.document.forms.formAddUser.password.value = '';
			window.document.forms.formAddUser.password.focus();
			return false;
		}
}
/**
 * Verifies if the string is in a valid email format
 * @Params : form
 * @return : boolean
 */
vru.valPassword = function (f) {
	var aok = true;
	var password = trim($('password').value);
	var passwordv = trim($('passwordv').value);

	if(password!= passwordv) {
		f.elements['password'].value = '';
		f.elements['passwordv'].value = '';
		alert('Password Error: \nPasswords entered do not match!');
		window.document.forms.formAddUser.password.focus();

		return !aok;
	} else
	
	return aok;
}

/**
 * Verifies if the string is in a valid email format
 * @Params : string
 * @return : boolean
 */
vru.valSubmitReg = function(btn)
{
	var uname = trim($('username').value);
	var email = trim($('email').value);
	var pword = trim($('password').value);
	var simg = trim($('captcha_id').value);
	if( (uname=="") || (email == "") || (pword=="") || (simg=="") || (vru.isValidEmail(email)==false) || (vru.isUsernameAllowed(uname)==false) ) {
		 alert('Form Submittion Error: \nPlease problem with form submittion, correct them and try again');
		 document.MM_returnValue = false;
	}else {
		document.MM_returnValue = true;
	}	
	
}

/**
 * Verifies if the string does not contain any illegal character
 * @Params : string
 * @Return : boolean
 */
vru.isLegalChar = function(str){
	var ok = false;
	if( (str.lastIndexOf("?") != "-1") || 
			(str.lastIndexOf("/") != "-1") ||
			(str.lastIndexOf("\\") != "-1") ||
			(str.lastIndexOf("*") != "-1") ||
			(str.lastIndexOf("?") != "-1") ||
			(str.lastIndexOf("<") != "-1") ||
			(str.lastIndexOf(">") != "-1") ||
			(str.lastIndexOf("|") != "-1") )
	{
		return ok;
	}else return !ok;
}
 

/*Function to validate form
*@Param: input strings
*@return: none
*/
vru.validateContactForm = function ()
{
	var cform = window.document.contactusform;
	var fname = cform.fullname.value;
	var email = cform.email.value;
	var msg = cform.message.value;
	
	if(fname == '' || email == '' || msg == ''){
	alert('Form Submission Error: \nPlease there are some required fields, fill them and try again!');
	 document.MM_returnValue = false;
	}else if (isNaN(fname) == false)
			{
				alert('Input Format Error: \nPlease your Full Name cannot be a number!');
				fname = '';
				document.MM_returnValue = false;
			}else if ( vru.isLegalChar(fname)==false){
				alert( "Input Format Error: \nPlease a Full Name cannot contain any of the following characters \n \\ / * : ? < > |" );
				fname.value = '';
				document.MM_returnValue = false;
			}
	else if(vru.isValidEmail(email)==false){
		alert('Form Submission Error: \nPlease email address entered is not in the valid format!');
		document.MM_returnValue = false;
		}
	else {
		 document.MM_returnValue = true;
	}

}


/*Function to enable terms form button
*@Param: element button
*@return: none
*/
vru.iagree = function (f)
{
	$('regbtn').disabled = ($('terms').checked) ? false:true;
}

/*Function to check year diff
*@Param: int
*@return: boolean
*/
vru.valYear = function ()
{
	var fdate = trim($('fdate').value);
	var tdate = trim($('tdate').value);
	if(fdate>tdate){
		return false;
		}else return true;
}

/*Function to check year diff
*@Param: int
*@return: boolean
*/
vru.valFile = function ()
{
	var cv = trim($('cv').value);
	var mp = trim($('mp').value);
	if ( (cv.lastIndexOf(".doc") == "-1") && (cv.lastIndexOf(".pdf") == "-1") && (cv.lastIndexOf(".docx") == "-1") &&
		 (mp.lastIndexOf(".doc") == "-1") && (mp.lastIndexOf(".pdf") == "-1") && (mp.lastIndexOf(".docx") == "-1")																						 ){
			return false
		}else return true;
}

/*Function to validate form workshop application 
*@Param: element button
*@return: none
*/
vru.valAppSubmit = function(pressbutton) {
	var fname = trim($('fname').value);
	var lname = trim($('lname').value);
	var email = trim($('email').value);
	var acode = trim($('acode').value);
	var phone = trim($('phone').value);
	
	
if( $('workshop').value == '-1' || 
$('prefix').value == '-1' ||
$('fname').value == '' ||
$('lname').value == '' ||
$('gender').value == '-1' ||
$('age').value == '-1' ||
$('pcountry').value == '-1' ||
$('email').value == '' ||
$('phone').value == '' ||
$('acode').value == '' ||
$('mailaddress').value == '' ||
$('resaddress').value == '' ||
$('jobtitle').value == '' ||
$('dept').value == '' ||
$('city').value == '' ||
$('wcountry').value == '' ||
$('jobdur').value == '' ||
$('degree').value == '' ||
$('institution').value == '' ||
$('location').value == '' ||
$('fdate').value == '' ||
$('tdate').value == '' ||
$('research').value == '' ||
$('memberships').value == '' ||
$('pdate').value == '' ||
$('cv').value == '' ||
$('mp').value == '' ||
$('call').value == '' ||
$('captcha_id').value == '' )
{
	alert('Form Submission Error: \nPlease fill all the required fields and try again!');
	document.MM_returnValue = false; 
	}else if ( ( vru.isLegalChar(fname) == false) || 
			( vru.isLegalChar(lname) == false) )
	{
	alert( "Input Format Error: \nPlease a First or Last Name cannot contain any of the following characters \n \\ / * : ? < > |" );		    document.MM_returnValue = false;
	} else if ( (isNaN(fname) == false) || 
				(isNaN(lname) == false) )
	{
		alert('Input Format Error: \nPlease your First or Last Name cannot be a number!');
		document.MM_returnValue = false;
	}else if(vru.isValidEmail(email)==false){
		alert('Form Submission Error: \nPlease email address entered is not in the valid format!');
		document.MM_returnValue = false;
	}else if ( (isNaN(acode) == true) || 
				(isNaN(phone) == true) )
	{
		alert('Input Format Error: \nPlease your Area Code or Phone Number cannot be a letter!');
		document.MM_returnValue = false;
	}else if(vru.valYear()==false){
		alert('Form Submission Error: \nPlease check Date attended differences. From year is greater than To year!');
		document.MM_returnValue = false;
	}else if(vru.valFile()==false){
		alert( "Form Submission Error: \nPlease file to upload should be in the correct format '.doc' or '.pdf' or '.docx'!" );
		document.MM_returnValue = false;
	}else {
		 document.MM_returnValue = true;
	}
}