//  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;
  }
  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 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 validTermsConditions(formField)
{
	var result = true;

	if (!formField.checked)
	{
		alert('You must click or agree to the Terms & Conditions before you can login.');
		formField.focus();
		result = false;
	}

	return result;
}

function validateSignupForm(myfrm)
{
//	if (!validLogin(myfrm.login,"Login Name",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 (!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 (!validRequired(myfrm.name,"Name",true)) return false;
	myfrm.name.value = toFirstCase(myfrm.name.value);
	if (!validRequired(myfrm.contactno,"Contact no.",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 (!validEmail(myfrm.login,"Email Address",true)) return false;
//	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 (!validTermsConditions(myfrm.term)) 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,"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 (!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;
}


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

	return true;
}


function validateEmailProfileForm(myfrm, email)
{
	if(email == myfrm.email.value)
	{
		alert("Please enter different email address");
		return false;
	}	
	if (!validEmail(myfrm.email,"Email Address",true)) return false;
	if (!confirmEmail(myfrm.email, myfrm.confirmemail, "Confirm Email Address", true)) return false;

	return true;
}

function validatePasswordProfileForm(myfrm)
{
	if (!validLogin(myfrm.password,"Password",true)) return false;
	if (!validPass(myfrm.password, myfrm.confirmpass,"Confirm Password",true)) return false;

	return true;
}

function validateNameProfileForm(myfrm)
{
	if (!validRequired(myfrm.name,"Name",true)) return false;
	myfrm.name.value = toFirstCase(myfrm.name.value);

	return true;
}


function validateScreeningForm(myfrm, field)
{
	var BP = false, BT = false, S1 = false, S2 = false, S3 = false;
	if(myfrm.and_rules.checked)
	{
		for (i = 0; i < field.length; i++)
		{
			if(field[i].checked)
			{
				if(field[i].value.indexOf("Break Peak") >= 0)
					BP = true;
				else if(field[i].value.indexOf("Break Trough") >= 0)
					BT = true;
				else if(field[i].value.indexOf("S1") >= 0)
					S1 = true;
				else if(field[i].value.indexOf("S2") >= 0)
					S2 = true;
				else if(field[i].value.indexOf("S3") >= 0)
					S3 = true;
			}
				
		}

		if(BP && (BT || S2))
		{
			alert("Break Peak rule cannot be used together with Break Trough or S2 rules.");
			return false;
		}
		else if(BT && (BP || S1 || S3))
		{
			alert("Break Trough rule cannot be used together with Break Peak, S1 or S3 rules.");
			return false;
		}
		else if(S1 && (BT || S2))
		{
			alert("S1 rules cannot be used together with Break Trough or S2 rules.");
			return false;
		}
		else if(S2 && (BP || S1 || S3))
		{
			alert("S2 rules cannot be used together with Break Peak, S1 or S3 rules.");
			return false;
		}
		else if(S3 && (BT || S2))
		{
			alert("S3 rules cannot be used together with Break Trough or S2 rules.");
			return false;
		}
	}
	
	if(myfrm.tradingday.value==5 || myfrm.tradingday.value==4){
		return confirm('Screen for more than 1 month will take couple minute to process, continue ? ');
	}
	return true;
}

