/*
 *  Get Web Server Url 
 */
function getWebUri(u){
   return webHost + u ;
}

/*
 *  Get Domino Server Url for the form submission
 */
function getDominoUri(u){
   return dominoHost + u;
}

/*
 *  Trim String 
 */
function Trim(TRIM_VALUE){
     if(TRIM_VALUE.length < 1){
          return"";
     }
     TRIM_VALUE = RTrim(TRIM_VALUE);
     TRIM_VALUE = LTrim(TRIM_VALUE);
     if(TRIM_VALUE==""){
         return "";
     }
     else{
         return TRIM_VALUE;
     }
} //End Trim Function

/*
 *  Trim String From right side
 */
function RTrim(VALUE){
    var w_space = String.fromCharCode(32);
    var v_length = VALUE.length;
    var strTemp = "";
    if(v_length < 0){
          return"";
    }
    var iTemp = v_length -1;

    while(iTemp > -1){
        if(VALUE.charAt(iTemp) == w_space){
        }
        else{
             strTemp = VALUE.substring(0,iTemp +1);
             break;
        }
        iTemp = iTemp-1;

    } //End While
    return strTemp;

} //End RTrim Function

/*
 *  Trim String From left side
 */
function LTrim(VALUE){
      var w_space = String.fromCharCode(32);
      if(v_length < 1){
         return"";
      }
      var v_length = VALUE.length;
      var strTemp = "";

      var iTemp = 0;

      while(iTemp < v_length){
         if(VALUE.charAt(iTemp) == w_space){
         }
         else{
                strTemp = VALUE.substring(iTemp,v_length);
                break;
         }
         iTemp = iTemp + 1;
      } //End While
      return strTemp;
} //End LTrim Function



function getRowIndexById(_id) {
    /*  
        loops thru the table containing the form looking 
        for the row id and return the index
    */
    for (i=0; i<document.getElementById('the').rows.length; i++) {
        if (document.getElementById('the').rows[i].id == _id) {
            return i+1;
        }
    }
}

function deleteFromArray(_f) {
    
    /*  fields (_f) added to the required array 
        for dynamic fields should be removed  */
        
    var temp = new Array();
    for (i=0; i<ff_required.length; i++) {
        if (ff_required[i] != _f) {
            temp[temp.length] = ff_required[i];
        } 
    }
    ff_required = temp;
}

function checkCountry(t) {
    /* 
        replaced on 4/25/05 allows script to used on any form
        var f = document.forms['doc_request'];
    */
    var f = t.form;
    var f_name = 'new_'+t.name;
    var r_name = 'tr_'+t.name;

    if (f.elements[f_name]) {
        deleteTableRow(getRowIndexById(r_name));
        deleteFromArray(f_name);
    }

    if (t.selectedIndex == t.options.length-1) {
        /* 
        adding an "other" field and making it required
        */
        addTableRow(f_name,getRowIndexById(r_name),"Country \"Other\"<span class=\"asterisk\">*</span>");
        ff_required.push(f_name);
    }
}

function checkDocType(t,n) {

    var f = t.form;
    var f_name = 'new_'+t.name;
    var r_name = 'tr_'+t.name;

    if (f.elements[f_name]) {
        deleteTableRow(getRowIndexById(r_name));
        deleteFromArray(f_name);
    }
    if (f.elements[n][f.elements[n].length-1].checked) {
        addTableRow(f_name,getRowIndexById(r_name),"Document \"Other\"<span class=\"asterisk\">*</span>");
        ff_required.push(f_name);
    }
}

function updateCountry(t,n,d) {
    /*
        t (this) reference the form field calling the fnct
        n (next field) is the affected country field
        d (dynamic field name) created if state/province is "other"
    */
    var f = t.form;
    if (f.elements[d]) {        // field exists so start by removing
        deleteTableRow(getRowIndexById('tr_'+t.name));
        deleteFromArray(d);
    }
    if (t.value == "") {
        f.elements[n].selectedIndex = 0;
    } else if (t.selectedIndex == t.options.length-1) {     // last option is "Other" so we add 
        f.elements[n].selectedIndex = 0;
        addTableRow(d,getRowIndexById('tr_'+t.name),"Province / State \"Other\"<span class=\"asterisk\">*</span>");
        ff_required.push(d);
    } else if (t.selectedIndex <= 14) {
        f.elements[n].selectedIndex = 1;
    } else {
        f.elements[n].selectedIndex = 2;
    }
}

function deleteTableRow(nth) {
    var thetable = document.all ? document.all['the'] : document.getElementById('the');
    thetable.deleteRow(nth);
}

function addTableRow(f,i,c) {
    var thetable = document.all ? document.all['the'] : document.getElementById('the');
    var row = thetable.insertRow(i);
    var cell = row.insertCell(0);  cell.setAttribute("id",'i'+f); cell.innerHTML=c;
    cell = row.insertCell();  cell.innerHTML="<input type=\"text\" name=\""+f+"\" size=\"34\">";
}

function checkPost(f, foi, pf) {
    /*
        f = form obj
        foi = field of interest
        nf = post field for foi
    */
    if (f.elements[foi].selectedIndex == 1 || f.elements[foi].selectedIndex == 2) {
        ff_required.push(pf);
    } else if (ff_required[ff_required.length-1] == pf) {
        ff_required.pop(); document.getElementById('i'+pf).className = "";
    }
}

function deleteTableRow(nth) {
    var thetable = document.all ? document.all['the'] : document.getElementById('the');
    thetable.deleteRow(nth);
}

function addTableRow(f,i,c) {
    var thetable = document.all ? document.all['the'] : document.getElementById('the');
    var row = thetable.insertRow(i);
    var cell = row.insertCell(0); cell.setAttribute("id",'i'+f); cell.innerHTML=c;
    cell = row.insertCell(1); cell.innerHTML="<input type=\"text\" name=\""+f+"\" size=\"34\">";
}

function validate(f) {
    /*
        html page should contain an array with 
        all of the field names for validation.

        func loops thru the array recognizing its 
        type and performs the proper validation.
    */
    var e_msgs = new Array();
    var r_empty = new Array();

    var valid = true;
    var e_msg = "Field(s) highlighted in red are required and were not properly completed.";
    var msg_f = 'error_msg';
    var o_msg = document.getElementById(msg_f).innerHTML;
    var o_class = document.getElementById(msg_f).className;
    var e_class = 'error';
    
    document.getElementById(msg_f).innerHTML = "";
    
    for (var i=0; i < ff_required.length; i++) {
        var _f = 'i'+ff_required[i];
        
        var ff_type = (f.elements[ff_required[i]].type) ? f.elements[ff_required[i]].type : f.elements[ff_required[i]][0].type;
        switch(ff_type) {
        case 'text':
            if (ff_required[i] == 'appt_date_year') _f = 'iappt_date';
            if (ff_required[i] == 'd_date_year') _f = 'id_date';
            document.getElementById(_f).className = "";

            if (window.sc) {
                if(window.sc[ff_required[i]] != undefined) {
                    var str = f.elements[ff_required[i]].value;
                    var reg = new RegExp(sc[ff_required[i]]);
                    if (!reg.test(str)) {
                        r_empty[r_empty.length] = ff_required[i];
                        document.getElementById(_f).className = e_class;
                        var _t = document.getElementById(_f).innerHTML;
                        if (_t.charAt(_t.length-1) == "*") {    //don't want to display the asterisk
                            _t = _t.substring(0, _t.length-1);
                        }
                        if (_t.indexOf("<") > -1) {     //looks for the begins of a tag
                            _t = _t.substring(0, _t.indexOf("<"));
                        }
                        valid = false;
                        e_msg += "<br />&bull; Improperly formatted number for '"+_t+"'";
                        break;
                    }
                }
            }

            if (f.elements[ff_required[i]].value == "") {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }

            if (ff_required[i] == "confirm_email" && (f.elements[ff_required[i]].value != f.elements[ff_required[i-1]].value)) {
                e_msg += "<br />&bull; Email addresses supplied do not match";
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            break;
        case 'select', 'select-one':
            if (ff_required[i] == 'appt_date_day' || ff_required[i] == 'appt_date_month') _f = 'iappt_date';
            if (ff_required[i] == 'd_date_day' || ff_required[i] == 'd_date_month') _f = 'id_date';
            document.getElementById(_f).className = "";
            if (f.elements[ff_required[i]].options[f.elements[ff_required[i]].selectedIndex].value == "") {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            break;
        case 'textarea':
            document.getElementById(_f).className = "";
            if (f.elements[ff_required[i]].value == "") {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            break;
        case 'radio':   
            document.getElementById(_f).className = "";
            var checked = false;
            for (var j=0; j<f.elements[ff_required[i]].length; j++) {
                if (f.elements[ff_required[i]][j].checked) { checked = true; }
            }
            if (!checked) {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            break;
        }
    }

    if (valid) {
        document.getElementById(msg_f).className = o_class;
        document.getElementById(msg_f).innerHTML = o_msg;
    } else {
        f.elements[r_empty[0]].focus();
        document.getElementById(msg_f).className = 'error_box';
        document.getElementById(msg_f).innerHTML = e_msg;
        window.location.href='#error_msg';
    }

    return valid;
    
}

function deleteFromArrayCode(_f, array) {
    
    /*  fields (_f) added to the required array 
        for dynamic fields should be removed  */
        
    var temp = new Array();
    for (i=0; i<array.length; i++) {
        if (array[i] != _f) {
            temp[temp.length] = array[i];
        } 
    }
    array = temp;
    return array;
}

function checkDocTypeCode(t,n) {

    var f = t.form;
    var f_name = 'O'+t.name;
    var r_name = 'tr_'+t.name;
    if (f.elements[f_name]) {
        deleteTableRow(getRowIndexById(r_name));
        deleteFromArray(f_name);
    }
    if (f.elements[n][f.elements[n].length-1].checked) {
        addTableRow(f_name,getRowIndexById(r_name),"Other<span class=\"asterisk\">*</span>");
        ff_required.push(f_name);
    }
    
}

function checkDocTypeCode(t,n,fn) {

    var f = t.form;
    var f_name = 'O'+t.name;
    var r_name = 'tr_'+t.name;
    if (f.elements[f_name]) {
        deleteTableRow(getRowIndexById(r_name));
        deleteFromArray(f_name);
    }
    if (f.elements[n][f.elements[n].length-1].checked) {
        addTableRow(f_name,getRowIndexById(r_name), fn + "<span class=\"asterisk\">*</span>");
        ff_required.push(f_name);
    }
    
}

function checkCountryCode(t) {
    /* 
        replaced on 4/25/05 allows script to used on any form
        var f = document.forms['doc_request'];
    */
    
    var f = t.form;
    //var f_name = t.name + 'Other';
    var f_name = 'O' + t.name;
    var r_name = 'tr_'+t.name;  
    var other_field = "Other";
    var l = '';
    if (f.elements['language']){
         l = f.elements['language'].value;
    }
    if ('fr' == l){
        other_field = "Autre";
    }   

    if (f.elements[f_name]) {
        deleteTableRow(getRowIndexById(r_name));
        deleteFromArray(f_name);
    }

    if (t.selectedIndex == t.options.length-1) {
        /* 
        adding an "other" field and making it required
        */
        addTableRow(f_name,getRowIndexById(r_name), other_field + "<span class=\"asterisk\">*</span>");     
        ff_required.push(f_name);
    }
}

function checkCountryCode_fr(t) {
    /* 
        replaced on 4/25/05 allows script to used on any form
        var f = document.forms['doc_request'];
    */
    
    var f = t.form;
    //var f_name = t.name + 'Other';
    var f_name = 'O' + t.name;
    var r_name = 'tr_'+t.name;

    if (f.elements[f_name]) {
        deleteTableRow(getRowIndexById(r_name));
        deleteFromArray(f_name);
    }

    if (t.selectedIndex == t.options.length-1) {
        /* 
        adding an "other" field and making it required
        */
        addTableRow(f_name,getRowIndexById(r_name),"Autre<span class=\"asterisk\">*</span>");       
        ff_required.push(f_name);
    }
}

function updateCountryCode(t,n,d) {
    /*
        t (this) reference the form field calling the fnct
        n (next field) is the affected country field
        d (dynamic field name) created if state/province is "other"
    */
    var f = t.form;
    var other_field = "Other";
    var l = '';
    if (f.elements['language']){
         l = f.elements['language'].value;
    }   
    if ('fr' == l){
        other_field = "Autre";
    }
    if (f.elements[d]) {        // field exists so start by removing
        deleteTableRow(getRowIndexById('tr_'+t.name));
        deleteFromArray(d);
    }
    if (t.value == "") {
        f.elements[n].selectedIndex = 0;
    } else if (t.selectedIndex == t.options.length-1) {     // last option is "Other" so we add 
        f.elements[n].selectedIndex = 0;
        addTableRow(d,getRowIndexById('tr_'+t.name), other_field + "<span class=\"asterisk\">*</span>");
        ff_required.push(d);
    } else if (t.selectedIndex <= 14) {
        f.elements[n].selectedIndex = 1;
    } else {
        f.elements[n].selectedIndex = 2;
    }
}

function updateCountryCode_fr(t,n,d) {
    /*
        t (this) reference the form field calling the fnct
        n (next field) is the affected country field
        d (dynamic field name) created if state/province is "other"
    */
    var f = t.form;
    if (f.elements[d]) {        // field exists so start by removing
        deleteTableRow(getRowIndexById('tr_'+t.name));
        deleteFromArray(d);
    }
    if (t.value == "") {
        f.elements[n].selectedIndex = 0;
    } else if (t.selectedIndex == t.options.length-1) {     // last option is "Other" so we add 
        f.elements[n].selectedIndex = 0;
        addTableRow(d,getRowIndexById('tr_'+t.name),"Autre<span class=\"asterisk\">*</span>");
        ff_required.push(d);
    } else if (t.selectedIndex <= 14) {
        f.elements[n].selectedIndex = 1;
    } else {
        f.elements[n].selectedIndex = 2;
    }
}


function validateForms(f) {
    /*
        html page should contain an array with 
        all of the field names for validation.

        func loops thru the array recognizing its 
        type and performs the proper validation.
    */
    var e_msgs = new Array();
    var r_empty = new Array();

    var valid = true;
    var v_msg = '<P>Fields with an "<span class="asterisk">*</span>" must be completed.</P>';
    var e_msg = "Field(s) highlighted in red are required and were not properly completed.";
    var msg_f = 'error_msg';
    var o_msg = document.getElementById(msg_f).innerHTML;
    var o_class = document.getElementById(msg_f).className;

    var e_class = 'error';
    var l = '';
    if (f.elements['language']){
         l = f.elements['language'].value;
    }   
    if ('fr' == l) {
        v_msg = "<P>Les champs marqu&eacute;s d&#39;un << <span class='asterisk'>*</span> >> doivent &ecirc;tre remplis.</P>";
        e_msg = "Les champs en rouge sont obligatoires et n&#39;ont pas &eacute;t&eacute; remplis correctement.";   
    }
    
    document.getElementById(msg_f).innerHTML = "";
    
    // validate those either/or fields
        if (window.either_or_required != undefined){
        
            var first_empty = true;
            var second_empty = true;
            var first_valid = false;
            var second_valid = false;
            
            // empty check for the first part
            if (f.elements[either_or_required[0]].value != "") {
            first_empty = false;
            }
            // empty check for the second part
            for (var i=1; i < either_or_required.length; i++) {         
            if (f.elements[either_or_required[i]].value != "") {
                second_empty = false;
        }
        
        }
        
        if (first_empty && second_empty) {      
               // both empty, high light both       
           for (var i=0; i < either_or_required.length; i++) {  
                  ff_required.push(either_or_required[i]);
           }
           
        } else if (first_empty) {    
           // validate the second part if the first part is empty
           for (var i=1; i < either_or_required.length; i++) {  
                  ff_required.push(either_or_required[i]);
           }    
            deleteFromArray(either_or_required[0]);
            document.getElementById(('i'+ either_or_required[0])).className = "";
        } else if (second_empty){    
            //validate the first part if the second part is not empty
            ff_required.push(either_or_required[0]);
            for (var i=1; i < either_or_required.length; i++) {  
                deleteFromArray(either_or_required[i]);
                var _f = 'i'+ either_or_required[i];
                document.getElementById(_f).className = "";
           } 

        } else {
        
             //validate the second part if both are not empty
             if (!validateSecondPart(f, either_or_required)){            
                // validate the first part if the second part is not valid
                ff_required.push(either_or_required[0]);
                for (var i=1; i < either_or_required.length; i++) {  
                deleteFromArray(either_or_required[i]);
                        var _f = 'i'+ either_or_required[i];
                        document.getElementById(_f).className = "";             
                    } 
             }
             else {
               deleteFromArray(either_or_required[0]);
               document.getElementById(('i'+ either_or_required[0])).className = "";
             }
        
        }
        
        }

    // validate those mandatory fields

    
    for (var i=0; i < ff_required.length; i++) {
               
        var _f = 'i'+ff_required[i];
        
        var ff_type = (f.elements[ff_required[i]].type) ? f.elements[ff_required[i]].type : f.elements[ff_required[i]][0].type;
        switch(ff_type) {
        case 'text':
        
                f.elements[ff_required[i]].value = Trim(f.elements[ff_required[i]].value);
            if (ff_required[i] == 'probated_appt_date_year') _f = 'iprobated_appt_date';
            if (ff_required[i] == 'non_pro_appt_date_year') _f = 'inon_pro_appt_date';
            if (ff_required[i] == 'd_date_year') _f = 'id_date';
            if (ff_required[i] == 'NewEffectiveYear') _f = 'iNewEffectiveDate';
            
            document.getElementById(_f).className = "";
            
            if (window.sc) {
                if(window.sc[ff_required[i]] != undefined) {
                    var str = f.elements[ff_required[i]].value;
                    var reg = new RegExp(sc[ff_required[i]]);
                    if (!reg.test(str)) {
                        r_empty[r_empty.length] = ff_required[i];
                        document.getElementById(_f).className = e_class;        
                        var _t = document.getElementById(_f).innerHTML;                     
                        if (_t.charAt(_t.length-1) == "*") {    //don't want to display the asterisk
                            _t = _t.substring(0, _t.length-1);
                        }
                        if (_t.indexOf("<") > -1) {     //looks for the begins of a tag
                            _t = _t.substring(0, _t.indexOf("<"));
                        }
                        valid = false;
                        //e_msg += "<br />&bull; "+_t;
                        break;
                    }
                }
            }
            if (f.elements[ff_required[i]].value == "") {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            if (ff_required[i] == "Email2" && (f.elements[ff_required[i]].value != f.elements[ff_required[i-1]].value)) {
                    r_empty[r_empty.length] = ff_required[i];
                //e_msg += "<br />&bull; Email addresses supplied do not match";
                document.getElementById(_f).className = e_class;
                valid = false;
            }

            break;
        case 'select', 'select-one':
                if (ff_required[i] == 'd_date_month' || ff_required[i] == 'd_date_day'){
                        _f = 'id_date';
                }
                if (ff_required[i] == 'probated_appt_date_month' || ff_required[i] == 'probated_appt_date_day') {
                       _f = 'iprobated_appt_date';
                }   
                if (ff_required[i] == 'non_pro_appt_date_month' || ff_required[i] == 'non_pro_appt_date_day') {
                       _f = 'inon_pro_appt_date';
                }
                if (ff_required[i] == 'NewEffectiveMonth' || ff_required[i] == 'NewEffectiveDay') {
                       _f = 'iNewEffectiveDate';
                }
            document.getElementById(_f).className = "";
            if (f.elements[ff_required[i]].options[f.elements[ff_required[i]].selectedIndex].value == "") {
                        r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            
            break;  
        case 'textarea':
            document.getElementById(_f).className = "";
            if (f.elements[ff_required[i]].value == "") {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            break;
        case 'radio':   
            document.getElementById(_f).className = "";
            var checked = false;
            for (var j=0; j<f.elements[ff_required[i]].length; j++) {           
                if (f.elements[ff_required[i]][j].checked) { checked = true; }
            }
            if (!checked) {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            break;
        }           

    }
    // validate those non-mandatory fields

        if (window.ff_non_required != undefined){
    
            for (var i=0; i < ff_non_required.length; i++) { 

                  var _f = 'i'+ff_non_required[i];
                  if (f.elements[ff_non_required[i]]){
                     f.elements[ff_non_required[i]].value = Trim(f.elements[ff_non_required[i]].value);
                     document.getElementById(_f).className = "";                    
                        if (window.sc) {
                        if(window.sc[ff_non_required[i]] != undefined) {
                            var str = f.elements[ff_non_required[i]].value;
                            var reg = new RegExp(sc[ff_non_required[i]]);
                            if ("" != str && !reg.test(str)) {
                                r_empty[r_empty.length] = ff_non_required[i];
                                document.getElementById(_f).className = e_class;
                                valid = false;
                         }
                    }
                }
        }
            }
            
        }
        
        
    if (valid) {
        document.getElementById(msg_f).className = "";
        document.getElementById(msg_f).innerHTML = v_msg;
    } else {
                 for(var i=0; i< r_empty.length; i++){
                                       if (r_empty[i] == 'd_date_month' || r_empty[i] == 'd_date_day'){
                                  _f = 'id_date';
                                  document.getElementById(_f).className = e_class;
                               }
                        if (r_empty[i] == 'probated_appt_date_month' || r_empty[i] == 'probated_appt_date_day') {
                               _f = 'iprobated_appt_date';
                               document.getElementById(_f).className = e_class;
                        }   
                        if (r_empty[i] == 'non_pro_appt_date_month' || r_empty[i] == 'non_pro_appt_date_day') {
                               _f = 'inon_pro_appt_date';
                               document.getElementById(_f).className = e_class;
                                }
                        if (r_empty[i] == 'NewEffectiveMonth' || r_empty[i] == 'NewEffectiveDay' || r_empty[i] == 'NewEffectiveYear') {
                               _f = 'iNewEffectiveDate';
                               document.getElementById(_f).className = e_class;
                                }
                                                            
                                
                 }
        f.elements[r_empty[0]].focus();
        document.getElementById(msg_f).className = 'error_box';
        document.getElementById(msg_f).innerHTML = e_msg;
        window.location.href='#error_msg';
    }
    
        if (window.uri != undefined){
             f.action = getDominoUri(uri);     
        }
        if (window.returnuri_english != undefined
            && null != f.$$Return.value){
             var returnUri = getWebUri(returnuri_english);
         f.$$Return.value = "[" + returnUri + "]";       
        }      

        if (window.returnuri != undefined
            && null != f.$$Return.value){
             var returnUri = getWebUri(returnuri);
         f.$$Return.value = "[" + returnUri + "]";       
        }
        
        if (window.retfailureuri != undefined
                && null != f.$$ReturnFailure.value){
            var returnfailureUri = getWebUri(retfailureuri);
            f.$$ReturnFailure.value = "[" + returnfailureUri + "]";      
        }
        return valid;
    
}




function validateInvestorForms(f) {
    /*
        html page should contain an array with 
        all of the field names for validation.

        func loops thru the array recognizing its 
        type and performs the proper validation.
    */
    var e_msgs = new Array();
    var r_empty = new Array();

    var valid = true;
    var v_msg = '<P>Fields with an "<span class="asterisk">*</span>" must be completed.</P>';
    var e_msg = "Field(s) highlighted in red are required and were not properly completed.";
    var msg_f = 'error_msg';
    var o_msg = document.getElementById(msg_f).innerHTML;
    var o_class = document.getElementById(msg_f).className;

    var e_class = 'error';
    
    document.getElementById(msg_f).innerHTML = "";
    
    // validate those either/or fields
        if (window.either_or_required != undefined){
        
            var first_empty = true;
            var second_empty = true;
            var first_valid = false;
            var second_valid = false;
            
            // empty check for the first part
            if (f.elements[either_or_required[0]].value != "") {
            first_empty = false;
            }
            // empty check for the second part
            for (var i=1; i < either_or_required.length; i++) {         
            if (f.elements[either_or_required[i]].value != "") {
            second_empty = false;
        }  
        }
        
        if (first_empty && second_empty) {      
               // both empty, high light both       
           for (var i=0; i < either_or_required.length; i++) {  
                  ff_required.push(either_or_required[i]);
           }
           
        } else if (first_empty) {    
           // validate the second part if the first part is empty
           for (var i=1; i < either_or_required.length; i++) {  
                  ff_required.push(either_or_required[i]);
           }    
            deleteFromArray(either_or_required[0]);
            document.getElementById(('i'+ either_or_required[0])).className = "";
        } else if (second_empty){    
            //validate the first part if the second part is not empty
            ff_required.push(either_or_required[0]);
            for (var i=1; i < either_or_required.length; i++) {  
                deleteFromArray(either_or_required[i]);
                var _f = 'i'+ either_or_required[i];
                document.getElementById(_f).className = "";
           } 

        } else {
        
             //validate the second part if both are not empty
             if (!validateSecondPart(f, either_or_required)){
                    // validate the first part if the second part is not valid
                ff_required.push(either_or_required[0]);
                for (var i=1; i < either_or_required.length; i++) {  
                deleteFromArray(either_or_required[i]);
                        var _f = 'i'+ either_or_required[i];
                        document.getElementById(_f).className = "";             
                    } 
             }
             else {
               deleteFromArray(either_or_required[0]);
               document.getElementById(('i'+ either_or_required[0])).className = "";
             }
        
        }
        
        }

    // validate those mandatory fields

    
    for (var i=0; i < ff_required.length; i++) {
               
        var _f = 'i'+ff_required[i];
        
        var ff_type = (f.elements[ff_required[i]].type) ? f.elements[ff_required[i]].type : f.elements[ff_required[i]][0].type;
        switch(ff_type) {
        case 'text':
        
                f.elements[ff_required[i]].value = Trim(f.elements[ff_required[i]].value);
            if (ff_required[i] == 'probated_appt_date_year') _f = 'iprobated_appt_date';
            if (ff_required[i] == 'non_pro_appt_date_year') _f = 'inon_pro_appt_date';
            if (ff_required[i] == 'd_date_year') _f = 'id_date';
            
            document.getElementById(_f).className = "";
            
            if (window.sc) {
                if(window.sc[ff_required[i]] != undefined) {
                    var str = f.elements[ff_required[i]].value;
                    var reg = new RegExp(sc[ff_required[i]]);
                    if (!reg.test(str)) {
                        r_empty[r_empty.length] = ff_required[i];
                        document.getElementById(_f).className = e_class;        
                        var _t = document.getElementById(_f).innerHTML;                     
                        if (_t.charAt(_t.length-1) == "*") {    //don't want to display the asterisk
                            _t = _t.substring(0, _t.length-1);
                        }
                        if (_t.indexOf("<") > -1) {     //looks for the begins of a tag
                            _t = _t.substring(0, _t.indexOf("<"));
                        }
                        valid = false;
                        //e_msg += "<br />&bull; "+_t;
                        break;
                    }
                }
            }
            if (f.elements[ff_required[i]].value == "") {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            if (ff_required[i] == "Email2" && (f.elements[ff_required[i]].value != f.elements[ff_required[i-1]].value)) {
                    r_empty[r_empty.length] = ff_required[i];
                //e_msg += "<br />&bull; Email addresses supplied do not match";
                document.getElementById(_f).className = e_class;
                valid = false;
            }

            break;
        case 'select', 'select-one':
                if (ff_required[i] == 'd_date_month' || ff_required[i] == 'd_date_day'){
                        _f = 'id_date';
                }
                if (ff_required[i] == 'probated_appt_date_month' || ff_required[i] == 'probated_appt_date_day') {
                       _f = 'iprobated_appt_date';
                }   
                if (ff_required[i] == 'non_pro_appt_date_month' || ff_required[i] == 'non_pro_appt_date_day') {
                       _f = 'inon_pro_appt_date';
                }

            document.getElementById(_f).className = "";
            if (f.elements[ff_required[i]].options[f.elements[ff_required[i]].selectedIndex].value == "") {
                        r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            
            break;  
        case 'textarea':
            document.getElementById(_f).className = "";
            if (f.elements[ff_required[i]].value == "") {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            break;
        case 'radio':   
            document.getElementById(_f).className = "";
            var checked = false;
            for (var j=0; j<f.elements[ff_required[i]].length; j++) {           
                if (f.elements[ff_required[i]][j].checked) { checked = true; }
            }
            if (!checked) {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            break;
        }           

    }
    // validate those non-mandatory fields

        if (window.ff_non_required != undefined){
    
            for (var i=0; i < ff_non_required.length; i++) { 

                  var _f = 'i'+ff_non_required[i];
                  f.elements[ff_non_required[i]].value = Trim(f.elements[ff_non_required[i]].value);
                  document.getElementById(_f).className = "";                    
                        if (window.sc) {
                        if(window.sc[ff_non_required[i]] != undefined) {
                            var str = f.elements[ff_non_required[i]].value;
                            var reg = new RegExp(sc[ff_non_required[i]]);
                            if (!reg.test(str)) {
                                r_empty[r_empty.length] = ff_non_required[i];
                                document.getElementById(_f).className = e_class;
                                valid = false;
                         }
                    }
                }
            }
            
        }
        

        
    if (valid) {
        document.getElementById(msg_f).className = "";
        document.getElementById(msg_f).innerHTML = v_msg;
    } else {
                 for(var i=0; i< r_empty.length; i++){
                                       if (r_empty[i] == 'd_date_month' || r_empty[i] == 'd_date_day'){
                                  _f = 'id_date';
                                  document.getElementById(_f).className = e_class;
                               }
                        if (r_empty[i] == 'probated_appt_date_month' || r_empty[i] == 'probated_appt_date_day') {
                               _f = 'iprobated_appt_date';
                               document.getElementById(_f).className = e_class;
                        }   
                        if (r_empty[i] == 'non_pro_appt_date_month' || r_empty[i] == 'non_pro_appt_date_day') {
                               _f = 'inon_pro_appt_date';
                               document.getElementById(_f).className = e_class;
                                }
                                
                 }
        f.elements[r_empty[0]].focus();
        document.getElementById(msg_f).className = 'error_box';
        document.getElementById(msg_f).innerHTML = e_msg;
        window.location.href='#error_msg';
    }
    
        if (window.uri != undefined){
             f.action = getDominoUri(uri);     
        }
        if (window.returnuri_english != undefined
            && null != f.$$Return.value){
             var returnUri = getWebUri(returnuri_english);
         f.$$Return.value = "[" + returnUri + "]";       
        }        
        if (window.returnuri != undefined
            && null != f.$$Return.value){
             var returnUri = getWebUri(returnuri);
         f.$$Return.value = "[" + returnUri + "]";           
        }
        return valid;
    
}


function validateInvestorForms_fr(f) {
    /*
        html page should contain an array with 
        all of the field names for validation.

        func loops thru the array recognizing its 
        type and performs the proper validation.
    */
    var e_msgs = new Array();
    var r_empty = new Array();

    var valid = true;
    var v_msg = '<P>Les champs marqués d’un << <span class="asterisk">*</span> >> doivent être remplis.</P>';
    var e_msg = "Les champs en rouge sont obligatoires et n&#39;ont pas &eacute;t&eacute; remplis correctement.";
    var msg_f = 'error_msg';
    var o_msg = document.getElementById(msg_f).innerHTML;
    var o_class = document.getElementById(msg_f).className;

    var e_class = 'error';
    
    document.getElementById(msg_f).innerHTML = "";

        // validate those either/or fields
            if (window.either_or_required != undefined){
            
                var first_empty = true;
                var second_empty = true;
                var first_valid = false;
                var second_valid = false;
                
                // empty check for the first part
                if (f.elements[either_or_required[0]].value != "") {
                first_empty = false;
                }
                // empty check for the second part
                for (var i=1; i < either_or_required.length; i++) {         
                if (f.elements[either_or_required[i]].value != "") {
                second_empty = false;
            }  
            }
            
            if (first_empty && second_empty) {      
                   // both empty, high light both       
               for (var i=0; i < either_or_required.length; i++) {  
                      ff_required.push(either_or_required[i]);
               }
               
            } else if (first_empty) {    
               // validate the second part if the first part is empty
               for (var i=1; i < either_or_required.length; i++) {  
                      ff_required.push(either_or_required[i]);
               }    
                deleteFromArray(either_or_required[0]);
                document.getElementById(('i'+ either_or_required[0])).className = "";
            } else if (second_empty){    
                //validate the first part if the second part is not empty
                ff_required.push(either_or_required[0]);
                for (var i=1; i < either_or_required.length; i++) {  
                    deleteFromArray(either_or_required[i]);
                    var _f = 'i'+ either_or_required[i];
                    document.getElementById(_f).className = "";
               } 
    
            } else {
            
                 //validate the second part if both are not empty
                 if (!validateSecondPart(f, either_or_required)){            
                    // validate the first part if the second part is not valid
                    ff_required.push(either_or_required[0]);
                    for (var i=1; i < either_or_required.length; i++) {  
                    deleteFromArray(either_or_required[i]);
                            var _f = 'i'+ either_or_required[i];
                            document.getElementById(_f).className = "";             
                        } 
                 }
                 else {
                   deleteFromArray(either_or_required[0]);
                   document.getElementById(('i'+ either_or_required[0])).className = "";
                 }
            
            }
            
        }
    
    
    for (var i=0; i < ff_required.length; i++) {

        var _f = 'i'+ff_required[i];
        if (ff_required[i] == 'd_date_month') _f = 'id_date';
        if (ff_required[i] == 'd_date_day') _f = 'id_date'; 
        if (ff_required[i] == 'probated_appt_date_month') _f = 'iprobated_appt_date';
        if (ff_required[i] == 'probated_appt_date_day') _f = 'iprobated_appt_date'; 
        if (ff_required[i] == 'non_pro_appt_date_month') _f = 'inon_pro_appt_date';
        if (ff_required[i] == 'non_pro_appt_date_day') _f = 'inon_pro_appt_date';
        
                var ff_type = (f.elements[ff_required[i]].type) ? f.elements[ff_required[i]].type : f.elements[ff_required[i]][0].type;
        switch(ff_type) {
        case 'text':
            if (ff_required[i] == 'probated_appt_date_year') _f = 'iprobated_appt_date';
            if (ff_required[i] == 'non_pro_appt_date_year') _f = 'inon_pro_appt_date';
            if (ff_required[i] == 'd_date_year') _f = 'id_date';
            f.elements[ff_required[i]].value = Trim(f.elements[ff_required[i]].value);
            document.getElementById(_f).className = "";
            
            if (window.sc) {
                if(window.sc[ff_required[i]] != undefined) {
                    var str = f.elements[ff_required[i]].value;
                    var reg = new RegExp(sc[ff_required[i]]);
                    if (!reg.test(str)) {
                        r_empty[r_empty.length] = ff_required[i];
                        document.getElementById(_f).className = e_class;        
                        var _t = document.getElementById(_f).innerHTML;                     
                        if (_t.charAt(_t.length-1) == "*") {    //don't want to display the asterisk
                            _t = _t.substring(0, _t.length-1);
                        }
                        if (_t.indexOf("<") > -1) {     //looks for the begins of a tag
                            _t = _t.substring(0, _t.indexOf("<"));
                        }
                        valid = false;
                        //e_msg += "<br />&bull; "+_t;
                        break;
                    }
                }
            }
            if (f.elements[ff_required[i]].value == "") {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            if (ff_required[i] == "Email2" && (f.elements[ff_required[i]].value != f.elements[ff_required[i-1]].value)) {
                    r_empty[r_empty.length] = ff_required[i];
                //e_msg += "<br />&bull; Email addresses supplied do not match";
                document.getElementById(_f).className = e_class;
                valid = false;
            }

            break;
        case 'select', 'select-one':
                if (ff_required[i] == 'd_date_month' || ff_required[i] == 'd_date_day'){
                        _f = 'id_date';
                }
                if (ff_required[i] == 'probated_appt_date_month' || ff_required[i] == 'probated_appt_date_day') {
                       _f = 'iprobated_appt_date';
                }   
                if (ff_required[i] == 'non_pro_appt_date_month' || ff_required[i] == 'non_pro_appt_date_day') {
                       _f = 'inon_pro_appt_date';
                }

            document.getElementById(_f).className = "";
            if (f.elements[ff_required[i]].options[f.elements[ff_required[i]].selectedIndex].value == "") {
                        r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            
            break;  
        case 'textarea':
            document.getElementById(_f).className = "";
            if (f.elements[ff_required[i]].value == "") {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            break;
        case 'radio':   
            document.getElementById(_f).className = "";
            var checked = false;
            for (var j=0; j<f.elements[ff_required[i]].length; j++) {           
                if (f.elements[ff_required[i]][j].checked) { checked = true; }
            }
            if (!checked) {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            break;
        }           

    }

    if (valid) {
        document.getElementById(msg_f).className = "";
        document.getElementById(msg_f).innerHTML = v_msg;
    } else {
                 for(var i=0; i< r_empty.length; i++){
                                       if (r_empty[i] == 'd_date_month' || r_empty[i] == 'd_date_day'){
                                  _f = 'id_date';
                                  document.getElementById(_f).className = e_class;
                               }
                        if (r_empty[i] == 'probated_appt_date_month' || r_empty[i] == 'probated_appt_date_day') {
                               _f = 'iprobated_appt_date';
                               document.getElementById(_f).className = e_class;
                        }   
                        if (r_empty[i] == 'non_pro_appt_date_month' || r_empty[i] == 'non_pro_appt_date_day') {
                               _f = 'inon_pro_appt_date';
                               document.getElementById(_f).className = e_class;
                                }
                                
                 }
        f.elements[r_empty[0]].focus();
        document.getElementById(msg_f).className = 'error_box';
        document.getElementById(msg_f).innerHTML = e_msg;
        window.location.href='#error_msg';
    }
    
        if (window.uri != undefined){
             f.action = getDominoUri(uri);     
        }
        if (window.returnuri_french != undefined
            && null != f.$$Return.value){
             var returnUri = getWebUri(returnuri_french);
         f.$$Return.value = "[" + returnUri + "]";       
        }
        return valid;
    
}
function validateGSSRetireeForms(f) {
    /*
        html page should contain an array with 
        all of the field names for validation.

        func loops thru the array recognizing its 
        type and performs the proper validation.
    */
    var e_msgs = new Array();
    var r_empty = new Array();

    var valid = true;
    var e_msg = "Field(s) highlighted in red are required and were not properly completed.";
    var msg_f = 'error_msg';
    var o_msg = document.getElementById(msg_f).innerHTML;
    var o_class = document.getElementById(msg_f).className;
    var e_class = 'error';
    var telpres = false;
    var mailpres = false;
    
    document.getElementById(msg_f).innerHTML = "";
    /*
    for (var j=0; j < ff_required.length; j++) {
        var name = ff_required[j];
        var value = f.elements[ff_required[j]].value ;
        if (name == 'Telephone' && value != "") {
            telpres = true;
        }
        if (name == 'EmailAddress' && value != "") {
            mailpres = true;
            
        }
        
    }
    
        
    if (telpres == true && mailpres == false) {
        deleteFromArray('EmailAddress'); 
        deleteFromArray('Email2');
    }
        
    if (mailpres == true && telpres == false) {
        deleteFromArray('Telephone');
                
    }
    */
    
        
        // validate those either/or fields
            if (window.either_or_required != undefined){
            
                var first_empty = true;
                var second_empty = true;
                var first_valid = false;
                var second_valid = false;
                
                // empty check for the first part
                if (f.elements[either_or_required[0]].value != "") {
                first_empty = false;
                }
                // empty check for the second part
                for (var i=1; i < either_or_required.length; i++) {         
                if (f.elements[either_or_required[i]].value != "") {
                second_empty = false;
            }  
            }
            
            if (first_empty && second_empty) {      
                   // both empty, high light both       
               for (var i=0; i < either_or_required.length; i++) {  
                      ff_required.push(either_or_required[i]);
               }
               
            } else if (first_empty) {    
               // validate the second part if the first part is empty
               for (var i=1; i < either_or_required.length; i++) {  
                      ff_required.push(either_or_required[i]);
               }    
                deleteFromArray(either_or_required[0]);
                document.getElementById(('i'+ either_or_required[0])).className = "";
            } else if (second_empty){    
                //validate the first part if the second part is not empty
                ff_required.push(either_or_required[0]);
                for (var i=1; i < either_or_required.length; i++) {  
                    deleteFromArray(either_or_required[i]);
                    var _f = 'i'+ either_or_required[i];
                    document.getElementById(_f).className = "";
               } 
    
            } else {
            
                 //validate the second part if both are not empty
                 if (!validateSecondPart(f, either_or_required)){            
                    // validate the first part if the second part is not valid
                    ff_required.push(either_or_required[0]);
                    for (var i=1; i < either_or_required.length; i++) {  
                    deleteFromArray(either_or_required[i]);
                            var _f = 'i'+ either_or_required[i];
                            document.getElementById(_f).className = "";             
                        } 
                 }
                 else {
                   deleteFromArray(either_or_required[0]);
                   document.getElementById(('i'+ either_or_required[0])).className = "";
                 }
            
            }
            
        }
    
    
    for (var i=0; i < ff_required.length; i++) {

        var _f = 'i'+ff_required[i];
        if (ff_required[i] == 'NewEffectiveYear') _f = 'iNewEffectiveDate';
        if (ff_required[i] == 'NewEffectiveMonth') _f = 'iNewEffectiveDate';
        if (ff_required[i] == 'NewEffectiveDay') _f = 'iNewEffectiveDate';
        
        var ff_type = (f.elements[ff_required[i]].type) ? f.elements[ff_required[i]].type : f.elements[ff_required[i]][0].type;
        switch(ff_type) {
        case 'text':
                    
                f.elements[ff_required[i]].value = Trim(f.elements[ff_required[i]].value); 
            document.getElementById(_f).className = "";
            
            if (window.sc) {
                if(window.sc[ff_required[i]] != undefined) {
                    var str = f.elements[ff_required[i]].value;
                    var reg = new RegExp(sc[ff_required[i]]);
                    if (!reg.test(str)) {
                        r_empty[r_empty.length] = ff_required[i];
                        document.getElementById(_f).className = e_class;
                        var _t = document.getElementById(_f).innerHTML;
                        if (_t.charAt(_t.length-1) == "*") {    //don't want to display the asterisk
                            _t = _t.substring(0, _t.length-1);
                        }
                        if (_t.indexOf("<") > -1) {     //looks for the begins of a tag
                            _t = _t.substring(0, _t.indexOf("<"));
                        }
                        valid = false;
                        //e_msg += "<br />&bull; "+_t;
                        break;
                    }
                }
            }
            
                        
            if (f.elements[ff_required[i]].value == "") {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }

            if (ff_required[i] == "Email2" && (f.elements[ff_required[i]].value != f.elements[ff_required[i-1]].value)) {
                    r_empty[r_empty.length] = ff_required[i];
                //e_msg += "<br />&bull; Email addresses supplied do not match";
                document.getElementById(_f).className = e_class;
                valid = false;
            }

            break;
        case 'select', 'select-one':
            document.getElementById(_f).className = "";
            if (f.elements[ff_required[i]].options[f.elements[ff_required[i]].selectedIndex].value == "") {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
                if (ff_required[i] != 'NewEffectiveMonth' && ff_required[i] != 'NewEffectiveDay') {
                var _t = document.getElementById(_f).innerHTML;
                if (_t.charAt(_t.length-1) == "*") {    //don't want to display the asterisk
                    _t = _t.substring(0, _t.length-1);
                }
                if (_t.indexOf("<") > -1) {     //looks for the begins of a tag
                    _t = _t.substring(0, _t.indexOf("<"));
                }
                //e_msg += "<br />&bull; "+_t;
                }
            }
            
            break;
            
        case 'textarea':
            document.getElementById(_f).className = "";
            if (f.elements[ff_required[i]].value == "") {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
                
            }
            break;

        }
    }

    if (valid) {
        document.getElementById(msg_f).className = o_class;
        document.getElementById(msg_f).innerHTML = o_msg;
    } else {
                 for(var i=0; i< r_empty.length; i++){
                                       if (r_empty[i] == 'NewEffectiveMonth' || r_empty[i] == 'NewEffectiveDay'){
                                  _f='iNewEffectiveDate';
                                  document.getElementById(_f).className = e_class;
                               }
                                
                 }  
        f.elements[r_empty[0]].focus();
        document.getElementById(msg_f).className = 'error_box';
        document.getElementById(msg_f).innerHTML = e_msg;
        window.location.href='#error_msg';
    }
    if (window.uri != undefined){
        f.action = getDominoUri(uri);     
    }
    if (window.returnuri_english != undefined
            && null != f.$$Return.value){
       var returnUri = getWebUri(returnuri_english);
       f.$$Return.value = "[" + returnUri + "]";         
        }        
    return valid;
    
}

function validateGSSRetireeForms_fr(f) {
    /*
        html page should contain an array with 
        all of the field names for validation.

        func loops thru the array recognizing its 
        type and performs the proper validation.
    */
    var e_msgs = new Array();
    var r_empty = new Array();

    var valid = true;
    var e_msg = "Les champs en rouge sont obligatoires et n&#39;ont pas &eacute;t&eacute; remplis correctement.";
    var msg_f = 'error_msg';
    var o_msg = document.getElementById(msg_f).innerHTML;
    var o_class = document.getElementById(msg_f).className;
    var e_class = 'error';
    
    document.getElementById(msg_f).innerHTML = "";
    /*
    for (var j=0; j < ff_required.length; j++) {
        var name = ff_required[j];
        var value = f.elements[ff_required[j]].value ;
        if (name == 'Telephone' && value != "") deleteFromArray('EmailAddress');
    }
    
    if (f.elements[ff_required['Telephone']].value != "") {
        deleteFromArray('EmailAddress'); 
        deleteFromArray('Email2');
    }
    
    if (f.elements[ff_required['Email']].value != "") {
        deleteFromArray('Telephone'); 
            
    }
    */
    
        // validate those either/or fields
            if (window.either_or_required != undefined){
            
                var first_empty = true;
                var second_empty = true;
                var first_valid = false;
                var second_valid = false;
                
                // empty check for the first part
                if (f.elements[either_or_required[0]].value != "") {
                first_empty = false;
                }
                // empty check for the second part
                for (var i=1; i < either_or_required.length; i++) {         
                if (f.elements[either_or_required[i]].value != "") {
                second_empty = false;
            }  
            }
            
            if (first_empty && second_empty) {      
                   // both empty, high light both       
               for (var i=0; i < either_or_required.length; i++) {  
                      ff_required.push(either_or_required[i]);
               }
               
            } else if (first_empty) {    
               // validate the second part if the first part is empty
               for (var i=1; i < either_or_required.length; i++) {  
                      ff_required.push(either_or_required[i]);
               }    
                deleteFromArray(either_or_required[0]);
                document.getElementById(('i'+ either_or_required[0])).className = "";
            } else if (second_empty){    
                //validate the first part if the second part is not empty
                ff_required.push(either_or_required[0]);
                for (var i=1; i < either_or_required.length; i++) {  
                    deleteFromArray(either_or_required[i]);
                    var _f = 'i'+ either_or_required[i];
                    document.getElementById(_f).className = "";
               } 
    
            } else {
            
                 //validate the second part if both are not empty
                 if (!validateSecondPart(f, either_or_required)){            
                    // validate the first part if the second part is not valid
                    ff_required.push(either_or_required[0]);
                    for (var i=1; i < either_or_required.length; i++) {  
                    deleteFromArray(either_or_required[i]);
                            var _f = 'i'+ either_or_required[i];
                            document.getElementById(_f).className = "";             
                        } 
                 }
                 else {
                   deleteFromArray(either_or_required[0]);
                   document.getElementById(('i'+ either_or_required[0])).className = "";
                 }
            
            }
            
        }
        
    for (var i=0; i < ff_required.length; i++) {

        var _f = 'i'+ff_required[i];
        if (ff_required[i] == 'NewEffectiveYear') _f = 'iNewEffectiveDate';
        if (ff_required[i] == 'NewEffectiveMonth') _f = 'iNewEffectiveDate';
        if (ff_required[i] == 'NewEffectiveDay') _f = 'iNewEffectiveDate';
        
        var ff_type = (f.elements[ff_required[i]].type) ? f.elements[ff_required[i]].type : f.elements[ff_required[i]][0].type;
        switch(ff_type) {
        case 'text':
            f.elements[ff_required[i]].value = Trim(f.elements[ff_required[i]].value); 
            document.getElementById(_f).className = "";
            
            if (window.sc) {
                if(window.sc[ff_required[i]] != undefined) {
                    var str = f.elements[ff_required[i]].value;
                    var reg = new RegExp(sc[ff_required[i]]);
                    if (!reg.test(str)) {
                        r_empty[r_empty.length] = ff_required[i];
                        document.getElementById(_f).className = e_class;
                        var _t = document.getElementById(_f).innerHTML;
                        if (_t.charAt(_t.length-1) == "*") {    //don't want to display the asterisk
                            _t = _t.substring(0, _t.length-1);
                        }
                        if (_t.indexOf("<") > -1) {     //looks for the begins of a tag
                            _t = _t.substring(0, _t.indexOf("<"));
                        }
                        valid = false;
                        //e_msg += "<br />&bull; "+_t;
                        break;
                    }
                }
            }
            
                        
            if (f.elements[ff_required[i]].value == "") {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            if (ff_required[i] == "Email2" && (f.elements[ff_required[i]].value != f.elements[ff_required[i-1]].value)) {
                    r_empty[r_empty.length] = ff_required[i];
                //e_msg += "<br />&bull; Email addresses supplied do not match";
                document.getElementById(_f).className = e_class;
                valid = false;
            }

            break;
        case 'select', 'select-one':
            document.getElementById(_f).className = "";
            if (f.elements[ff_required[i]].options[f.elements[ff_required[i]].selectedIndex].value == "") {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
                if (ff_required[i] != 'NewEffectiveMonth' && ff_required[i] != 'NewEffectiveDay') {
                    var _t = document.getElementById(_f).innerHTML;
                    if (_t.charAt(_t.length-1) == "*") {    //don't want to display the asterisk
                        _t = _t.substring(0, _t.length-1);
                    }
                    if (_t.indexOf("<") > -1) {     //looks for the begins of a tag
                        _t = _t.substring(0, _t.indexOf("<"));
                    }
                    //e_msg += "<br />&bull; "+_t;
                }
            }
            break;
        
        case 'textarea':
            document.getElementById(_f).className = "";
            if (f.elements[ff_required[i]].value == "") {
                r_empty[r_empty.length] = ff_required[i];
                document.getElementById(_f).className = e_class;
                valid = false;
            }
            break;
        }
    }

    if (valid) {
        document.getElementById(msg_f).className = o_class;
        document.getElementById(msg_f).innerHTML = o_msg;
    } else {
                 for(var i=0; i< r_empty.length; i++){
                                       if (r_empty[i] == 'NewEffectiveMonth' || r_empty[i] == 'NewEffectiveDay'){
                                  _f='iNewEffectiveDate';
                                  document.getElementById(_f).className = e_class;
                               }
                                
                 }  
        f.elements[r_empty[0]].focus();
        document.getElementById(msg_f).className = 'error_box';
        document.getElementById(msg_f).innerHTML = e_msg;
        window.location.href='#error_msg';
    }
    if (window.uri != undefined){
        f.action = getDominoUri(uri);     
    }
    if (window.returnuri_french != undefined
            && null != f.$$Return.value){
      var returnUri = getWebUri(returnuri_french);
      f.$$Return.value = "[" + returnUri + "]";      
        }

    return valid;
    
}

function updateSubject(t,d) {
    /*
        t (this) reference the form field calling the fnct
        
        d (dynamic field name) created if subject is "other"
    */
    var f = t.form;
    
    if (t.selectedIndex == t.options.length-1) {    // last option is "Other" so we push the Other   
        ff_required.push(d);    // to become mandatory
        deleteFromArray(t);
    } else {
        deleteFromArray(d);
    }
}

function checkPhone(t, f1, e, e2) {
    /* 
        make 'Telephone' mandatory or not
    
    var f = t.form;
    var f_name = f1; //Telephone 
    
    if (f.elements[f1]) {
        
        
        if (f.elements[e].value != "") {
            
            deleteFromArray(f1);    //an email has been entered
        //  ff_required.push(e);
        //  ff_required.push(e2);
        }
    }*/
}

function checkEmail(t, f1, e, e2) {
    /* 
        make 'Telephone' non-madatory
    
    var f = t.form;
    var f_name = e;
    

    if (f.elements[e]) {
        if (f.elements[f].value != "") {
            
            deleteFromArray(e);
            deleteFromArray(e2);
        }else {
            ff_required.push(e);
    }*/
}

/** Checks is the provided value is formally valid
 *  @param string exp 
 *  @param t this field
 *  @return true if the email is valid, false otherwise
 */
function validateItem(t,exp) {
  var value = t.value;
  var reg = new RegExp(exp);
  if (!reg.test(value)) {
     alert(value + " is invalid value ! Please try again");
     t.value = "";
     return false;
  }
  return true;
}

/** Validation either/or rule
 *  @param f form
 *  @param ff array
 *  @return true if it is valid
 */
function validateSecondPart(f, ff)
{
      var return_value = true;
      for (var i=1; i< ff.length; i++){
      
         var _f = 'i'+ff[i];
         
     var ff_type = (f.elements[ff[i]].type) ? f.elements[ff[i]].type : f.elements[ff[i]][0].type;
     
     switch(ff_type) {
       case 'text':    
                f.elements[ff[i]].value = Trim(f.elements[ff[i]].value);
            document.getElementById(_f).className = "";
            
            if (window.sc) {
                if(window.sc[ff[i]] != undefined) {
                    var str = f.elements[ff[i]].value;
                    var reg = new RegExp(sc[ff[i]]);
                    if (!reg.test(str)) {
                        return_value = false;

                    }
                }
            }
            if (f.elements[ff[i]].value == "") {
                return_value = false;
            }
            if (ff[i] == "Email2" && (f.elements[ff[i]].value != f.elements[ff[i-1]].value)) {
                                return_value = false; 
            }

                    break;
       case 'select', 'select-one':        
            document.getElementById(_f).className = "";
            if (f.elements[ff[i]].options[f.elements[ff[i]].selectedIndex].value == "") {
                                    return_value = false;
            }
            break;  
      }
    }           
        
    return return_value;
            

}

/** Reset the option in the dropdown box to selectedIndex=0
 *  @param id is the id of the dropdown box
 */
function resetOption(id) 
{
    if (document.getElementById(id) != undefined) 
    {
        document.getElementById(id).selectedIndex=0;
    document.getElementById(id).options[0].selected=true;
     }
}

/** Validate the input from the form called AssetSearch as per CR20812
 *  @param the name of the input field that needs to be validated
 */
function validateInput(field) {
	//alert("the value for field is : " + field);
	userInput = document.forms['AssetSearch'].elements[field].value;
	//alert("The user entered :" + userInput);
	userCleanString = new String();
	//userCleanString = userInput.replace(/[^A-Za-z0-9\'\&\-\ \Á\Â\Ç\É\È\Ê\Ë\Ï\Î\Ô\u0152\Ù\Û\Ü\à\â\ç\é\è\ê\ë\ï\î\ô\u0153\ù\û\ü\u2019]/g, ' ');
	userCleanString = userInput.replace(/[^A-Za-z0-9\'\&\-\ \u00C0\u00C2\u00C7\u00C9\u00C8\u00CA\u00CB\u00CF\u00CE\u00D4\u0152\u00D9\u00DB\u00DC\u00E0\u00E2\u00E7\u00E9\u00E8\u00EA\u00EB\u00EF\u00EE\u00F4\u0153\u00F9\u00FB\u00FC\u2019]/g, ' ');
	//userCleanString = userInput.replace(/[^A-Za-z0-9àâçéèêëïîôùûü\u152\u153\'\&\- ]/g, ' ');
	//userCleanString = userInput.replace(/[^A-Za-z0-9ÀÂÇÉÈÊËÏÎÔÙÛÜàâçéèêëïîôùûü\u152\u153\'\&\- ]/g, ' ');
	//alert("The clean string is :" + userCleanString);
	document.forms['AssetSearch'].elements[field].value = userCleanString;
}