//  modified from http://javascript.about.com/library/scripts/blformvalidate.htm

function inValidCharSet(str,icharset)
{
	var result = true;

	for (var i=0;i<str.length;i++)
		if (icharset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}

	return result;
}

function validRequired(formField,fieldLabel)
{
	var result = true;

	formField.value = trimString(formField.value);
	if (formField.value == "" && formField.disabled==false)
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}

	return result;
}

function toFirstCase(s)
{
	var s_array = s.split(" ");
	var s_num=0;
	var fs="";
	var formatted_s="";
	while (s_num < s_array.length)
	{
		fs = "";
		fs = s_array[s_num];
		formatted_s = formatted_s + fs.substring(0,1).toUpperCase() + fs.substring(1,fs.length).toLowerCase() + " ";
	  	s_num++;
  	}

	return trimString(formatted_s);
}

function trimString(s)
{
  // Remove leading spaces and carriage returns
  while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r'))
  {
    s = s.substring(1,s.length);
  }

  // Remove trailing spaces and carriage returns
  while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r'))
  {
    s = s.substring(0,s.length-1);
  }
  return s;
}

function validEmail(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;

	formField.value = trimString(formField.value);
	if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
	{
		alert("Please enter a valid/complete email address: userid@somedomain.com");
		formField.focus();
		result = false;
	}

  return result;
}

function isEmailAddr(email)
{
  var result = false;
  /*var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }*/
 var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(email)) {
		result = true;
	}
  return result;
}

function validTime()
{
	var timenow = new Date();
	var clienttime = document.getElementById('clienttime').value;
	var timedifferent = document.getElementById('timedifferent').value;
	if (timenow - clienttime - timedifferent <= 30000)
	{
		alert('You can only post a new comment every 30 seconds.');
		return false;
	}
	else
		return true;
}

function isRadioRequired(buttonGroup,fieldLabel)
{
	var result = true;

    for (var i=0; i < buttonGroup.length; i++)
	{
         if (buttonGroup[i].checked)
		 {
            return result;
         }
    }

	result = false;
	alert('Please enter a value for the "' + fieldLabel +'" field.');
	buttonGroup[0].focus();

	return result;
}

function validLogin(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;

	formField.value = trimString(formField.value);
	
	if( formField.value == "klsetracker.com" ) //temporary enable, until we decide to allow "." for all.. after 1.3.1
	{
		return true;
	}
	
	if (result && ((formField.value.length < 6) || (formField.value.length > 16) || (formField.value.indexOf(' ')!= -1)))
	{
		alert("Please ensure that your "+fieldLabel+ " is between 6 to 16 characters, 6 and 16 inclusive; no spaces.");
		formField.focus();
		result = false;
	}

	if(!inValidCharSet(formField.value, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.0123456789"))
	{
		alert("You have entered invalid characters for the field "+fieldLabel+ ".\nOnly alphabets, numbers and these characters (_-) are allowable.");
		formField.focus();
		result = false;
	}

	return result;
}

function validPass(formField1,formField2,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField2,fieldLabel))
		result = false;

	formField2.value = trimString(formField2.value);
	if (result && (formField1.value != formField2.value))
	{
		alert("Please enter the same password as the one that you have keyed in previously.");
		formField2.focus();
		result = false;
	}

	if(!inValidCharSet(formField2.value, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_0123456789"))
	{
		alert("You have entered invalid characters for the field "+fieldLabel+ ". Only alphanumerics and these characters (_-) are allowable.");
		formField1.focus();
		result = false;
	}

	return result;
}

function isDigit(formField, fieldLabel)
{
	var result = true;

	if(!inValidCharSet(formField.value, "0123456789"))
	{
		alert("You have entered invalid characters for the field "+fieldLabel+ ". Only alphanumerics are allowable.");
		formField.focus();
		result = false;
	}

	return result;
}

function confirmEmail(formField1, formField2, fieldLabel, required)
{
	var result = true;

	if (required && !validRequired(formField2,fieldLabel))
		result = false;

	formField1.value = trimString(formField1.value);
	formField2.value = trimString(formField2.value);
	if (result && (formField1.value != formField2.value))
	{
		alert("Please enter the same email as the one that you have keyed in previously.");
		formField2.focus();
		result = false;
	}

	return result;
}

function validAgreement(formField)
{
	var result = true;

	if (!formField.checked)
	{
		alert('You must click or agree to the Terms of Use before you can complete the registration.');
		formField.focus();
		result = false;
	}

	return result;
}

function validateSignupForm(myfrm)
{
	if (!validLogin(myfrm.login,"Login Name",true)) return false;
	if (!validLogin(myfrm.password,"Password",true)) return false;
	myfrm.login.value = myfrm.login.value.toLowerCase();
	if (!validPass(myfrm.password, myfrm.confirmpass,"Confirm Password",true)) return false;
	if (!isRadioRequired(myfrm.defmarket,"Default market data",true)) return false;
	if (!validEmail(myfrm.email,"Email Address",true)) return false;
	if (!confirmEmail(myfrm.email, myfrm.confirmemail, "Confirm Email Address", true)) return false;
	if (!validRequired(myfrm.name,"Name",true)) return false;
	myfrm.name.value = toFirstCase(myfrm.name.value);
	if (!validRequired(myfrm.contactno,"Contact No",true)) return false;
	if(!isDigit(myfrm.contactno, "Contact No")) return false;
	if (myfrm.occupation.options[myfrm.occupation.selectedIndex].value == "-1")
	{
		alert('Please select a value for the "Occupation" field.');
		return false;
	}
	if (!validRequired(myfrm.country,"Country",true)) return false;
	if (myfrm.state.options[myfrm.state.selectedIndex].value == "-1")
	{
		alert('Please select a value for the "State/Province" field.');
		return false;
	}
	if (!validAgreement(myfrm.agreement)) return false;	return true;
}


function validateLoginForm(myfrm)
{
	if (!validAccLogin(myfrm.username,"Account Login",true)) return false;
	myfrm.username.value = myfrm.username.value.toLowerCase();
	if (!validLogin(myfrm.password,"Password",true)) return false;
	return true;
}

function validateResetPasswordForm(myfrm)
{
	if (!validLogin(myfrm.currPassword,"Current Password",true)) return false;
	if (!validLogin(myfrm.newPassword,"New Password",true)) return false;
	if (!validLogin(myfrm.confirmPassword,"Retype NewPassword",true)) return false;
	if (!validPass(myfrm.newPassword, myfrm.confirmPassword,"Retype NewPassword",true)) return false;

}

function validateLoginActivationForm(myfrm)
{
	if (!validLogin(myfrm.username,"Account Login",true)) return false;
	myfrm.login.value = myfrm.login.value.toLowerCase();
	if (!validLogin(myfrm.password,"Password",true)) return false;
	if (!validRequired(myfrm.key,"Activation Key",true)) return false;
	return true;
}

function validateGetActivationForm(myfrm)
{
	if (!validLogin1(myfrm.login,"Account Login",true)) return false;
	myfrm.login.value = myfrm.login.value.toLowerCase();
	if (!validEmail(myfrm.email,"Email Address",true)) return false;
	return true;
}

function validateFeedbackForm(myfrm)
{
	if (!isRadioRequired(myfrm.fdk_d,"(d)",true)) return false;
	if (!isRadioRequired(myfrm.fdk_g,"(g)",true)) return false;
	if (!isRadioRequired(myfrm.fdk_h,"(h)",true)) return false;
	if (!validEmail(myfrm.fdk_l,"(l) Email Address",true)) return false;
	return true;
}

function validateSurveyMarketDataForm(myfrm)
{
	if (!validEmail(myfrm.fdk_g,"(g) Email Address",true)) return false;
	return true;
}

function validateMessageForm(myfrm)
{
	if (!validRequired(myfrm.to,"To",true)) return false;
	if (!validRequired(myfrm.subject,"Subject",true)) return false;
	if (!validRequired(myfrm.message,"Message",true)) return false;
	return true;
}

function allDigits(formField, fieldLabel)
{
	var results = validRequired(formField,fieldLabel);
	if(results == false) return false;
	
	if ( !inValidCharSet(formField.value,"0123456789") || formField.value.length==0)
	{
		alert("Please enter integer or digits for "+fieldLabel);
		formField.focus();
		return false;
	}

	return true;
}

function validateContactForm(myfrm)
{
	if (!validRequired(myfrm.name,"Name",true)) return false;
	if (!validEmail(myfrm.email,"Email Address",true)) return false;
	if (!allDigits(myfrm.contactno, "Contact No.")) return false;
	if (myfrm.contactno.value.length < 8)
	{
		alert("Please enter the correct Contact No.");
		return false;
	}
	if (!validRequired(myfrm.subject,"Subject",true)) return false;
	if (!validRequired(myfrm.message,"Message",true)) return false;
	return true;
}

function validateEmailForm(myfrm)
{
	if (!allDigits(myfrm.days, "field"))
		return false;

	return true;
}

function validateEventForm(myfrm)
{
/*	if (!validRequired(myfrm.title,"Title",true)) return false;
	if (!validRequired(myfrm.name,"Name",true)) return false;
	if (!validRequired(myfrm.mail_address,"Mailing Address",true)) return false;
	if (!allDigits(myfrm.postcode, "Postal Code")) return false; 
	if (!validEmail(myfrm.email,"Email Address",true)) return false;
*/

	if (!validEmail(myfrm.email,"Email Address",true)) return false;
	if (myfrm.paymethod.value!=1)
	{
		if (!validRequired(myfrm.chequebox,"Cheque No.",true)) return false;
	}
	
	if (!validRequired(myfrm.contact_no,"Contact Number",true)) return false;
	if (!allDigits(myfrm.contact_no, "Contact Number")) return false; 
/*
	if(validateLoginForm(myfrm))
	{
		
		if (myfrm.paymethod.value!=1)
		{
			if (!validRequired(myfrm.chequebox,"Cheque No.",true)) return false;
		}
	}
	else
		return false;
*/		
	return true;
}


function validateMainPageEmailForm(myfrm)
{
	if (!validEmail(myfrm.enter_email,"Email Address",true)) return false;

	return true;
}

//Added by fy 2008-05-09
function validateEditProfileForm(myfrm)
{
	if (!validEmail(myfrm.email,"Email Address",true)) return false;
	if (!confirmEmail(myfrm.email, myfrm.confirmemail, "Confirm Email Address", true)) return false;
	if (!validRequired(myfrm.name,"Name",true)) return false;
	myfrm.name.value = toFirstCase(myfrm.name.value);
	if (myfrm.occupation.options[myfrm.occupation.selectedIndex].value == "-1")
	{
		alert('Please select a value for the "Occupation" field.');
		return false;
	}
	if (!validRequired(myfrm.country,"Country",true)) return false;
	if (myfrm.state.options[myfrm.state.selectedIndex].value == "-1")
	{
		alert('Please select a value for the "State/Province" field.');
		return false;
	}
}


//Added by fy 2008-06-10
function validatePrvAddSubscriptionForm(myfrm)
{
	if (!validRequired(myfrm.login,"User Login",true)) return false;
	if (!validRequired(myfrm.startdate,"Start Date (YYYY-MM-DD)",true)) return false;
}


//Added by fy 2008-06-11
function validateTestimonialForm(myfrm)
{
	if (!validRequired(myfrm.name,"Name",true)) return false;
	if (!validRequired(myfrm.detail,"Detail",true)) return false;
}

//Added by FY 2008-07-24
function validateWorkLogTelemarketingForm(myfrm)
{
	if (!validRequired(myfrm.user_name,"User Name",true)) return false;
	if (!validEmail(myfrm.user_email,"Email",true)) return false;
	if (!validRequired(myfrm.contact_no,"Contact No",true)) return false;
}


//Added by fy 2008-07-22
function keyRestrict(e, validchars) {
 	var key='', keychar='';
 	key = getKeyCode(e);
 	if (key == null) return true;
 		keychar = String.fromCharCode(key);
 		keychar = keychar.toLowerCase();
 		validchars = validchars.toLowerCase();
 	if (validchars.indexOf(keychar) != -1)
  		return true;
	if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
 		return true;
 return false;
}

function getKeyCode(e)
{
 	if (window.event)
    	return window.event.keyCode;
 	else if (e)
    	return e.which;
 	else
    	return null;
}

//added by CN 8 Apr 2011
function validAccLogin(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;

	formField.value = trimString(formField.value);
	
	if( formField.value == "klsetracker.com" ) //temporary enable, until we decide to allow "." for all.. after 1.3.1
	{
		return true;
	}
	
	if (result && ((formField.value.length < 6) || (formField.value.indexOf(' ')!= -1)))
	{
		alert("Please ensure that your "+fieldLabel+ " is not less than 6 characters; and no spaces.");
		formField.focus();
		result = false;
	}

	if(!inValidCharSet(formField.value, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_@.0123456789"))
	{
		alert("You have entered invalid characters for the field "+fieldLabel+ ".\nOnly alphabets, numbers and these characters (_-) are allowable.");
		formField.focus();
		result = false;
	}

	return result;
}

//remove checking for number of characters of account login, change_passform.php,  added by CN 4 may 2011
function validAccLogin(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;

	formField.value = trimString(formField.value);
	
	if( formField.value == "klsetracker.com" ) //temporary enable, until we decide to allow "." for all.. after 1.3.1
	{
		return true;
	}
	
	/*if (result && ((formField.value.length < 6) || (formField.value.indexOf(' ')!= -1)))
	{
		alert("Please ensure that your "+fieldLabel+ " is not less than 6 characters; and no spaces.");
		formField.focus();
		result = false;
	}*/

	if(!inValidCharSet(formField.value, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_@.0123456789"))
	{
		alert("You have entered invalid characters for the field "+fieldLabel+ ".\nOnly alphabets, numbers and these characters (_-) are allowable.");
		formField.focus();
		result = false;
	}

	return result;
}

