//  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 inAtLeastOneValidCharSet(str,icharset)
{
	var result = false;

	for (var i=0;i<str.length;i++)
		if (icharset.indexOf(str.substr(i,1))>=0)
		{
			return true;
		}

	return result;
}

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

	formField.value = trimString(formField.value);
	if ((formField.value == "00" || 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;
  }
  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 (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, "0123456789"))
	{
		alert("You have entered invalid characters for the field "+fieldLabel+ ".\nOnly numbers 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();
		return false;
	}

	if(formField2.value.length < 7)
	{
		alert("Please enter password with length of at least seven characters.");
		formField1.focus();
		return 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();
		return false;
	}

	if(!inAtLeastOneValidCharSet(formField2.value, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") || !inAtLeastOneValidCharSet(formField2.value, "0123456789"))
	{
		alert("Please enter both numeric and alphabetic characters as your password.");
		formField1.focus();
		return 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 (!validRequired(myfrm.memname,"Name as in I.C",true)) return false;
	if (!validRequired(myfrm.mempname,"Preferred Name",true)) return false;
	if (!validRequired(myfrm.pass,"Password",true)) return false;
	if (!validPass(myfrm.pass, myfrm.cpass,"Confirm Password",true)) return false;
	if (!validRequired(myfrm.nic,"New IC",true)) return false;
	if (!validRequired(myfrm.dob,"Date of Birth",true)) return false;
	if (!validRequired(myfrm.gender,"Gender",true)) return false;
	if (!validRequired(myfrm.lkraceid,"Racial",true)) return false;
//	if (!isRadioRequired(myfrm.defmarket,"Default market data",true)) return false;
	if (!validRequired(myfrm.addr1,"Address",true)) return false;
	if (!validRequired(myfrm.lkctryid,"Country",true)) return false;
	if (!validRequired(myfrm.tel,"Primary Phone",true)) return false;
	if (!allDigits(myfrm.tel, "Primary Phone")) return false;
	if (!isMobileNo(myfrm.tel, "Primary Phone")) 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;
/*	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 (!validAgreement(myfrm.agreement)) return false;	return true;
}


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

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

function validateGetActivationForm(myfrm)
{
	if (!validLogin(myfrm.login,"Tel",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 isMobileNo(formField, fieldLabel)
{
	if (formField.value.length < 10 || formField.value.length > 11)
	{
		alert("Please enter correct mobile number for "+fieldLabel+". (65XXXXXXXX for SG and 601XXXXXXXX for MY)");
		formField.focus();
		return false;
	}


	if ( (formField.value.length == 10 && formField.value.substr(0, 2) != '65') || (formField.value.length == 11 && formField.value.substr(0, 3) != '601') )
	{
		alert("Please enter correct mobile number for "+fieldLabel+". (65XXXXXXXX for SG and 601XXXXXXXX for MY)");
		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 (!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 (!allDigits(myfrm.contact_no, "Contact Number")) 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(validateLoginForm(myfrm))
	{
		
		if (myfrm.paymethod.value!=1)
		{
			if (!validRequired(myfrm.chequebox,"Cheque No.",true)) return false;
		}
	}
	else
		return false;
*/		
	return true;
}

