// File Name : unicode.js
// File Type : Java script
// Function  : Unicode utility functions
// Date      : 18.MAY.2001
// Author    : Rocco Chong

/*
 * Convert text input field value into unicode
 *
 * @param po_field  Field object
 */
function j_cvt_fld_unc(po_field){

  if (po_field.type == 'select-one') {

    js_from_str    = po_field.value;
    js_to_str      = j_cvt_unc_num(js_from_str);
    po_field.options[0]          = new Option('');
    po_field.options[0].value    = js_to_str;
    po_field.options[0].selected = true;

  } else {

    // Set maxLength to unlimted
    po_field.maxLength = -1;

    js_from_str    = po_field.value;
    js_to_str      = j_cvt_unc_num(js_from_str);
    po_field.value = js_to_str;
  }

  return true;
}


/*
 * Convert string into unicode number
 *
 * @param po_field  Field object
 */
function j_cvt_unc_num(ps_from_str) {

  var js_to_str, js_char;

  if (js_unc_db_ind == 'N') {
    return ps_from_str;
  }

  js_to_str   = "";

  for (i=0; i < ps_from_str.length; i++) {
    var js_char = ps_from_str.charCodeAt(i);    
    if (js_char > 126) {
       js_to_str += "&#" + ps_from_str.charCodeAt(i) + ";";
    } else {
       js_to_str += ps_from_str.charAt(i);
    }
  }

  return js_to_str;
}


/*
 * Check unicode of text input field
 *
 * @param po_form         Java Script form object
 * @param pa_layer_array  Array of layer & field mapping
 * @param ps_fld_name     Field name to be checked
 * @param ps_err_msg      Error message if max length exceeded
 * @param pi_maxlen       Max length
 *
 * if pi_maxlen ==0, return true (i.e. do not check)
 */
function j_chk_fld_unc(po_form, pa_layer_array, ps_fld_name, 
                       ps_err_msg, pi_maxlen) {

  if (pi_maxlen == 0) {
    return true;
  }

  jo_po_fld   = eval('po_form.' + ps_fld_name);
  if (typeof(jo_po_fld) != 'object') {    // Detect invalid field name
    alert('System error po_form.' + ps_fld_name + ' is not an object !');
  }
  js_from_str = jo_po_fld.value;
  ji_len      = 0;

  for (i=0; i < js_from_str.length; i++) {
    var js_char = js_from_str.charCodeAt(i);    
    if (js_char > 126) {
       ji_len += ji_db_unc_ftr;
    } else {
       ji_len += 1;
    }
  }

  if (ji_len > pi_maxlen) {
    alert(ps_err_msg);
    j_focus_fld(po_form, pa_layer_array, ps_fld_name);
    return false;
  }
      
  return true;
}
