function moveTo(rf,lf)
{
  var ind = rf.selectedIndex;

  if (ind == -1) return false;

  var opt =  rf.options[ind];
  lf.options[lf.length] =  new Option(opt.text,opt.value);
  rf.options[ind] = null;

  return false;  
}


function setUpSelect(fld,vl) {
 if((eval("document."+fld))&&(vl != "")) {
   var ln = eval("document."+fld+".length;");
   for(i=0;i<ln;i++) {
     if(eval("document."+fld+".options[i].value")==vl) {
       eval("document."+fld+".selectedIndex = i;");
       break;
     }
   }
 }
} // end of setUpSelect

function setUpRadio(fld,vl) {
 if((eval("document."+fld))&&(vl != "")) {
   var ln = eval("document."+fld+".length;");
   for(i=0;i<ln;i++) {
     if(eval("document."+fld+"[i].value")==vl) {
       eval("document."+fld+"[i].checked = true;");
       break;
     }
   }
 }
} // end of setUpRadio

function openResWindowRoll(url,x,y,scrolling) {
  var rnd = Math.round(Math.random()*1000000);
  var newName = 'newWindow'+rnd;
  newWindow=open(url,newName,'menubar=no,scrollbars='+scrolling+',status=no,resizable=no,location=no,width=' + x + ',height=' + y);
  newWindow.focus();
} // end of openResWindowRoll

function openResWindowRoll1(url,x,y,scrolling) {
  var rnd = Math.round(Math.random()*1000000);
  var newName = 'newWindow'+rnd;
  newWindow=open(url,newName,'menubar=no,scrollbars='+scrolling+',status=no,resizable=yes,location=no,width=' + x + ',height=' + y);
  newWindow.focus();
} // end of openResWindowRoll1


function allTrim(text) {
  var ltrim = /^(\s*)(\S*)/;
  var rtrim = /(\S*)(\s*)$/;

  var result=text;
  result=result.replace(ltrim, "$2");
  result=result.replace(rtrim, "$1");
  return result;
} // end of allTrim

function checkFormat (fieldFormat, fieldValue) {
  var regExpr;
  if(fieldValue == "")
    return true;

  if(fieldFormat == 1) { // e-mail
    regExpr = /^((\w+[._-])*\w+\@(\w+[._-])*\w+)(,[ \r\t\n\f]*(\w+[._-])*\w+\@(\w+[._-])*\w+)*/;
  }else if(fieldFormat == 2) { // number
    regExpr = /^(\d+)?\.?\d+$/;
  }else if(fieldFormat == 3) { // telephone number (123)123-1234
    regExpr = /^\(\d{3}\)\d{3}\-\d{4}$/;
  }else if(fieldFormat == 4) { // integer
    regExpr = /^\d+$/;
  }else if(fieldFormat == 5) { // money xx.xx
    regExpr = /^\d+(\.\d{1,2})?$/;
  }else if(fieldFormat == 6) { // exp date
    regExpr = /^\d{2}\/\d{2}$/;
  }else if(fieldFormat == 7) { // لل number
    regExpr = /^\d{10,16}$/;
  }else if(fieldFormat == 8) { // word
    regExpr = /^\w+$/;
  }else if(fieldFormat == 9) { // word with apostraphe
    regExpr = /^[\w\']+$/;
  }else if(fieldFormat == 10
        || fieldFormat == 11
        || fieldFormat == 12) { // 10 - dd; 11 - mm; 12 - yy;
    regExpr = /^\d{1,2}$/;
    if(regExpr.test(fieldValue)) {
      if(fieldFormat == 10) {
        return (fieldValue > 0 && fieldValue < 32);
      } else if(fieldFormat == 11) {
        return (fieldValue > 0 && fieldValue < 13);
      } else {
        return true;
      }
    } else{
      return false;
    }
  }else if(fieldFormat == 13) { // لل number
    regExpr = /^\d{5}(\-\d{4})?$/;

  } else {
    regExpr = /^.*$/;
  }
  return regExpr.test(fieldValue);

} // end of checkFormat

function checkValues(frm, reqFields, reqFieldNames, fields, fieldTypes, fieldNames) {
//  var reqFields = new Array ('fn','ln','eml','cc_holder','cc_number','cc_expires');
//  var reqFieldNames = new Array ('First name','Last name','Email','CC Holder','CC Number','CC Expires');
// alert("I'm here!");
  var errCtr = null;
  var errObj = null;
  for(var i=0; errCtr == null && i < reqFields.length; i++) {

    var ctr = frm.elements[reqFields[i]];
    // var isObjExists = ctr? 1: 0;
    // alert(ctr+"\n"+reqFields[i]+"\n");
    // if(reqFields[i] == 'PAYMENT_METHOD') alert(typeOf(frm.PAYMENT_METHOD));

    if(!ctr) {
      continue;
    }else{
      // if(ctr.name == 'PAYMENT_METHOD') alert(ctr.type);

      if(ctr.type == 'text' || ctr.type == 'textarea') {
        if( allTrim(ctr.value) == '') {
          errCtr = reqFieldNames[i];
          errObj = ctr;
        }
      } else if(ctr.type == 'select-one' || ctr.type == 'select-multiple') {
        var isSelected = false;
        for (var j=0; !isSelected && j<ctr.options.length; j++) 
          if(ctr.options[j].selected && ctr.options[j].value != "")
            isSelected = true;
        if(!isSelected) {
          errCtr = reqFieldNames[i];
          errObj = ctr;
        }
      } else if(!ctr.type && ctr.length > 0 && ctr[0].type == 'radio') {
        // alert(ctr[0].name);
        var isSelected = false;
        for (var j=0; !isSelected && j<ctr.length; j++) 
          if(ctr[j].checked && ctr[j].value != "")
            isSelected = true;
        if(!isSelected) {
          errCtr = reqFieldNames[i];
          errObj = ctr;
        }
      }else {
      // alert(reqFields[i] + ' has unknown type: '+ ctr.type);
      }
    }
  }
  if(errCtr != null) {
     alert(errCtr + ' is required!');
     if(errObj != null && errObj.type)
       errObj.focus();
     return false;
  } else {
     // check fields format
//    var fields = new Array ('eml','cc_number','cc_expires');
//    var fieldTypes = new Array ("1", "7", "6"); // 1 - email; 2-number; 3-phone number; 4-integer, 5-price
//    var fieldNames = new Array ('Email','CC Number','CC Expires');

    for(var i=0; errCtr == null && i < fields.length; i++) {
      // alert(fields[i] + "\n" + fieldTypes[i] + "\n"+fieldNames[i]);
      var ctr = frm.elements[fields[i]];
// alert(fields[i]);

      if(ctr && (ctr.type == 'text' || ctr.type == 'textarea' || ctr.type == 'password'))
        if(! checkFormat(fieldTypes[i], ctr.value)) {
          errCtr = fieldNames[i];
          errObj = ctr;
        }
    }

    if(errCtr != null) {
      alert(errCtr + ' has wrong format!');
      if(errObj != null)
        errObj.focus();
      return false;
    // Additional checks
    /* } else if(frm.VAL_USER_PASSWORD.value != frm.VER_USER_PASSWORD.value) {
         alert('Password confirmation is wrong!\nPlease confirm you password!');
         frm.VER_USER_PASSWORD.focus();
         return false;
    */
    } else {
      return true;
    }
  }
} // end of checkValues