// trim string
String.prototype.trim = function() {
 // skip leading and trailing whitespace
 // and return everything in between
  var x=this;
  x=x.replace(/^\s*(.*)/, "$1");
  x=x.replace(/(.*?)\s*$/, "$1");
  return x;
}

//check if the string field is empty
function isEmpty(str){
  if (str==null || str==0 ||  str.value==""){
    return true;
  }
  else{
    var strValue = str.trim();
	if (strValue==""){
      return true;
    }
	else{
      return false;
    }
  }
}
//check ID card NO
function chkIdentityNo(IdNo)
{
		var len=IdNo.length;
		switch(len){
		case 15:
			if(Test("^[0-9]{15}$", IdNo)){return true;}
			else{return false;}
		case 18:
			if(Test("^[0-9]{17}[0-9a-zA-Z]$", IdNo)){return true;}
			else{return false;}
		default:
			return false;}
}

function Test(sre, s)
{
	var re = new RegExp(sre,"ig");
	return re.test(s);
}

// Check that a string contains only letters and numbers
function isAlphanumeric(string, ignoreWhiteSpace) {
	if (string.search) {
		if ((ignoreWhiteSpace && string.search(/[^\w\s]/) != -1) || (!ignoreWhiteSpace && string.search(/\W/) != -1)) return false;
	}
	return true;
}

// Check that a string contains only letters
function isAlphabetic(string, ignoreWhiteSpace) {
	if (string.search) {
		if ((ignoreWhiteSpace && string.search(/[^a-zA-Z\s]/) != -1) || (!ignoreWhiteSpace && string.search(/[^a-zA-Z]/) != -1)) return false;
	}
	return true;
}

// Check that a string contains only numbers
function isNumeric(string, ignoreWhiteSpace) {
	if (string.search) {
		if ((ignoreWhiteSpace && string.search(/[^\d\s]/) != -1) || (!ignoreWhiteSpace && string.search(/\D/) != -1)) return false;
	}
	return true;
}

//Check for correct syntax of a given email address.
function isEmailValid(checkThisEmail)
{
	var myEMailIsValid = true;
	var myAtSymbolAt = checkThisEmail.indexOf('@');
	var myLastDotAt = checkThisEmail.lastIndexOf('.');
	var mySpaceAt = checkThisEmail.indexOf(' ');
	var myLength = checkThisEmail.length;
	
	
	// at least one @ must be present and not before position 2
	// @yellow.com : NOT valid
	// x@yellow.com : VALID
	
	if (myAtSymbolAt < 1 ) 
	 {myEMailIsValid = false}
	
	
	// at least one . (dot) afer the @ is required
	// x@yellow : NOT valid
	// x.y@yellow : NOT valid
	// x@yellow.org : VALID
	
	if (myLastDotAt < myAtSymbolAt) 
	 {myEMailIsValid = false}
	
	// at least two characters [com, uk, fr, ...] must occur after the last . (dot)
	// x.y@yellow. : NOT valid
	// x.y@yellow.a : NOT valid
	// x.y@yellow.ca : VALID
	
	if (myLength - myLastDotAt <= 2) 
	 {myEMailIsValid = false}
	
	
	// no empty space " " is permitted (one may trim the email)
	// x.y@yell ow.com : NOT valid
	
	if (mySpaceAt != -1) 
	 {myEMailIsValid = false}
	
	
	//if (myEMailIsValid == true)
	// {alert("email is VALID")}
	//else
	// {alert("email is NOT valid!")}
	
	
	return myEMailIsValid
} 

function setItem(strFormFieldName,strToFieldName){
  var objFromField = document.forms[0].elements[strFormFieldName];
  var objToField   = document.forms[0].elements[strToFieldName];
  var arrFromOrigin = new Array();
  var arrFrom       = new Array();
  var arrToOrigin   = new Array();
  var arrTo         = new Array();
  var arrFromSelected = new Array();
  var arrMove = new Array();
  var arrNotMove = new Array();
  var intCount = 0;
  var intCount2 = 0;
  var isSame = false;
  if (objFromField.length == 0){
    return false;
  }
  for (i = 0; i < objFromField.length; i++) {
    if (objFromField.options[i].selected == true){
      arrFromSelected[intCount] = new Array();
      arrFromSelected[intCount][0] = objFromField.options[i].text;
      arrFromSelected[intCount][1] = objFromField.options[i].value;
      intCount++;
    }
    else{
      arrFromOrigin[intCount2] = new Array();
      arrFromOrigin[intCount2][0] = objFromField.options[i].text;
      arrFromOrigin[intCount2][1] = objFromField.options[i].value;
      intCount2++;
    }
  }
  intCount = 0;
  intCount2 = 0;
  if (arrFromSelected.length == 0){
    return false;
  }
  if (objToField.length == 0){
    arrTo = arrFromSelected;
    arrFrom = arrFromOrigin;
  }
  else{
    for (i = 0; i < objToField.length; i++) {
      arrToOrigin[intCount] = new Array();
      arrToOrigin[intCount][0] = objToField.options[i].text;
      arrToOrigin[intCount][1] = objToField.options[i].value;
      intCount++;
    }
    intCount = 0;
    if (arrToOrigin.length == 0){
      arrTo = arrFromSelected;
      arrFrom = arrFromOrigin;
    }
    else{
      for (i=0;i<arrFromSelected.length;i++){
        isSame = false;
        for(j=0;j < arrToOrigin.length ; j++){
          if (arrFromSelected[i][1] === arrToOrigin[j][1]){
            isSame = true;
            break;
          }
        }
        if (isSame){
          arrNotMove[intCount2] = arrFromSelected[i];
          intCount2++;
        }
        else{
          arrMove[intCount] = arrFromSelected[i];
          intCount++;
        }
      }
      intCount2 = 0;
      intCount = 0;
      arrFrom = arrFromOrigin;
      arrTo = arrToOrigin;
      intCount = arrToOrigin.length;
      for(i = 0 ; i < arrMove.length ; i++){
        arrTo[intCount] = arrMove[i];
        intCount++;
      }
    }
  }
  arrFrom.sort();
  objFromField.length = 0;
  for(c = 0; c < arrFrom.length; c++) {
    var no = new Option();
    no.text = arrFrom[c][0];
    no.value  = arrFrom[c][1];
    objFromField[c] = no;
  }
  arrTo.sort();
  objToField.length = 0;
  for(c = 0; c < arrTo.length; c++) {
    var no = new Option();
    no.text = arrTo[c][0];
    no.value  = arrTo[c][1];
    objToField[c] = no;
  }
}

function removeItem(strFormFieldName,strToFieldName){
  setItem(strFormFieldName,strToFieldName);
}

// select all checkbox 
function chkAllCheckbox(input1,input2)
{
    var objForm = document.forms[input1];
    var objLen = objForm.length;
    for (var iCount = 0; iCount < objLen; iCount++)
    {
        if (input2.checked == true)
        {
            if (objForm.elements[iCount].type == "checkbox")
            {
                objForm.elements[iCount].checked = true;
            }
        }
        else
        {
            if (objForm.elements[iCount].type == "checkbox")
            {
                objForm.elements[iCount].checked = false;
            }
        }
    }
}


// al least select a checkbox (for weekday )
function chkSelectedCheckbox(input1)
{
    var objForm = document.forms[input1];
    var objLen = objForm.length;
    var isSelected = false;
    
    for (var iCount = 0; iCount < objLen; iCount++)
    {
        if ((objForm.elements[iCount].type == "checkbox") && (objForm.elements[iCount].checked == true))
        {
            isSelected = true;

        }
    }

    return isSelected;
}


// positive Real Number ??? 
// added by sammy at 1-27-2005
function isPositiveRealNumber(field){

	var valid = ".0123456789" //Special Char define
	var temp;
	
	for (var i=0; i<field.length; i++) {
		temp = "" + field.substring(i, i+1);
		if ((valid.indexOf(temp) == "-1") || isNaN(field)){
			return false;
		}else{
			return true;
		}//if
	}//for
	
}// isPositiveInteger()

