// Misc helper functions
// Copyright 2010, Four Factors, LLC.
// You may NOT use take code and use it under any circumstance

function trim(s) {
    for (var i=0; i<s.length; i++) { if (s.substr(i,1)!=' ') break; }
    for (var j=s.length-1; j>=0; j--) { if (s.substr(j,1)!=' ') break; }
    var s2 = s.substring(i,j+1);
    return s2;
}

var e1_err_msg='';
var e2_err_msg='';
var e3_err_msg='';
var e4_err_msg='';
var e5_err_msg='';

var msg1='';
var msg2='';

var notallowed_domain_str = '';
var invalid_domain_str = '';
var bad_domain = '';

function check_field(id,label) {
    var f = document.getElementById(id);
    var e1 = (e1_err_msg && e1_err_msg!='') ? e1_err_msg+' '+label : label;
    var e2 = (e2_err_msg && e2_err_msg!='') ? e2_err_msg+' '+label : label;
    var e3 = (e3_err_msg && e3_err_msg!='') ? e3_err_msg+' '+label : label;
    var e5 = (e5_err_msg && e5_err_msg!='') ? e5_err_msg+' '+label : label;
    if (f.type=='checkbox') {
        if (!f.checked) { f.focus(); alert(e5); return false; }
        return true;
    }
    var val = trim(f.value);
    if (val=='') { f.focus(); alert(e1); return false; } 
    //if (val.length==1) { f.focus(); alert(e1); return false; } 
    if ((id=='Person_email1') || (id=='Person_email2') || (id=='Account_email1') || (id=='Account_email2')) {
      var erc = is_email_valid_simp(val); 
      if (erc<1) {
        f.focus();
        if (erc==-1) { alert(e3.replace('%s',bad_domain)); } else { alert(e2); }
        return false; 
      }
    } 
    return true;
}

function check_radio(id,label) {
    var c = 1;
    var f;
    while (true) {
      if (document.getElementById(id+'_'+c)) {
        if (c==1) f = document.getElementById(id+'_'+c);
        if (document.getElementById(id+'_'+c).checked) return true;
      } else {
        break;
      }
      c++;
    }
    var e4 = (e4_err_msg && e4_err_msg!='') ? e4_err_msg+' '+label : label;
    f.focus();
    alert(e4);
    return false;
}

function is_email_valid_simp (em) {
    em = trim(em);
    if ((em=='') || (em.length<6)) return 0;
    var valid_chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._-@';
    for (var i=0; i<em.length; i++) {
        if (valid_chars.indexOf(em.substr(i,1))<0) return 0;
    }
    if ((em.indexOf('@')>0) && (em.indexOf('@')==em.lastIndexOf('@')) && (em.indexOf('@')<em.lastIndexOf('.')) && (em.lastIndexOf('.')<em.length-2)) {
        var domain=em.substr(em.lastIndexOf('@')+1);
        bad_domain = domain;
        if (notallowed_domain_str && notallowed_domain_str!='') {
            var sar = notallowed_domain_str.split(',');
            for (i=0; i<sar.length; i++) {
                if (sar[i]==domain) return -1;
            }
        }
        if (invalid_domain_str && invalid_domain_str!='') {
            var sar2 = invalid_domain_str.split(',');
            for (i=0; i<sar2.length; i++) {
                if (sar2[i]==domain) return -2;
            }
        }
        return 1;
    }
    return 0;
}

function get_fld_show(obj, tp, cond) {
    if (!obj) return false;
    var shw = false;
    if (tp=='bool') {
        if (cond=='ch') {
            shw = (obj.checked);
        } else {
            shw = (!obj.checked);
        }
    } else {
        if (cond=='nem') {
            shw = (trim(obj.value)!='');
        } else {
            shw = (trim(obj.value)=='');
        }
    }
    return shw;
}


function handle_field_show_hide(form_num,blk,grp,opt_show_force,show,max_fld_group,force_show_hidden_fields) {
    show_fld_grp(form_num,blk,grp,opt_show_force,show,true,max_fld_group,force_show_hidden_fields);
} 

var form_id_arr = new Array();
var fld_grp_ctrl = new Array();

var max_form_field_groups = 4;

function show_fld_grp(form_num,blk,grp,opt_show_force,show,do_hide,max_fld_group,force_show_hidden_fields) {

    if (grp>max_fld_group || grp>max_form_field_groups) return;
    
    var shw = false;
    if (grp>1 && fld_grp_ctrl[form_num][grp]) {
        if (fld_grp_ctrl[form_num][grp].tp=='B') {
          if (opt_show_force) {
            shw = show;
          } else {  
            var fld_obj = document.getElementById(form_num+fld_grp_ctrl[form_num][grp].cid);
            if (fld_grp_ctrl[form_num][grp].cgrp==1) {
              if (fld_obj && get_fld_show(fld_obj, fld_grp_ctrl[form_num][grp].ctp, fld_grp_ctrl[form_num][grp].ccnd)) shw = true;
            } else {
              if (fld_obj && get_fld_show(fld_obj, fld_grp_ctrl[form_num][grp].ctp, fld_grp_ctrl[form_num][grp].ccnd)) {
                var div_obj = document.getElementById(form_num+'divG'+fld_grp_ctrl[form_num][grp].cgrp+'F'+fld_grp_ctrl[form_num][grp].cseq);
                if (div_obj) {
                  if (div_obj.style.display=='') shw = true;
                } else {
                  shw = true;
                }
              }
            }
          }
          if (force_show_hidden_fields) shw=true;
        } else if (fld_grp_ctrl[form_num][grp].tp=='A') {
          shw = true;
        }
        
        var o, o2;
        var fld=1;
        var new_disp = (shw ? '' : 'none');
        while(fld<=100) {
          o = document.getElementById(form_num+'divG'+grp+'F'+fld);
          o2 = document.getElementById(form_num+'divG'+grp+'F'+fld+'_');
          if (o) { 
            o.style.display = new_disp;
            if (o2) o2.style.display = new_disp;
          } else { 
            break; 
          }
          fld++;
        }
    }
    
    if (grp<max_form_field_groups) {
      show_fld_grp(form_num,blk,grp+1,opt_show_force,show,do_hide,max_fld_group,force_show_hidden_fields);
    }

}

function select_an_option(obj_id, obj, sel) {
    if (obj_id!='') obj=document.getElementById(obj_id);
    if (!obj) return;
    for (var i=0; i<obj.options.length; i++) {
        if (obj.options[i].value==sel) {
            obj.selectedIndex = i;
            return;
        }
    }
    obj.selectedIndex = 0;
}

function statefld_from_ctryfld(ctryfld) {
    if (ctryfld=='Person_primary_address_country') return 'Person_primary_address_state';
    if (ctryfld=='Person_alt_address_country') return 'Person_alt_address_state';
    if (ctryfld=='Account_billing_address_country') return 'Account_billing_address_state';
    if (ctryfld=='Account_shipping_address_country') return 'Account_shipping_address_state';
    return '';
}

//var country_states_arr_us = new Array();
//var country_state_names_arr_us = new Array();
//var country_states_arr_ca = new Array();
//var country_state_names_arr_ca = new Array();

function on_country_change(ctry_obj, grp) {
    var new_sel = '';
    var new_dis = false;
    var new_opt = '';
    var sel = "";
    //alert(ctry_obj.value);
    //alert(msg2);
    //alert(grp);
    if (ctry_obj.value=='us') {
        //new_sel = '';
        //new_dis = false;
        if (country_states_arr_us && country_state_names_arr_us) {
            for (var i=0; i<country_states_arr_us.length; i++) {
                sel = "";
                if (country_states_arr_us[i]=='') sel = "selected"
                new_opt += "<option value='"+country_states_arr_us[i]+"' "+sel+">"+country_state_names_arr_us[i]+"</option>";
            }
        }
    } else if (ctry_obj.value=='ca') {
        //new_sel = '';
        //new_dis = false;
        if (country_states_arr_ca && country_state_names_arr_ca) {
            for (var i=0; i<country_states_arr_ca.length; i++) {
                sel = "";
                if (country_states_arr_us[i]=='') sel = "selected"
                new_opt += "<option value='"+country_states_arr_ca[i]+"' "+sel+">"+country_state_names_arr_ca[i]+"</option>";
            }
        }
    } else if (ctry_obj.value=='') {
        new_dis = true;
        new_opt = "<option value='' selected>"+msg2+"</option>";
    } else {
        new_sel = '--';
        new_dis = true;
        new_opt = "<option value='--' selected>"+msg1+"</option>";
    }

    //alert(ctry_obj.name);
    var stoid = statefld_from_ctryfld(ctry_obj.name);
    //alert(stoid);
    if (stoid) { 
        var sto = document.getElementById(grp+stoid);
        if (sto) {
            //alert(sto.innerHTML+' ==> '+new_opt);
            if (new_opt!='') {
                if(document.all){ 
                    // IE (doesn't like changing innerHTML of a <select>)
                    var sel1 = sto.outerHTML.substr(0,sto.outerHTML.search('>')+1);
                    if (new_dis) {
                        if (sel1.indexOf('disabled')==-1) sel1 = sel1.substr(0,sel1.length-1)+' disabled>';
                    } else {
                        if (sel1.indexOf('disabled')>-1) sel1 = sel1.replace('disabled', '');
                    }
                    //alert(sel1);
                    sto.outerHTML = sel1 + new_opt + "</select>";
                } else { 
                    // non-IE
                    sto.innerHTML = new_opt;
                }                
            } else {
                //select_an_option(grp+stoid, '', new_sel);
                select_an_option('', sto, new_sel);
            }
            
            if(document.all){} else {
                sto.disabled = new_dis;
                sto.readOnly = new_dis;
            }
            //alert (sto.disabled);
            //alert (sto.readOnly);
            //alert (new_dis);
            //sto.disabled = (new_dis) ? true : false;
            //sto.disabled = false;

            //sto.readOnly = (new_dis) ? "readonly" : "";
            //setAttribute("readOnly","readonly")
        }
    }
}



