// A: Check Email
var gb_separator = "%%%%,%%%%";

function IsValidEmail(asTempString)
{
   var atCount = 0;
   var periodCount = 0;
   var strLen = asTempString.length;
   var i;
   var temp;
   var validchar= /^\w|[@.-]$/; //valid char = a-z, A-Z, @ , . , _ , -

   if (asTempString == '')
     return false;
     
   for (i = 0; i < strLen; i++)
      {
      temp = asTempString.substring(i, i+1);
	  if (temp == '@') 
         atCount++;
      if (temp == '.') 
         periodCount++;
	  if (!validchar.test(temp)){
//		alert(temp)
		return false;
		}
	  }
   if ((atCount == 1) && (periodCount > 0))
      return true;
   else
      return false;

}
// B: Trim Function
function trim(inputString) {
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") {
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") {
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) {
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length);
   }
   return retValue;
}

function resetForm(f){
	f.reset();
}

//---------------------------- Generate the JS For the Edit And Add Form ----------------------------//
function CheckFormByMakeForm(f){
	var DateErrorMessage, bNec;
	
	for (i = 0; i < NecArray.length; i++){	
		bNec = (NecArray[i] == "true" || NecArray[i] == "True" || NecArray[i] == "1");// NecArray[i] == 1 is for php
		if(bNec){
			if (TypeArray[i] == "checkbox" || TypeArray[i] == "checkbox-sql"){
				if (checkEmptyCRS(1,f.elements[FieldArray[i]],ShowArray[i])) return false;
			}
			else if (TypeArray[i] == "radio" || TypeArray[i] == "radio-sql"){
				if (checkEmptyCRS(1,f.elements[FieldArray[i]],ShowArray[i])) return false;
			}
			<!-- Raymond 21/4/08
			<!--else if (TypeArray[i] == "select")
			else if (TypeArray[i] == "select" || TypeArray[i] == "select_2")
			{
				if (TypeArray[i] == "select_2"){
				}
				else {
					if (checkEmptyCRS(2,f.elements[FieldArray[i]],ShowArray[i])) return false;
				}
			}
			else if (TypeArray[i] == "login")
			{
				if (checkLogin(f.elements[FieldArray[i]],ShowArray[i])) return false;
			}
			else{
				if (checkEmpty(f.elements[FieldArray[i]],ShowArray[i])) return false;
			}
		}
		if(TypeArray[i] == "num"){
			if (checkInt(f.elements[FieldArray[i]],ShowArray[i], bNec)) return false;
		}
		if(TypeArray[i] == "fee"){
			if (checkFee(f.elements[FieldArray[i]],ShowArray[i], bNec)) return false;
		}
		if(TypeArray[i] == "email"){
			if (checkEmail(f.elements[FieldArray[i]], bNec)) return false;
		}
		if(TypeArray[i] == "password"){
			if (checkPwd(f.elements[FieldArray[i]], "", 6)) return false;
		}
		if (TypeArray[i] == "date")
		{
			if (checkDate(f.elements[FieldArray[i]], bNec)) return false;
		}
	}
	return true;
}
//---------------------------- Family of check Function In JS ----------------------------// 
function checkEmpty(formObj, display){
  
  if (trim(formObj.value) == "")
  {
	  alert("Please fill in " + display);
	  formObj.focus();
	  formObj.select();
	  return true;
  }
  return false;
}
function checkEmptyTab(formObj, display, tabId){
  if (trim(formObj.value) == "")
  {	
	  ShowTab(tabId);
	  alert("Please fill in " + display);
	  formObj.focus();
	  formObj.select();
	  return true;
  }
  return false;
}

function checkLogin(formObj, display){
  if (checkEmpty(formObj, display)) return true;
  var LoginName =  formObj.value;
  if (LoginName.indexOf(" ") != -1)
  {
	  alert("No space is allowed in " + display);
	  formObj.focus();
	  formObj.select();
	  return true;
  }

  if (trim(LoginName).length < 6)
  {
	  alert(display + " should be at least 6 characters");
	  formObj.focus();
	  formObj.select();
	  return true;
  }
  
  return false;
}
function checkLoginTab(formObj, display, tabId){
  if (checkEmptyTab(formObj, display, tabId)) return true;
  var LoginName =  formObj.value;
  if (LoginName.indexOf(" ") != -1)
  {
	  ShowTab(tabId);
	  alert("No space is allowed in " + display);
	  formObj.focus();
	  formObj.select();
	  return true;
  }
  return false;
}

function checkEmptyCRS(CRS, formObj, display){
	//alert("trim(CRS) = " + trim(CRS));
	if(trim(CRS) == 1 || trim(CRS) == '1')
	{
		// radio, checkBox
		var j = 0;
		var bHasSelected = false;
		
		
		if (isNaN(formObj.length))
		{	// Single radio, checkBox
			if(!formObj.checked){
				if (display != ""){
					alert("Please select " + display);
				}
				return true;
			}
		}
		else
		{	// Multi radio, checkBox
			for(j = 0; j < formObj.length; j++){
				if (formObj[j].checked){
					bHasSelected = true;
				}
			}
			if (!bHasSelected){
				if (display != ""){
					alert("Please select " + display);
				}
				return true;
			}
		}
	}
	else{
		//alert("formObj = " + formObj);
		if (trim(formObj.value) == "")
		  {
			  if (display != ""){
					alert("Please select " + display);
					formObj.focus();
			  }
			  return true;
		  }
	}
	return false;
}

function checkEmptyCRSTab(CRS, formObj, display, tabId){
	if(trim(CRS) == 1 || trim(CRS) == '1')
	{
		// radio, checkBox
		var j = 0;
		var bHasSelected = false;
		if (isNaN(formObj.length))
		{	// Single radio, checkBox
			if(!formObj.checked){
				ShowTab(tabId);
				alert("Please select " + display);
				return true;
			}
		}
		else
		{	// Multi radio, checkBox
			for(j = 0; j < formObj.length; j++){
				if (formObj[j].checked){
					bHasSelected = true;
				}
			}
			if (!bHasSelected){
				ShowTab(tabId);
				alert("Please select " + display);
				return true;
			}
		}
	}
	else{
		if (trim(formObj.value) == "")
		  {
			  ShowTab(tabId);
			  alert("Please select " + display);
			  formObj.focus();
			  return true;
		  }
	}
	return false;
}

function checkInt(formObj, display, nec){
  if (nec)
  {
	  if(checkEmpty(formObj, display)) return true;
  }
  if (isNaN(formObj.value))
  {
	  alert(display + " has to be integer");
	  formObj.focus();
	  formObj.select();
	  return true;
  }
  return false;
}

function checkInt_positive(formObj, display, nec){
  if (nec)
  {
	  if(checkEmpty(formObj, display)) return true;
  }
  if (isNaN(formObj.value))
  {
	  alert(display + " has to be integer");
	  formObj.focus();
	  formObj.select();
	  return true;
  }
  if (parseInt(formObj.value) < 0)
  {
	  alert(display + " has to be larger than 0");
	  formObj.focus();
	  formObj.select();
	  return true;
  }
  return false;
}
function checkIntTab(formObj, display, nec, tabId){
  if (nec)
  {
	  if(checkEmptyTab(formObj, display, tabId)) return true;
  }
  if (isNaN(formObj.value))
  {
      ShowTab(tabId);
	  alert(display + " has to be integer");
	  formObj.focus();
	  formObj.select();
	  return true;
  }
  return false;
}

function checkFee(formObj, display, nec){
  if(checkInt(formObj, display, nec)) return true;
  if (formObj.value != "")
  {
		if (!(formObj.value >= 0)){
			alert(" Please insert a positive number");
			formObj.focus();
			formObj.select();
			return true;
		}
  }
}


















function checkDate(formObj, nec){
   if (nec)
   {
	   if(checkEmpty(formObj, "Date")) return true;
   }
   ErrorMsg = IsDate(formObj.value);
   if (trim(formObj.value != ""))
   {
	   if ( ErrorMsg != "")
	   {
			alert('Invalid date format!\n\n Please use yyyy\/mm\/dd format, \n\ne.g., 2002/08/20');
			formObj.focus();
			formObj.select();
			return true;
	   }
   }
   return false;
}
function checkDateTab(formObj, nec, tabId){
	alert(formObj);
   if (nec)
   {
	   if(checkEmptyTab(formObj, "Date", tabId)) return true;
   }
   ErrorMsg = IsDate(formObj.value);
   if (trim(formObj.value != ""))
   {
	   if ( ErrorMsg != "")
	   {	
		    ShowTab(tabId);
			alert('Invalid date format!\n\n Please use yyyy\/mm\/dd format, \n\ne.g., 2002/08/20');
			formObj.focus();
			formObj.select();
			return true;
	   }
   }
   return false;
}

function checkPwd(formObj, confirmObj, len){

	if (confirmObj == "[object]")
	{
		if (trim(formObj.value) != trim(confirmObj.value))
		{
			alert("Password unmatched!");
			formObj.focus();
			formObj.select();
			return true;
		}
	}
	AllowWords = /[^0-9A-Za-z_-]/;
	if (formObj.value.length < len || formObj.value.match(AllowWords)){
		alert('The password has to be at least '+ len +' letters\n\nPlease use the Alphabet or number(a-z, A-Z, 0-9),\nThere is no space and symbol!');
		formObj.focus();
		formObj.select();
		return true;
	}
	return false;
}
function checkPwdTab(formObj, confirm, len, tabId){
	/*
	if (trim(confirm) != "")
	{
		if (trim(formObj.value) != trim(form.elements[confirm].value))
		{
			ShowTab(tabId);
			alert("Password unmatched!");
			formObj.focus();
			formObj.select();
			return true;
		}
	}
	*/
	AllowWords = /[^0-9A-Za-z_-]/;
	if (formObj.value.length < len || formObj.value.match(AllowWords)){
		ShowTab(tabId);
		alert('The password has to be at least '+ len +' letters\n\nPlease use the Alphabet or number(a-z, A-Z, 0-9),\nThere is no space and symbol!');
		formObj.focus();
		formObj.select();
		return true;
	}
	return false;
}

function checkEmail(formObj, nec){
	if(nec || trim(formObj.value) != "")
	{
		if (!IsValidEmail(formObj.value))
		{
			alert("Please fill in an valid email account");
			formObj.focus();
			formObj.select();
			return true;
		}
	}
	return false;
}
function checkEmailTab(formObj, nec, tabId){
	if(nec || trim(formObj.value) != "")
	{
		if (!IsValidEmail(formObj.value))
		{
			ShowTab(tabId);
			alert("Please fill in an valid email account");
			formObj.focus();
			formObj.select();
			return true;
		}
	}
	return false;
}

function ShowTab(tabId){
	if (trim(tabId) != ""){
		tabToggle(eval("hdr_"+tabId));
		displayToggle(eval("pnl_"+tabId));
	}
}

function select_All(formObj){
	var j = 0;
		var bClearAll = true;
		if (isNaN(formObj.length))
		{	// Single radio, checkBox
			formObj.checked = !formObj.checked;
			bClearAll = !formObj.checked;
		}
		else
		{	// Multi radio, checkBox
			for(j = 0; j < formObj.length; j++){
				if (!formObj[j].checked)
				{
					bClearAll = false;
					break;
				}
			}
			for(j = 0; j < formObj.length; j++){
				formObj[j].checked = !bClearAll;
			}
		}
		return !bClearAll;
}

function checkbox_To_List(formObj){
	var j = 0;
	var returnList = "a";
	if (isNaN(formObj.length))
	{	// Single checkBox
		if(formObj.checked){
			returnList = returnList + "," + formObj.value;
		}
	}
	else
	{	// Multi checkBox
		for(j = 0; j < formObj.length; j++){
			if (formObj[j].checked){
				returnList = returnList + "," + formObj[j].value;
			}
		}
	}
	returnList = returnList.substring(2,returnList.length);
	return returnList;
}

function checkbox_To_List_2(formObj, separator){
	var j = 0;
	var returnList = "a";
	if (isNaN(formObj.length))
	{	// Single checkBox
		if(formObj.checked){
			returnList = returnList + separator + formObj.value;
		}
	}
	else
	{	// Multi checkBox
		for(j = 0; j < formObj.length; j++){
			if (formObj[j].checked){
				returnList = returnList + separator + formObj[j].value;
			}
		}
	}
	returnList = returnList.substring(1+separator.length,returnList.length);
	return returnList;
}

function checkbox_Count(formObj, separator){
	var j = 0;
	var returnCount = 0;
	if (isNaN(formObj.length))
	{	// Single checkBox
		if(formObj.checked){
			returnCount = 1;
		}
	}
	else
	{	// Multi checkBox
		for(j = 0; j < formObj.length; j++){
			if (formObj[j].checked){
				returnCount++;
			}
		}
	}
	return returnCount;
}


function formObjEnable(chxObj, condition, disableColor, focus){
	chxObj.disabled = !condition;
	if (condition){
		chxObj.style.borderColor = "#243786";
		if (focus == 1){
			chxObj.focus();
			chxObj.select();
		}
	}
	else{
		chxObj.style.borderColor = disableColor;
	}
}

function formObjReadOnly(chxObj, condition, readOnlyColor, focus){
	chxObj.readOnly = !condition;
	if (condition){
		chxObj.style.borderColor = "#CCCCCC";
		if (focus == 1){
			chxObj.focus();
			chxObj.select();
		}
	}
	else{
		chxObj.style.borderColor = readOnlyColor;
	}
}

function formChkBox(chkObj){
	for (var i=0; i<chkObj.length; i++){
		if (chkObj[i].checked){ 
			return true;
		}
	}
	alert("Please check one of the register boxes");
	chkObj[0].focus();
	return false;
}